JaceTheGrayOne
JaceTheGrayOne
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
I usually have it on Agressive and setting it to max does help like I said above but you're absolutely right it does cause stuttering, nothing crazy but definitely noticable.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
Eh, sort of. I was actually talking about both processes, that and I am probably in the habit of using "render" incorrectly from a software perspective. I work as an engineer in satellite communications and in that realm the term "render" is used to reference output signal generation because the word generate is often used to refer to the initial power signal used to "generate/render" intermediate frequency and primary output signals. It would be confusing to use "generate" for both circumstances as base signal generation is just a power amplification process but output signal "rendering" is the tuning/mixing/encoding/interleaving of multiple base signals. That being said, I don't know how contiguous the actual world generation is, only how it is presented to the player on final rendering so when speaking about MC chunk rendering I was referring to how that rendering process is contiguous as in each chunk is rendered at the boundary of an already rendered chunk. DH on the other hand doesn't appear to render LODs this way. If I turn off the internal renderer and let DH generate/render its LODs it doesn't appear to render LODs with each new LOD being rendered directly connected to or adjacent to an already rendered LOD. I often see DH LODs rendering in isolated empty spaces "seemingly" randomly until the render range is filled with LODs. I was guessing that was due to however DH prioritizes LOD rendering. The reason I attributed this to the actual LOD generation and not rendering is that ultimately what this results in is some MC chunks being fully rendered without DHs LODs for that chunk being generated yet. I was able to confirm this is happening by loading into a new world, allowing the MC renderer to render out to the internal render range and then setting it to show only the DH LODs which revealed a lot of holes and empty spots within the internal MC render range. This suggests that DH is not generating the LODs contiguously. The consequence of this is that MC chunks can be rendered faster than their LODs are generated by DH and as the player moves away from that chunk since there is no LOD for it yet it disappears as soon as it leaves the MC internal render range. That is the only thing that seems to make sense because I can consistently reproduce this effect and seemingly keep DH from actually generating any LODs by simply moving in the same direction long enough. As soon as I turn around the entire gap between the spot I original left and the spot I am now will be completely unrendered. No LODs at all even though I just passed through all of those chunks and MC rendered them completely. <- this specifically is what was causing the issue I was experiencing when I said LODs were disappearing at a hard edge of the exact internal render range of MC. I was able to completely eliminate this by simply standing still for 1-2 minutes after MC fully rendered out to the render distance before moving again. I verified this was due to DH LODs not being generated as quickly as MC chunks are being rendered by setting it to show only LODs after I could see the MC chunk rendering was complete for the given internal render range. The only reason I mentioned Frustrum Culling is because I've seen games that use cull state as a reference for certain things like whether or not lighting should be rendered behind a surface or something like that so I thought it might be possible that DHs LOD generator takes that into account to avoid expending resources generating LODs for chunks that were already out of visible range of the player and would be immediately culled by the frustrum culling process anyway. Again I have zero knowledge about how DH works lol I could be completely wrong about all of that, it's just what seemed to make sense given what I could see happening. I hope I explained that clearly enough. I apologize for the small dissertation. I just wanted to make sure I accurately and sufficiently described what I was experiencing.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
Also... apparently the cloud layer has a higher strata than the LOD textures. I never noticed this before cause I almost always use shaders. Edit: In hindsight this is likely because the MC internal renderer handles sky layer culling when underground so there's no reason for DH's LOD renderer to bother.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
Sidenote: while it seems like turning the internal renderer back on while in game doesn't work, it creates a really amusing/neat effect.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
I figured this out by turning on debug mode, and completely disabling the MC internal renderer. TLDR:
Turns out the LOD renderer is much slower, and far less symmetrical than the internal renderer, that's not a negative thing, I 100% understand why this is. It's just very difficult to realize this is what is happening as it is possible to move in range for the internal renderer to render a chunk, pass through that chunk, and move out of render range of that chunk before the LOD renderer can build an LOD for that chunk which results in the chunk vanishing the moment it is outside of the internal render range. Increasing CPU load (if you can afford it) helps a lot but even on my 11900K it maxes out my CPU quickly.
Turns out the LOD renderer is much slower, and far less symmetrical than the internal renderer, that's not a negative thing, I 100% understand why this is. It's just very difficult to realize this is what is happening as it is possible to move in range for the internal renderer to render a chunk, pass through that chunk, and move out of render range of that chunk before the LOD renderer can build an LOD for that chunk which results in the chunk vanishing the moment it is outside of the internal render range. Increasing CPU load (if you can afford it) helps a lot but even on my 11900K it maxes out my CPU quickly.
Unecessarily lengthy explanation:
I get that from an inside perspective this might seem extremely obvious but from an outside perspective it's not very obvious. That being said, given how many of the #help-me posts are about this or very similar issues that I believe are being caused by this, I dunno... "misperception", it might be worth adding this info somewhere.

The issue seems to be that the LOD renderer doesn't render at anywhere near the same speed as the MC internal renderer. It's easy to have the misconception of "This chunk is loaded in game so the LOD for it must be good" and then leave that chunk and have it just disappear with no LOD and be confused about why that is.

With all normal rendering on I basically cannot outrun the MC internal renderer at 32 chunks which means there is no way to tell what is happen but disabling the internal renderer revealed I was outrunning the LOD renderer much sooner than I was outrunning the internal renderer so it was essentially skipping large areas of chunks behind me resulting in them disappearing the second they were out of internal render range. I assume this is due to a combination of deferred loading, priority scheduling, and frustrum culling causing LODs for chunks to be created in a discontiguous manner. Particularly the frustrum culling. It makes me curious how the frustrum culling is handled for chunks that move out of the field of view after LOD generation for that chunk has already started. Given what's happening I'd guess it dumps that process and re-prioritizes.

Turning off the internal renderer makes it extremely obvious what is happening though. Props to whoever decided to keep the debug settings exposed, thank you for that.
I get that from an inside perspective this might seem extremely obvious but from an outside perspective it's not very obvious. That being said, given how many of the #help-me posts are about this or very similar issues that I believe are being caused by this, I dunno... "misperception", it might be worth adding this info somewhere.

The issue seems to be that the LOD renderer doesn't render at anywhere near the same speed as the MC internal renderer. It's easy to have the misconception of "This chunk is loaded in game so the LOD for it must be good" and then leave that chunk and have it just disappear with no LOD and be confused about why that is.

With all normal rendering on I basically cannot outrun the MC internal renderer at 32 chunks which means there is no way to tell what is happen but disabling the internal renderer revealed I was outrunning the LOD renderer much sooner than I was outrunning the internal renderer so it was essentially skipping large areas of chunks behind me resulting in them disappearing the second they were out of internal render range. I assume this is due to a combination of deferred loading, priority scheduling, and frustrum culling causing LODs for chunks to be created in a discontiguous manner. Particularly the frustrum culling. It makes me curious how the frustrum culling is handled for chunks that move out of the field of view after LOD generation for that chunk has already started. Given what's happening I'd guess it dumps that process and re-prioritizes.

Turning off the internal renderer makes it extremely obvious what is happening though. Props to whoever decided to keep the debug settings exposed, thank you for that.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
The only changes I made here are I brought the render distance down to 512, set Noise Steps to 8, Noise Intensity to 16 and Noise Dropoff to 2048.
19 replies
DHDistant Horizons
Created by JaceTheGrayOne on 10/5/2024 in #help-me
Is this normal / can this be avoided?
Thank you for this! This genuinely solved all of these issues almost entirely.
19 replies