Rendering and viewport performance with n-gons?

Given the fact that I want to render a still, no physics, simulations or exporting, and everything looks the way I want it to: are there any benefits or tradeoffs if I were to convert all subdivided planar faces on my models to n-gons?

I know that it’s generally a bad idea to interrupt edgeloops and using n-gons with subsurf or other modifiers. And of course exporting wouldn’t be too nice. But what if everything works in this example and it’s only about making the render quicker or the viewport faster? Does it work that way?

In my example I could cut down the number of faces from 40000 to 1600 on several objects, when using some n-gons on planar surfaces. Would that speed up my rendering?

On rendering your model gets converted to triangles anyway so the actual number of rendered faces will not benefit by using ngons. It may slow it down having to convert the ngons to triangles

Xar

I actually love N-Gons and subdiv in Blender with the new BMesh because it can offer now a design approach previously impossible in Blender and that not only for planar surfaces.

If you use Blender and NGONs with subdivs the main issue will be that the OBJ exporter currently does not support NGONs. So in this case you can bake a level one subdiv and the NGON face layout will be perfect quads.

For rendering, the less mesh you have, the faster the 3D viewport will refresh or Cycles start rendering. But if you only save few faces I think the workload does not justify it. If you scene is very large it then might. In addition kicking out extra geometry on a large scale will also shrink your file size.

Plus less faces can make UV texturing faster.

I am a product designer so I have the luxury of not needing to care about NGONs and mesh deformations for character animation.

Thank you. I see the benefits when working with BMesh. But I now after thinking some more about it, I doubt that ngons speed up rendering, since, like Richard said, they have to be converted to triangles anyway. Maybe I can test the behaviour with a large scene.

I dont think rendering speed will increase a lot but file size and 3D viewport speed will be impacted.
That I think already is enough to consider it.

NGons before BMesh was not really a good option in Blender but now with BMesh NGons are a great modeling tool to simplify mesh density and also actually create shapes on curved surfaces.

Here are two example where in the past we would have been forced to add extra mesh density and geometry to create the same smooth surface flow. Today you just make it an NGON and internally the subdiv modifier creates a perfect quad layout.

I totally agree about the usability of BMesh.

However, I did a small test on n-gons vs. tris and quads when rendering and the result is interesting.

https://www.dropbox.com/s/gcazas09pj12qij/ngon02.jpghttps://www.dropbox.com/s/c1z4ymcjxumrtet/tris%20and%20quads01.jpg


I created a cube with bevelled edges and two faces of n-gons. This array setup produced 56.000 faces and took around 9.9 seconds in average of 4 repeated renders.

Then I converted the n-gons to automatically created tris. The same setup produced 322000 faces and took 13.30 seconds in average of 4 renders.

I conclude, that in a very extrem setup, where n-gons cut down the face count dramatically, they render faster although they have to be converted to tris. I can only guess that calculations before starting to render will take longer when using n-gons, but the effect seems to be much smaller than the actual render time improvement.

What do you think about that? I’d still be interested in an explanation from somebody who knows about the technical side.

Edit: Is there a limit for uploading attachments in total? It won’t let me attach any more images.

I also have found that creating Ngons in a smart way (which is focusing on geometry flow and simple shapes), can indeed reduce rendering times. However, you can erase some of those gains if you create them with the goal of dissolving as many faces as possible.

It’s possible that the scene ends of generating a faster BVH tree when it’s processing the absolute minimum number of triangles needed to define a given region due to the creation of Ngons, but this is clearly unconfirmed and I can’t tell you exactly how different triangle patterns affect BVH behavior.