
Originally Posted by
BmB23
I've read a metric ton of stuff on the subject, but there's still a bunch of stuff I'm confused about, specifically with regards to Unreal.
I'm trying to UV my mesh, It's kinda tough with Blender as it likes to put out very crooked unwraps and I need parts of the texture to repeat with vertex for vertex precision. I'm wondering is this a good approach? I'm confused as to where UV "splits" occur. So I'm looking to any of you optimisation pros for sound advise.
1. Are more UV islands more expensive? Would a single UV island that extends beyond the limits of the texture be more efficient for repeating than multiple that are overlaid inside the UV?
No, this doesn't matter at all. As long as it is a single texture lookup (and it is) performance is exactly the same.
2. I'm considering as an alternative to use 2 different textures/materials. Can you do two (diffuse) textures in one material? Would that be cheaper than two materials at all? Do two materials matter if the material split is along the same edge loops as a smoothing split?
Anything is cheaper than 2 materials. Having smoothing groups split at material split is irrelevant.
3. Is using a bevel really cheaper than using smoothing splits? If the reason smoothing groups are more expensive is that doubled vertices are created, wouldn't a bevel give you the exact same final vert count?
No, this is false. Bevel creates more triangles, whereas a smoothing group split is the same triangle count. Chances are, you will make a smoothing group split even when you DO have a bevel in there, unless you want a perfectly smooth surface, in which case why do a smoothing group split in the first place?
4. Given a vert count of about 4000 (unreal count, not blender) would removing backfaces that are rarely seen make any (real) difference, or is it more important to minimize material/smoothing splits?
I am not sure if you understand the meaning of backfaces. Backfaces are, well, the backs of triangles. They are culled by default ( = not rendered). The only time you would want to force to render them is when you want a two-sided material, like glass. It is fairly cheap btw. Having fewer materials is more important. Smoothing groups - don't matter at all (well they do increase the number of render batches (which do not equal draw calls btw), but trying to decrease that for optimization purposes is really overdoing it).
Exactly how is a new draw call created by an asset, smoothing? Textures? Materials? UV islands? multiple uv layouts? Sub-objects? and how expensive is that, is it more important to have less verts, or less draw calls?
This is hard to explain, but basically there are draw calls, and inside a single draw call, there are render batches. For all triangles that form a continous, unsplit surface, they go into a single render batch. Smoothing groups stop this. So for all smoothing groups, there are individual render batches. These are however are still within one draw call.
A new draw call only happens when 2 triangles do not share the same material/shader. Each material/shader has common settings like light vector, camera vector, world position etc. They are all the same, you cannot change them. You CAN change however other things. The way light is handled (whether it is simply Phong, or some other light equation), the texture that gets applied etc. So in essence any new material equals a new draw call. This is why it is important to only have a single material per object, because in that case the entire object can go into a single draw call.
EDIT: I seem to notice some unwrapped vertices don't "weld" while others do, even within the same island. Does this matter? Performance wise they don't matter. You might experience "cracks" in the texture though.
Thank you for your time.
Bookmarks