I’ve been conducting a few more experiments so that I can better understand the issue (and see if there is any chance we can do something on our end while waiting for an official fix), as well as for documenting the issue so that it might help Asobo solving this faster.
There is definitely a bug in the way LOD and/or Terrain are actually handled. I’m not convinced it is a shader problem either, at least, not just a shader problem if any. The issue seems deeply rooted in more than just computing an Euclidian distance too but this might be a contributing factor, see conclusions after the screenshots.
This test is the follow up on the problem I’m describing in a previous post above when the closer you get, the more trees are rendering until a point where they are disappearing, only to reaper when you are closing in further.
I’ve been trying to find whether any of Render scaling and Terrain LOD would have any influence to the rendering of the trees. For this I’ve made a series of screenshots varying only these two, after setting the Trees LOD to ULTRA.
First and foremost, Render scaling has no noticeable influence on this specific problem. I could post all screenshots for comparing Render Scaling 50/100/200 but this will add clutter.
However, Terrain LOD has a noticeable and unexpected influence. Well it is unexpected if you’re considering how this is supposed to work, but it is expected if you’re aware of the bug. All in all, Terrain LOD is not just the setting which is affecting ground LOD ring distances and texture resolution, it is also affecting Trees and Buildings LOD ring distance directly.
So here are the screenshots (compare the trees near the center of the image):
You can see something which is unexpected: the higher the Terrain LOD, the shorter the Tree LOD distance! This is corroborating my previous findings making trees disappearing as you’re getting closer.
But look a this one now, this the same position but at a lower altitude:
Terrain 100% (lower altitude)
This is surprising! Let me explain: with Terrain 200 at a higher altitude, or Terrain 100 at a lower altitude, in both cases trees are disappearing.
This tells me a few things:
Because rendering changes with altitude or horizontal distance the same way, rendering based on LOD distance is supposedly using slanted range (i.e. Euclidian with horizontal and vertical distances) and not just horizontal distance. This is meant to also used simpler LOD when viewed from higher altitudes.
It looks like this is wrongly implemented, as if there is a term ending up as (1 - distance) because the closer you get, the lower the LOD, until a reversal distance where it is working as expected.
With these results in hand I’ve decided to look closer in case I could find some reasonable data explaining this. I’ve therefore used the Dev Mode tools to look closer to the terrain tiles and here is something also interesting when just changing altitude:
NB: I’ve tried keeping the mouse pointer as close as the same spot in both shots.
You can see when lowering the altitude and when the trees are disappearing the simulator is indeed loading LOD16. In other words, the LOD are loading exactly as expected based on slanted Euclidian distance, but the trees are not loading as expected.
Looking at the fine print in the middle is revealing something else: when the trees are disappearing LOD14 and LOD15 layers are both tagged with ‘SD’, whereas when trees are rendering only LOD14 layer is tagged with ‘SD’. I don’t know what these mean but if this is any hint for Asobo, it is worth mentioning it.
Voila for now, I hope this will help them resolving these bugs faster.