Let’s assume I’m building a level which has multiple rooms, but all of them on the same floor. Is it more advisable to build the floor out of a single, large cube, or have it tiled out of multiple smaller ones? I can see the ease and convenience of using just one cube, but does making it out of tiles (one separate static mesh for floor per room) have any added advantage, especially rendering speed wise?
Do it modular. Create by example a ‘2m*2m square floor tiled’ and instance it
Thanks! Is there a good tutorial somewhere on how to work with modular floor assets while avoiding overlaps?
i would be interested to know this aswell. Im developing alot of VR so framerate is extremely important. what Macoll said sounds perfect. But how do you avoid ending up with a really bland floor that repeats itself?
Don’t do that, you get no benefit at all, each object increases the draw calls and the polygon count, for something so simple it’s much much better to have a single mesh that’s modeled to the exact shape of the floor–uses less polygons and draw calls and things like the lighting won’t have issues.
That seemed intuitive to me as well at first, but I wanted to check to be sure. Will Unreal’s occlusion culling mechanism still work on a single mesh, though? Or would it be rendered regardless (assuming there’s a part of it that’s always visible)? Also, could I have multiple Lightmass Importance Volumes over the single mesh, and if so, should I? Or should I just use one big, all-encompassing LIV?
A whole floor is about as efficient as a single modular piece, so even if it has to be loaded more often it’s not much of a hit. The only limitation is due to the lightmap resolution so if you aren’t getting enough detail in the lightmap then you would need to split it up into pieces so that you can use multiple lightmaps.
The lightmass importance volume allows you to focus the quality of the lightmass on the most important parts of the level, so ideally you would keep it over the smallest area.
Question: for room texture variation, what would be the best approach in regards performance?
The 3 options I’m aware of (without going into texture-less materials) all using main texture tiled, main texture doesn’t require UV’s.
Differences on how to place variations for individual rooms
- calculations applied to different areas via world coordinates. - one block 8 verts, variations via maths and tricky stuff, all in unreal Materials editor.
- Deferred Decal, or decal planes set to uv coordinates like Star citizen - one block 8 verts plus 4verts per decal? do decals have much overhead vs math placement ? this is the big question,
- UV layers for variations (suspect this would require -one block with verts dependent on room number or placement of variations (main texture tiled so consistent high detail with small texture size, individual variation textures can be high detail, depending on shared edges this will likely create more verts than using decals)
It depends on what type of variation you’re talking about. If it’s just different flooring between rooms, I would split those into separate meshes, for instance if it goes from tile to carpet. That would still be very efficient and the split between the two materials would hide the lighting variation.
If you’re looking for variation within a material, there’s many ways to create some extra detail, stuff like masks you can create using textures or vertex colors and decals like you said. I’m not sure the performance impact of decals, I would imagine it’s fairly good, most likely all decals of the same type are batched together so they only use one draw call.
I said this because in his first post TrollingTimelord told us he will have multiple rooms
It’s a bit strange you said to do it with one floor mesh since we don’t really know the size of the level (i guess it’s not a 2 rooms archiViz project and multiple rooms sounds big level to me)…in an other post you said that →
… well… all is said i guess, you were right (Reference for your post https://forums.unrealengine.com/showthread.php?107014-Does-instancing-provide-any-performance-benefit-at-all)
Whether it’s multiple rooms or not, it doesn’t provide any benefit–each modular part increases the draw call count, and the lighting will have slight variations between meshes since it is processed on each object on a different thread. You can combine the modular parts using Blueprints, but that’s a hassle and still won’t be as efficient as just making a unique mesh the size you need since the modular parts would use more polygons than necessary. Also, if you use blocks then your walls will have to line up with those blocks otherwise you will get light bleeding when they go past the walls. The only issue, as I said is that if you don’t have enough detail in your lightmap at a high resolution then you have to split it up.
Please take the time to read the PDF at this adress, it will be usefull for you
The specific issue is with using floor tiles–it is not efficient and the lighting system in UE4 will produce issues. You want to use modular pieces as much as you can, but it’s not always the best solution.