Hello,
I have been looking and learning APVs with URP on Unity 6.2.
In my situation, I have a transitionless open world ; the player can walk from point A to point B, and scenes are loaded and unloaded using additive scenes.
For my understanding, this means I need to have a singular Baking Set, and use APV Streaming.
Documentation states :
You can enable Adaptive Probe Volume streaming to enable Adaptive Probe Volume lighting in very large worlds.
From my understanding, in order to bake this baking set, I need to load the entirety of those additive scenes.
However, it is a city ; varied props, environments and places, meaning many varied textures, meshes and shaders.
Even by removing the props, Unity is unable to load the entirety of the world all at once (not enough memory).
I am considering the possibility of running the baking in batchmode, but I am genuinely wondering if I have misunderstood something
So, to summarize this entire thread in a single question :
How is an open world game supposed to bake the entirety of a single Baking Set?
Thank you, and have a nice day
You haven’t really misunderstood anything. The intended workflow is for every scene to be loaded together during the bake. Unfortunately, that limits how big of a world you can bake in practice without a very beefy machine.
We’d like to improve the handling of bakes for large worlds in general, for example with better culling or dividing the world into segments, but I don’t have anything for you right now.
Also, you might be interested in reading the thread starting at this comment Adaptive Probe Volumes (APVs) experimental release for HDRP in 2021.2 - #1227 by gilley033
Hello Pema and thank you for the quick and clear response.
I will be keeping an eye on the thread you sent, so far no “perfect” solution seems to fit, but I’ll give swapping baking sets “with redundant areas” a try !
Two ideas I’ve had were :
- Bake the APV without the scenes, but with correct bounds. THEN load a chunk of my world, use Probe Adjustment Volumes’ “preview” to re-bake the chunk’s area, and repeat with each chunk.
But I assume this being a preview, the data might not be as well baked as it would’ve been with a proper bake.
This also doesn’t work because since the scenes weren’t loaded for the “main” bake, the density of probes is completely wrong, since there was no meshes or lights loaded.
- “Somehow” modify the baking algorithm’s jobs to do smaller areas, send myself a callback with the bounds of the baked area, load the corresponding scenes myself, and let the job do its job on this area.
“Somehow” is in quotes because callbacks to the main thread, jobs waiting for a loading, cutting the baking, etc… Would take me understanding your code a lot more than I currently do, and potentially breaking parts of it.
A shame so far because I feel this is the only issue I’m having with APVs ! Anyways, thank you again for your answer and I’ll see what I can do.
Have a nice day!
To the people reading
When I’m currently writing this, “swapping baking set” hasn’t proven to be an efficient solution.
- Streaming leads to having a few frames of transition.
- Not Streaming would work, but due to how BakingSets and scenes are tied, it is impossible for a “transitional” scene to be in two baking sets ; the baking always eventually breaks.
I might have to try having my “transition scene” as a gameObject instead of as a scene, and said gameObject would be disabled in one of my scenes at runtime, and active in the other.