Skip to content
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

Open
Terraman2 opened this issue Apr 22, 2024 · 12 comments
Open

Several ideas to significantly improve the mod. #208

Terraman2 opened this issue Apr 22, 2024 · 12 comments

Comments

@Terraman2
Copy link

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.

@NotStirred
Copy link

a few of these are specific to heightmap mode which has been removed, voxel doesn't suffer from as many

@Terraman2
Copy link
Author

Terraman2 commented Apr 22, 2024

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.

@Terraman2
Copy link
Author

a few of these are specific to heightmap mode which has been removed, voxel doesn't suffer from as many

Why was heightmap mode removed?

@CursedFlames
Copy link

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.

@NotStirred
Copy link

Additionally it was basically pointless and never looked good

@Terraman2
Copy link
Author

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.

@Terraman2
Copy link
Author

Terraman2 commented Apr 22, 2024

a few of these are specific to heightmap mode which has been removed, voxel doesn't suffer from as many

Which 1s? I don't think any of them are. Maybe you misunderstood some of them.

@NotStirred
Copy link

NotStirred commented Apr 22, 2024

3 is irrelevant with voxel
4/5. there aren't really "biome LODs", everything is terrain+biome (this is much more obvious with a big mountain cwg preset)
6. why?

@DaMatrix
Copy link
Member

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).

@Terraman2
Copy link
Author

3 is irrelevant with voxel 4/5. there aren't really "biome LODs", everything is terrain+biome (this is much more obvious with a big mountain cwg preset) 6. why?

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.

@NotStirred
Copy link

NotStirred commented Apr 24, 2024

Generate the biome LODs in much higher detail & then shrink them

just isn't feasible, and defeats the entire point of lods in the first place
smoothing sure, but not in this way

6, I just don't see the point in having an "infinite render distance" if it looks infinitely bad
this is the exact reason heightmap was removed, have a pork quote: "heightmap mode is not really useful for actual gameplay aside from making youtube clickbait"

@Terraman2
Copy link
Author

Generate the biome LODs in much higher detail & then shrink them

just isn't feasible, and defeats the entire point of lods in the first place smoothing sure, but not in this way

6, I just don't see the point in having an "infinite render distance" if it looks infinitely bad this is the exact reason heightmap was removed, have a pork quote: "heightmap mode is not really useful for actual gameplay aside from making youtube clickbait"

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants