-
-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Several ideas to significantly improve the mod. #208
Comments
a few of these are specific to heightmap mode which has been removed, voxel doesn't suffer from as many |
Idea 7: With these improvements, when you're really high up, the performance would be extremely good due to both normal LOD & temporal LOD being applied to almost everything, but the really far away stuff would no longer be compressed & partially obscured by being close to the horizon, so its low level of detail would be more noticeable. It would probably be best to take advantage of the better performance to increase the detail, by increasing the level of detail of far away stuff when there's less stuff nearby. Especially because with the temporal LOD making far away level of detail have a much lower effect on performance, the far away stuff could be really high detail for how far away it is. |
Why was heightmap mode removed? |
As far as I'm aware, because there's minimal/no reason to use it over voxel mode, and maintaining both modes made the codebase substantially more complex. |
Additionally it was basically pointless and never looked good |
Idea 1 but better: The patterns would always be positioned realistically, & the polygons would have textures that not only contain the patterns, but also contain multiple different colors, so that multiple types of blocks &/or multiple sides of the same type of blocks can be shown with just 1 polygon. & preferably the colors of the pixels should be mixes of multiple so blocks can be represented in even more detail with just 1 polygon & not much worse performance. |
Which 1s? I don't think any of them are. Maybe you misunderstood some of them. |
3 is irrelevant with voxel |
What NotStirred said applies to 3,4,5,6. 2 is certainly a possibility in theory, but would likely not provide much of an advantage in practice. Even when terrain appears static, there are actually plenty of things which change all the time such as animated textures and the sky light map. In most "regular" scenes animated textures wouldn't be too much of an issue (most of the time in the overworld, the only animated texture visible in the distance is water, which hardly changes much - but with a custom resource pack, or with large groups of animated blocks (such as nether lava) you'd basically have to do a full redraw every at least every client tick anyway). The lightmap raises similar concerns - you'd have to redraw the entire scene fairly regularly to keep the lighting in sync with vanilla terrain, which would give fairly large bumps in performance. And even with that said, there is one major thing which causes all terrain, even distant terrain, to change all the time - the camera projection. In a perspective projection, geometry on the sides of the screen gets warped significantly compared to geometry near the center, and this warping changes every time the camera rotates. The only reasonable way I can think of to prerender distant terrain would be rendering a full skybox onto a very high-res cubemap texture, and then drawing a full-screen quad which samples it (which is going to be painfully slow to update, won't be compatible with frustum culling, and eat tons of VRAM). |
Even if they aren't biome LODs, you can still make the colors smooth, & the point in idea 6 is because it would help a lot with having ridiculously far render distance, would probably be very easy to implement, & would theoretically allow you to literally have infinite render distance with great performance. |
just isn't feasible, and defeats the entire point of lods in the first place 6, I just don't see the point in having an "infinite render distance" if it looks infinitely bad |
It looks infinitely "bad", but it's still great because at that distance any level of detail looks basically the same as any other level of detail, including infinitely low. |
1: Darken diagonal polygons & add patterns such as checkers & lines to mimic the darkened & rough way the blocks they represent would look in full detail. The amount darker should be determined by how diagonal the polygon is, & the pattern should be determined by the specific angle of the polygon. For very large diagonal polygons, the look should be mimicked imprecisely by just darkening them without adding a pattern.
2: Temporal LOD. Other than the level of detail changing, LOD stuff only visually changes by moving relative to you when you move & things that are further away move slower as you move around. So if something is really far away, only rendering it again when you move a certain distance instead of every single frame wouldn't make it look noticeably difference. The great thing about temporal LOD is that while normal LOD makes exponentially increasing render distance only worsen performance linearly, if you combine it with temporal LOD, then each time the render distance is doubled worsens performance half as much as the last.
3: Better vertical LOD zones. If you're really high up, everything that's low-down should be as low detail as it would be if the vertical distance was removed & added to its horizontal distance. But for this to work properly, it would have to be possible to have multiple types of LOD at the same horizontal position, for example if you're in a floating city 1 million blocks up, then the ground below would have to be biome LOD, but the floating city would have to be normal LOD.
4: Cull all the biome LODs when you're close to the ground because you can't see them from there at all.
5: Smooth biome LOD colors. Generate the biome LODs in much higher detail & then shrink them. That way they generally look much better, probably without affecting performance very much, & it solves the problem where if you look at them from extremely far away, they end up just looking like a bunch of noise that vaguely resembles a Minecraft world. If generating the biome LODs currently involves taking a smooth biome value & snapping it into place at some point, then also skip snapping it into place, because all that does is make the biome LODs less smooth.
6: (Requires idea 5 being implemented first) 1 more type of LOD zone, a type beyond biome LODs where all of it is just 1 huge square that's the average color of a Minecraft world. When you're high enough up to look at the entire world, this would accurately represent the true look of the world, because at that height every pixel of the screen contains thousands of biomes, so realistically all of that would just blend together into an extremely average biome & make everything look the same.
The text was updated successfully, but these errors were encountered: