How does distance Horizon work?

Hello, I'd like to know if anyone has an idea of how distance horizon works in detail. I already know that it implements a lod function for land and buildings, but I'd like to know how you go about it in detail. do you use some kind of special shader to display loitan chunks or something?
10 Replies
cola98765
cola987658mo ago
Are you familiar with Source games and their 3D skybox? in essence DH renders it's LOD area before (and therefore "below") real chunks, this seperate layer is required to retain floating point accuracy at higher distances (example of someone not doign that is Bedrock Edition at 96 chunks render distance) it's not a shader modifying existing render data, but rather DH sends to your GPU those simplified areas to be rendered at large enough distances the resolution drops by 2 every step that's roughly 2 times as far as prevous one. This is to keep the number of displayed triengles low known as Level of Detail. but where most games that use this have prebaked low quality models, we have to dynamically update them with any terrain changes we use some internal shaders to not have to update the world nearly as often and to not require implementation of any textures main 3 internal shaders deal with - sky and block light, with changing lightmap thoughout the day (at night surface still has skylight of 15) - noise "texture" to lessen the feeling of flat colored blocks - SSAO, or screen space ambient occulusion, which is cheap way to get some AO, the darker concave corners
Yamerooooo
YameroooooOP8mo ago
Yes, I've developed prototypes on Unity, nothing serious just private stuff and I wanted to start a real project.Yes, I've developed prototypes on Unity, nothing serious just private stuff and I wanted to start a real project. it's the first time I've seen such a lod system, it's really very ingenious and probably far too advanced for me. I've understood the basic concept but I don't think I can reproduce it on unity
cola98765
cola987658mo ago
Right only unity experiance. so I meant "Source" game engine... think HL2, Gmod, TF2, Black Mesa over there part of the map is designed to be visually enlarged and act as skybox to go around strict size limits of the map HOWEVER those limits are not in unity Think KSP, or Outer wilds, both games use Unity and play with very large distances I know that KSP does it, and I think Outer Wilds too centre their world around the player to avoid inaccuracy at large distances. with this approach it's the very distant object that get bitcrushed movement, not you as a player Next both of those game have couple static models for the planets at varying level of detail and unload ground or insides of buildings in case of outer wilds if you are far away just instead of sending models to GPU manualy, you would need to load it into scene only when nessesary
Yamerooooo
YameroooooOP8mo ago
thank you for your information, I'm going to do some more research into this. one last thing, what is the name of the lod technology you use? It would help me a lot with my research.
cola98765
cola987658mo ago
it's hard to put direct names on things... if you looking for a solution for a voxel game take a look at "octree" that Space Engineers use for example
Yamerooooo
YameroooooOP8mo ago
I'm sorry to bother you again, but how do you manage to avoid problems with the generation of the terrain? I have the impression that it's almost instantaneous on DH.
majo24
majo248mo ago
Why would there be problems with generation? Also its nowhere instantaneous. Rather its actually slow, as DH depends on minecrafts slow world generation. The loading part is probably what you mean.
Yamerooooo
YameroooooOP8mo ago
I noticed that the simplified chunks seem to load much faster than the normal chunks, if you deactivate DH and increase the rendering distance you can notice that the distant chunks take several minutes to display
BackSun
BackSun8mo ago
We generate and store each detail level in a database, so once something has been generated we just need to pull it from the DB, do some minor processing to convert it to GPU data, and upload it to the GPU.
Yamerooooo
YameroooooOP8mo ago
ty
Want results from more Discord servers?
Add your server