Jump to content

Terrain Imposters for multi-terrain map questions


NoobsGaming
Go to solution Solved by Bryan,

Recommended Posts

Hi There! 

 

So, I'm working with a large map for the first time. It's 2km x 2km broken up into 128 m-sq chucks. I was looking at the options for rending the terrain as imposters at distance. What are the best practices for applying this system to get maximum performance gains? 

 

specific questions: 

  1. I noticed that you have to actively decide to add LOD, and that there is an "Imposter Load Range" parameter that I can use: Does that mean that I can use this in lieu of adding an imposter to the LOD? If both are valid, which is more performant? 
  2. The "Imposter Load Range" parameter is initialized with a number thats higher than my "Regular Load Range" parameter": in my case I had my Regular Load Range set to 2.5 km, and my Imposter Load Range default initialized at 10,000... Would I want my Imposters to load from within the Regular Load Range, and set it to say 500, or 750 meters? 
  3. What benefits do I get from converting the terrain into a mesh? is this for performance, or are there other motives? 
  4. The "Copy Gaia Game Objects" option instruction says it will "Copy the game objects placed on a terrain over to the converted mesh terrain" That doesnt mean it will bake it into the Imposter for me does it? 

 

Out side of the specific questions above, I'd like to reiterate the ask on general best practices: What would be the exhaustive checklist of tools within Gaia 2021 Pro that I should to understand as it pertains to rendering a multipart map in the most efficient way? 

 

Thank you so much for taking the time to read these questions and shed some knowledge to us. It's super appreciated! 

 

Link to comment
Share on other sites

6 minutes ago, NoobsGaming said:

I noticed that you have to actively decide to add LOD, and that there is an "Imposter Load Range" parameter that I can use: Does that mean that I can use this in lieu of adding an imposter to the LOD? If both are valid, which is more performant? 

You would want to use that in parallel yes. 
You would use the Terrain Mesh Exporter to create your Imposters. 
Then those will have lod levels. 
 

 

7 minutes ago, NoobsGaming said:

the "Imposter Load Range" parameter is initialized with a number thats higher than my "Regular Load Range" parameter": in my case I had my Regular Load Range set to 2.5 km, and my Imposter Load Range default initialized at 10,000... Would I want my Imposters to load from within the Regular Load Range, and set it to say 500, or 750 meters?

 You would actually want to decrease your regular loading range smaller and your imposter loading range to something a bit more normal. The imposters act like fake terrains to save performance. 
Think of playing something like skyrim, when you look off into the distance you see the mountains. However, those mountains would be your "imposter terrains" because having that much world loaded all the time would destroy performance. 
Then the Regular loader hits the imposter terrains they turn back into the normal terrains. 

 

10 minutes ago, NoobsGaming said:

What benefits do I get from converting the terrain into a mesh? is this for performance, or are there other motives? 

Mesh Terrains are performant terrains because they are used as a game object. 
However, you do lose some benefits. Things like instance indirect grass etc. 
Basically anything that you can benefit from a Unity terrain you lose but you can gain performance with a mesh terrain due to culling etc. 

 

13 minutes ago, NoobsGaming said:

The "Copy Gaia Game Objects" option instruction says it will "Copy the game objects placed on a terrain over to the converted mesh terrain" That doesnt mean it will bake it into the Imposter for me does it?


No it just moved the objects over so you dont have to. 
 

 

14 minutes ago, NoobsGaming said:

Out side of the specific questions above, I'd like to reiterate the ask on general best practices: What would be the exhaustive checklist of tools within Gaia 2021 Pro that I should to understand as it pertains to rendering a multipart map in the most efficient way?


Personally, I use the Gaia Pro 2021 World streaming. 
This allows you to use multiple scenes with multiple terrains that can all be edited from one scene. 
Then depending on the world size it will prompt you to enable garbage collection and texture streaming. 
The smaller world size the better performance you will have (in my opinion). 
Remember that Unity works its Ram usage on a per scene basis. 
Meaning that one scene (which stores one terrain piece) could be full of stuff and moving to the next terrain will reset this. 
This is great for over all performance but also means you need to make sure that none of your scenes are going crazy in memory and ram usage. 

^ Learn that one the hard way one time. 


 

Link to comment
Share on other sites

Hey @Bryan  Thanks for the high-quality info! This is my first time stepping away from purely learning games, and trying to build something that I want to build. Interesting learning stepping stones along the way! 

 

I did a lot of prototyping on a moderately sized Gaia map for the last few weeks. Map +buildings (3 fully furnished), and learned a lot about how to read the analysis tools! 

 

So, now I'm noob-stepping my way out to create a semi-large explorable area. So, I REALLY appreciate your help! Below are a couple of follow-up questions to help cement my understanding. I'm going to try to set up some imposters. So, fingers crossed!

 

My first attempt lowered my FPS, which is pretty good out the gate... without trying to add imposters that 2km-sq 16 x 16 set of terrains is rendering out at 350fps before adding anything... with my jacked up choices it dropped to 125 fps. 

 

