Quads vs. Triangles in the Asset Pipeline: Performance Considerations

Hi,

Basically, the question is whether there is any performance benefit when an asset is made entirely of quads with uniform size propagation across its topology, compared to assets made of triangles.

From some tests we conducted, we observed that assets made entirely of quads tend to have better cluster creation and the LOD generation process (via Nanite) produces better results for objects built from quads when viewed from a distance, compared to objects built from triangles.

Also the polycount is lower when dealing with quads compared to tris (nanitestats).

The downside of the quad workflow is that meshes made of quads tend to look softer and slightly blurry. We can try to make some areas of the mesh denser to maintain more precise topology, but overall this workflow produces worse visual fidelity. The assets are more soft.

Below is an image of the test asset, showing the distribution of quads and areas with denser topology where needed.

Hello,

Can you re-attach the image you are referring to in your original post? It looks like it wasn’t included for some reason. Thanks!

Below I’m attaching additional images. These two assets are huge and contain millions of polygons. The left one is made entirely of quads, while the right one uses a mix of tris and quads. The Nanite tris and cluster debug shows that decimation (dynamic LODs) works better for quads.

I think what we would like to know is: Are there any big considerations/guidelines we should be aware of when it comes to modelling for Nanite? The main things I have gathered so far are:

  • Clean topology
  • Clean edge flow
  • Uniform polygon density/size
  • Avoid faceted normals if possible
  • Continuous meshes

My understanding is that modelling with Quads from the start allows us to stick to these above guidelines easily. Is there anything I’m missing here in terms of guidelines/conisderations for our artists?

Apologies for the delay. That’s a good question regarding modeling workflows, and I’ve reached out to my colleagues with more experience with workflows for their thoughts - but wanted to mention Arran Langmead’s Nanite For Artists talk from GDC 2024 and the TwinMotion Nanite doc recommendations which suggest for Nanite to be effective, the topology of the geometry should adhere to the following conventions:

  • Meshes should not have non-manifold edges, holes, or internal faces.
  • Meshes should not be extremely small or large.
  • Meshes need to be consistent and evenly distributed.

Hi Alex,

Thank you for your response. I’ve reviewed both the video and the documentation, but I wasn’t able to find any statement suggesting that quad meshes perform better. In fact, I didn’t see a single example using quads. Based on that, my initial conclusion would be: don’t use quads if none of the examples demonstrate them.

On the other hand, I’m a bit uncertain about this guideline: “Meshes need to be consistent and evenly distributed.” From my understanding, this could mean:

  • Uniform size of mesh components - which can be achieved with both tris and quads
  • Clean edge flow - which is usually easier to achieve with quads than tris

This is where I’m a little lost. Could you clarify what exactly “consistent and evenly distributed” means in this context? If possible, could you also provide some examples?

Additionally, I’ve noticed that most of the assets used by Epic in the demos are photogrammetry assets, which typically don’t have a clean edge flow distribution.

Below you can find the example image that shows clean topology (quads) and not clean (tris).

Thanks again for your time and guidance!

Apologies for the delay.

Clean edge flow - which is usually easier to achieve with quads than tris

I reached out to the team to clarify this and it seems our TwinMotion Nanite recommendations aren’t up to date and really the topology makes no difference because everything is triangles in the end. There aren’t strict guidelines for modelling that differ from what a modeler would already be used to:

  • Connected surfaces are preferred, and will do better, but disconnected only becomes a problem in extreme cases, for example hard edges are fine but 100% facetted are not. Usually that’s a bug anyways. You can also have cases where a mesh is made up of many unconnected surfaces for example wall meshes made up of individual unconnected bricks that won’t cluster in the distance as well as if they were connected.
  • Uniform density is not necessary.
  • If you add splits on flat surfaces Nanite will get rid of them at runtime anyways but it will waste disk space.
  • Nanite is more resilient to non-manifold than most tools are.
  • Holes are fine

Hope that helps!