Jump to content

3D Primer: Edge splits and you.


Kyrah Abattoir
 Share

You are about to reply to a thread that has been inactive for 1756 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

This post is intended to explain a bit of technical data related to mesh micro-optimization, and how models are rendered.

What is a vertex?

A vertex is a point in a 3D space.
Vertices typically carry more data that their mere position, such as: An UV coordinate for texture mapping, a normal direction for lighting.
Within the program, vertices are typically stored in a big list/array called a vertex buffer.

What are triangles?

A triangle is essentially a collection of 3 vertices that will be connected together by the rendering engine. Triangles typically do not carry any extra data.
In practice, it is often a little more complicated as there are many "primitives" that a rendering engine uses to speed up reading and drawing triangles, such as triangle strips.

What are edge splits and why are they somewhat important?

In an ideal 3D model, most vertices end up shared by several triangles, this allows the object to be represented with very long triangle strips and as few vertices as possible, speeding up the rendering and minimizing the CPU <-> GPU bandwidth.

An edge split occurs when an objects requires multiple vertices to be "duplicated" (for reasons I will explain later). This forces an explicit "break" in the model, requiring more vertices and polystrips to represent it.

Now on modern hardware it is typically imperceptible (because this isn't the eighties anymore), however you can create objects that can be considered "worst case scenarios" that will significantly impact rendering. It's never a bad thing to check that you haven't done a mistake.

What causes edge splits?

  • Using a different material/texture: This is hardly an issue but it is important to know that each material you use has a cost associated to it from a rendering standpoint (and not just due to edge splitting), each material is effectively a separate mesh for the rendering engine.
  • Sharp edges (smoothing groups in max): A sharp edge is created by duplicating all the vertices along it and using different normal directions on each side. It is STILL more efficient than adding more geometry to create a hard crease in the model, so don't see that as a solution, but a classic blender beginner error is to forget using "shade smooth" on most of their models, and those models absolutely render slower than a smoothed model.
  • UV breaks: The same way sharp edges duplicate vertices to change the lighting normal, UV seams duplicate vertices to change UV coordinates. Again, it's more about avoiding a worst case scenario than avoiding edge splits alltogether.

blender_2019-07-06_18-08-08.png.c03fd9e1030efcaf39f74379834da309.pngblender_2019-07-06_18-10-06.png.553243426ea02814497d7b5b5b4b5261.png

Note that vertices are only duplicated as much as required, if you have an UV seam along a sharp edge, it's not going to split the edge twice.

Edited by Kyrah Abattoir
  • Like 5
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 1756 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...