Download

Landscape component and triangle count relation

Hello,

We’re trying to make an 8x8km terrain using world composition, but are encountering a number of issues with performance. Reading through the documentation on the landscape, the recommendation is to keep the landscape component count low for better performance. But in doing this we noticed that reducing component count increases the number of triangles drawn.

From our tests we got these numbers:
[TABLE=“border: 1, cellpadding: 1, width: 900”]

Component resolution (Total)
Total components
Tiles
Triangles drawn
Total triangles
Draw primitive Calls
RAM

511 x 511 (8161 x 8161)
256 (64 x 4 tiles)
4
21.6 million
267 million
934
6.1GB

511 x 511 (8161 x 8161)
256 (16 x 16 tiles)
16
20.8 million
267 million
692
5.1GB

255 x 255 (8129 x 8129)
1024 (256 x 4 tiles)
4
7.6 million
266 million
2314
5.7GB

255 x 255 (8129 x 8129)
1024 (64 x 16 tiles)
16
7.7 million
266 million
2386
5.8GB

127 x 127 (10081 x 10081)
6400 (256 x 25 tiles)
25
2.8 million
412 million
11480
9.2 GB

The above figures were gathered for plain terrain with no material applied.
Number of total triangles was calculated using the formula: component resolution x subsection count x components in tile x tiles = total tris e.g. 511x511x4x64x4 = 267.3 million
The number of triangles drawn for each landscape was taken from start RHI with the camera positioned some 10m above terrain in a corner overlooking all of the terrain tiles.
Settings for all terrains were the same and were left at default after being imported.

So as you can see from the above table, the number of triangles drawn with the camera in the map corner was almost reversely proportional to a number of components in each tile.
For me, this was quite unexpected as I would expect the number of triangles drawn to remain the same regardless of component resolution/size especially as the size of the triangle in terrain remained the same. The only thing noticeable when viewing terrain in wireframe mode is that the density of triangles seems to remain higher in distance on a landscape with a smaller number of components. This leads me to believe that maybe a larger screen size of components works against LOD reduction in triangle count, but even so, the difference in the number of rendered triangles seems excessive.

I’ve attached screenshots of 256 component tile and 1024 component tile wire meshes. Distance in these screenshots is slightly larger from the above benchmark, so triangle count is somewhat lower when compared to values from the table.

Also, an interesting anecdote is when I load only one tile in 4033 resolution and compare the number of triangles drawn, it’s still 2x3 times higher than an example landscape of the same resolution and size found in LandscapeAutoMaterial pack.

Any help would be greatly appreciated, as we are out of ideas and getting desperate.

Thanks in advance!

Least components is not better. It is always a trade off. High component count gives you good LOD control granularity, better geometry culling and good landscape layer culling, while increasing draw call count. You are to find a trade off point. Same considerations apply, when deciding world composition setup. Large landscape sizes give you less levels and thus less maintenance and faster iteration. Small landscape sizes give you better LODing opportunities and more efficient rendering.

Optimal setup is always dictated by desired vertex density and viewing perspective. For third person view point and 1 vertex per meter landscape resolution, that would revolve around using landscape resolution of 500ish-1000ish. Your world composition level LODs need to be set up in such way, that you are aiming to never render more than 4 landscapes in total. Rest is down to adjusting landscape LOD distance controls. Good luck!

@Deathrey thank you for a very detailed answer. This confirms my suspicion about how the component size affects performance and helps us immensely in continuing with our project. All our tests up to this point were done without any LOD optimization to get a better feel of what exactly we are getting in a scene.

I see from one of your other answers that draw calls target count should be around 1k-1.5k, what about the number of tris?

Thanks again!

That is more of maximum feasible value for PC, rather than target. Other platforms have different passmark.

There is no universal value for triangle counts either.

Thanks for taking your time to help @Deathrey highly appreciated!