Jump to content

How can I design the LODs of a Landscape?


photo

Recommended Posts

As we do depict more or less static (camera) scenes, we need to control the level in a different way than lets say an open world game.

Landscape is working with LODs, which I guess are designed according to camera distance to provide performance vs quality balance.

In our case I would be happy to be able to control the LODs as often, the silhouettes of a landscape (which is mostly the farest distance), is rendered using the lowest quality LOD.

And lets say, midranges, if they are flat could have the lowest LOD.

So i want to have a way to adjust LODS according to the distances in a controlled way by using some adequate method.

e.g. a table or gradient -  distance vs LOD would be cool, or even better, some kind of mask/Texture would be great which is projected (like the albedo or height) to encode LODs per pixel.

Way back in 2014 working with the Terrain, we had the exact same issue, but there was a way to control the LODs, so I think we devided the area in several Landscapes with different LOD settings (which was painful) but it achieved a good result.

Let me know, if there is a way to do it now (e.g. in code) and if that would be a future improvement.

BTW. I start to Love the Sandworm , the pure fact that it does what it should do!

Will dig more.

Best.w.

Edited by werner.poetzelberger
Link to comment

Hi Werner,

Quote

So i want to have a way to adjust LODS according to the distances in a controlled way by using some adequate method.

e.g. a table or gradient -  distance vs LOD would be cool, or even better, some kind of mask/Texture would be great which is projected (like the albedo or height) to encode LODs per pixel.

I don't think that we do have something similar available out of the box, sounds a bit complex for regular terrain usage. It would be easier to help if you would tell us what exact visual issues do you have with your current LandscapeTerrain setup. Maybe you can just disable LODs and always draw the LOD0 and culling would be fast enough to save the performance.

LandscapeTerrain have a lot of additional tweaks currently that you can use:

Also in 2.16 we improved streaming on high-end GPUs and introduce the whole new set of "Advanced" settings that may (or may not) help in your case that we are not fully understand yet :)

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Sure, I guess a very unusual scenario.

Basically I would like to have a control over the detail using a mask.

So lets say if there are mountains in 10 km distance, but i want just the rims, the silhouette highly detailled, so I would paint it e.g. with a mask which says to use the same LOD as lets say a part of the terrain which is 10 m away from the camera.

But I saw, that there are Terrain layers. Maybe I can do exactly that with this method. Like making a layer just for the part I want in highres.

Where can I turn on/off certain LODs. I saw the progression option, but thats not what I need.

Best.
Werner

 

 

Link to comment
  • 2 weeks later...

I just want to elaborate here a bit more.

As we are often working with cameras on one spot or even static cameras, the Terrain optimization is not so usefull for us the way it is implemented.

As mentioned above, our scenes often need different level of details, not only the near/far camera distance mechanisms.

You might get the idea better with these images.

As a rough sketch, from the camera, the detail would be in the foreground (magenta) and in the moutainscape (blue). Red and green, which covers way more area, can be low resolution. Red is flat to the camera, green way beyond.

With the actual implementation, I can only use high progression value to achieve a high detail silhouette, which wastes a lot of detail in areas, where its not needed, so the framerate drops significantly.

The thing is, that I need the visual detail in the mountains, so it makes the Landscape somehow pretty useless, as I have to replace the mountains with meshes, which retain the level of detail in the distance. For such huge areas, it is a lot of extra work, which we could save with some sort of clever level of detail solution.

As every landscape/position etc. differs, I was more thinking on a 'mask based solution' where you could assign certain values via absolute world position - a mask which lies on the landscape.

I know its not the standard usecase, and there might be clever ways to implement something like that? Maybe by just adding to the current solutions?

Best. Werner

 

Unigine_LODTerrain1.PNG

Unigine_LODTerrain.PNG

Thats what we wanna achieve btw ;)

image.thumb.png.f8a9c5cb8ead9be9e1a9d86cb7b76617.png

 

 

 

Edited by werner.poetzelberger
Link to comment

Yes, I am considering to use meshes. I have already successfully tested some areas and workflows. 

The Terrain Lerp is a feature which could help for very distances. Thx for that hint!

Best.w.

Edited by werner.poetzelberger
  • Thanks 1
Link to comment

Just bumping on that subject:

having some kind of mask or better said "contraints" over the dynamic tessellation for elevation could be very handy for fly over scenarii, over mountainous locations where ,typically,  sharp ridges definition should be conserved across loding and at distances. Same thing applies for shorelines.

Those constraints could be either raster based mask (generated from a gis/paint/world editing tool and applied directly in Sandworm like other masks) (ie keep inside masked values finest tessellation if possible) or even better vector based: a shapefile of the ridge lines with Z values which then would be rasterized by sandworm into a mask at some user selected resolution.

if that makes sense for some.

Best,

R

  • Like 1
Link to comment
×
×
  • Create New...