I think thats because I jacked up those 2 Load Distances, and I think my LOD settings as well. 

 

thank you again for your time man,

~Keith 

 

 

1 hour ago, Bryan said:

You would want to use that in parallel yes. 
You would use the Terrain Mesh Exporter to create your Imposters. 
Then those will have lod levels. 

 

So, does this mean all of my LOD, including LOD0, are going to be render outside of my "Regular Load Range" When my Imposter Load Range takes over?  ... I noticed LOD0 tried to initialize at half resolution... is this why? 

 

1 hour ago, Bryan said:

Personally, I use the Gaia Pro 2021 World streaming. 
This allows you to use multiple scenes with multiple terrains that can all be edited from one scene. 
Then depending on the world size it will prompt you to enable garbage collection and texture streaming. 
The smaller world size the better performance you will have (in my opinion). 
Remember that Unity works its Ram usage on a per scene basis. 
Meaning that one scene (which stores one terrain piece) could be full of stuff and moving to the next terrain will reset this. 
This is great for over all performance but also means you need to make sure that none of your scenes are going crazy in memory and ram usage. 

^ Learn that one the hard way one time. 
 

 

So I've a number of people, including you mention world streaming. Is that different from what I'm doing? Currently I'm using the terrain loader, and doing 16 x 16 128sq-m terrains and I've checked "Create Terrain Scenes" So each terrain is a separate scene, but I can make them all load at once for editing purposes... And then trying to use the Imposters on top to further simplify farther off terrain scenes and hopefully lower my processing cost. 

 

When I tried searching specifically for "Gaia Pro 2021 World Streaming" it was hard to make heads from tails on whether I'm applying world streaming already, or need to add something different into my world. So Clarity on this would be super appreciated. I tried looking before, when I saw it as a discussion point in the forums, and just again now. 

     

 

1 hour ago, Bryan said:

Mesh Terrains are performant terrains because they are used as a game object. 
However, you do lose some benefits. Things like instance indirect grass etc. 
Basically anything that you can benefit from a Unity terrain you lose but you can gain performance with a mesh terrain due to culling etc. 

 

Which in your mind frees up more budget, the improved occlusion etc from turning it into a mesh, or the fancy vegetation techniques? Does Instant Indirect Grass use Jobs / Burst to free the processing? I had to look it up after you said it. It looked like it utilizes that kind of stuff. I have the Vegetation Engine, I just checked it supports Instant Indirect methods. 

 

 

1 hour ago, Bryan said:

 You would actually want to decrease your regular loading range smaller and your imposter loading range to something a bit more normal. The imposters act like fake terrains to save performance. 
Think of playing something like skyrim, when you look off into the distance you see the mountains. However, those mountains would be your "imposter terrains" because having that much world loaded all the time would destroy performance. 
Then the Regular loader hits the imposter terrains they turn back into the normal terrains. 
 

 

Gotcha, I had them backwards. It's going to render fully out to "Regular Load Range", and render imposter past it, and then Cull when it gets past the Imposter Load Range. 

Link to comment
Share on other sites

  • Solution

Honestly, it just takes playing with those settings to get the right terrain distance and imposter distance to match what you need. 

For example you can lower the imposter distance down by utilizing trees and fog. 
Adding imposters is going to decrease your frame rate and increase your ram usage a bit, but depending on how well you optimize and take advantage of everything else you can maximize as much as possible. 

Try to determine what your lowest possible terrain loading range is before increasing it like the fog and trees. 
Also things like hills and mountains really help block the long distance as well. 

Hopefully this helps you. 

Link to comment
Share on other sites

On 10/8/2022 at 4:40 PM, Bryan said:

Honestly, it just takes playing with those settings to get the right terrain distance and imposter distance to match what you need. 

For example you can lower the imposter distance down by utilizing trees and fog. 
Adding imposters is going to decrease your frame rate and increase your ram usage a bit, but depending on how well you optimize and take advantage of everything else you can maximize as much as possible. 

Try to determine what your lowest possible terrain loading range is before increasing it like the fog and trees. 
Also things like hills and mountains really help block the long distance as well. 

Hopefully this helps you. 

 

 

Definitely gave me food for thought, and some ideas for how to think about terrains. I think I've got a rough sketch of how I'm going to design the world from that perspective, after thinking about it for the past week. Working on some implementation and some practice with stamper packs to add appropriate details. thanks again! 

 

~Keith 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Tell a friend

    Love Canopy - Procedural Worlds? Tell a friend!
  • Need help?

    We work with some of the biggest brands in global gaming, automotive, technology, and government to create environments, games, simulations, and product launches for desktop, mobile, and VR.

    Our unique expertise and technology enable us to deliver solutions that look and run better at a fraction of the time and cost of a typical project.

    Check out some of our non-NDA work in the Gallery, and then Contact Us to accelerate your next project!

×
×
  • Create New...