Is this normal / can this be avoided?
Minecraft 1.21
Java 21
Fabric 0.16.5
Distant Horizons 2.1.2-a
MC Render Distance: 20
CPU: i9 11900K
GPU: RTX 4080
RAM: 32gb (8|12 set in the launcher for MC)
I'm running into several problems.
• The isolated chunks floating around in the unloaded areas.
- This happens at DH Render 128 / 256 / 512 / 1024
• The hard LOD cut off exactly at the MC render distance (This might be normal I'm just not super familiar with DH)
- I tried playing around with the overdraw, it didn't really seem to have any effect.
• If I move at normal creative flight speed after about 10-15 seconds, even in previously loaded chunks, a band of empty space starts happening at roughly the MC render distance, and LODs completely disappear behind me so if I turn around everything behind me appears completely unloaded.
- This happens from the lowest quality preset all the way up to the highest.
Solution:Jump to solution
For the band at the edge of vanilla chunks you can do 3 thing:
- tune vanilla and DH fog:
It will hide the problem especially on higher vanilla RD, you need a separate mod to tune the vanilla fog
- tune noise texture:
Helps only on solid terrain, so grass, leaves, etc. It will make the transmition less noticable....
13 Replies
For the isolated chunk issue: this is normal as LoDs look different than vanilla chunks, the latest nightly has smoother merging but somehow chunks are censored in it
The hard cutoff: do you have rendering on? If so then I have no clue
The weird empty stuff: /overdraw
/overdraw
Hole at the edge of vanilla Render Distance, especially during movement:
This is caused by either vanilla terrain not loading in fast enough, or shader's incorrect overdraw prevention implementation or configuration (if you use one)
Some world gen speed improvement can be found when adding these two mods, but the affect will be minor:
- Noisium
- Faster Random
There is another mod that may help:
C2ME
. However, it can decrease DH generation speed by up to 35%.
The easiest fix is to move slower and/or ignore it. This hole is most visible while moving over not generated (by vanilla) terrain. Moving over that terrain every subsequent time may not create the hole. And moving slower will give MC more time to load the chunks as you go.
If none of that helped, you can also tune the overdraw prevention, look at the third section to know how.
Low quality full blocks behind and around non-full block, e.g. fences or ladders:
This is intended behavior, to prevent holes in the world while you move, DH will overlap with some part of the vanilla terrain.
How much of the terrain is covered is determined by the overdraw prevention:
- 1.0
will mean DH LODs start where vanilla chunks end.
- 0.0
will mean that DH render everywhere starting from your position.
To fix this, you can either:
- Increase your vanilla RD, which will move the DH LODs further from you.
- Tune the Overdraw Prevention setting, see the next section to know how.
Where to edit the overdraw prevention setting?
Overdraw prevention setting can be edited inside the DH config under:
Advanced > Graphics > Advanced Graphics
But if you use shaders, they will override and take control of the overdraw prevention.
In that case, check the shader's settings, if overdraw prevention is not there, contact the shader devs or change the shader you use.Solution
For the band at the edge of vanilla chunks you can do 3 thing:
- tune vanilla and DH fog:
It will hide the problem especially on higher vanilla RD, you need a separate mod to tune the vanilla fog
- tune noise texture:
Helps only on solid terrain, so grass, leaves, etc. It will make the transmition less noticable.
Here you can see the result of the above 2: https://discord.com/channels/881614130614767666/1238244368260010047/1238814378057404498
- update to nightly that adds a bit of blending between vanilla chunks and DH LODs
Thank you for this! This genuinely solved all of these issues almost entirely.
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.
I figured this out by turning on debug mode, and completely disabling the MC internal renderer.
TLDR:
Unecessarily lengthy explanation:
Sidenote: while it seems like turning the internal renderer back on while in game doesn't work, it creates a really amusing/neat effect.
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.
When you talk about "rendering" here, do you mean "generating"?
- Rendering is the process of drawing something to your screen, which happens 100+ times a second.
- Generating is the process of creating new data (in this case either converting MC chunks into LODs or generating new LODs from scratch).
Also what do you mean by "symmetrical"?
And to answer one of your questions:
Frustum culling only disables rendering, it doesn't affect LOD building/generating.
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.
Ah, gotcha.
Yes DH’s process to convert MC chunks into LODs generally lags behind MC chunk generation/rendering. In older DH versions this could cause holes in the LODs, although in newer DH versions the worst that should happen is the LODs will just be a bit delayed behind the MC chunks (I know the nightly build has this feature, I forget if the latest stable does).
Also, you could try setting your 'CPU Load' in the DH config to 'I paid for the whole CPU'
It will ensure DH runs as fast as possible to render LODs and not fall behind MC
Although if it causes stuttering set it to something lower like 'Aggressive'
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.