godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.15k stars 97 forks source link

Improvements to the LOD system . . #3653

Open charlesmlamb opened 2 years ago

charlesmlamb commented 2 years ago

Describe the project you are working on

A 2.5D game . .

Describe the problem or limitation you are having in your project

I make games, that are isometric RPG, sort-of like this . . .

image

I run into a problem, where the LOD is based on distance from the camera, then can't make optimal use of it . . Bec., to make sure objects further away from the camera, or ' behind ' the player aren't given a new LOD, the general bias has to be set, so it doesn't happen, it leads to objects closer to camera, not getting optimal LOD . .

My suggestion is, that one can make LOD be based on camera, or some ' location ' in the scene, in an isometric RPG, it'd be the player, or, center of screen . . This would give a better over-all use, of LOD's . . An alternative is to make a ' box ', or like container, where everything inside the box, is high LOD, then not in box, is where LOD's are less detailed . . .

image

LOD system, current one, works best for FPS, or TPS . . But, since many types of projects, don't have a ' focus ', for the game, that is place, ' at ' the camera, sometimes it leads to less optimal stuff . .

Overall I'm very happy with the LOD system, it's automatic, and gives good results . . However, dumb as it is, I do like a more ' manual ' system, where I can place the LOD's, make them, and be sure a given mesh does not go below a certain look, so it's another idea, that we get an efficient, simple make LOD's yourself system, or ' manual ' . . It adds an element, of projects being ' unpredictable ' and, I just want to know what I'm doing, no ' bull - shit ' . . . It might be nice, to get that, at some point in Godot 3.x, mostly because I want to use OpenGL ES 3.0, or OpenGL 4.3, bec. I think it has a slightly more old - school look, raster graphics, I think, are the best, maybe ' retro ', or cool . . .

Since Godot 4 won't get OpenGL ES 3.0, I think for a while, fans of raster graphics, and OpenGL will benefit, at least some, from Godot 3.x series, getting added stuff . . However, what that might be, got no idea . . I hope we'll see support for Godot 3.x, at least until Godot 4 finally gets OpenGL ES 3.0 . .

And, one thing, not sure, a simple LOD system, that's fun, simply manual, bec. it makes more sense, you know, what you're getting, and don't have to inspect the meshes . . Also, nice as the new LOD system is, it creates a TON of LOD levels, sometimes 20, or 25 . . I don't like that, bec. it'll lead to a ton of data, stored somewhere, I assumed, in memory, disk, I don't want that many LOD's, and I also want to know, what the lowest level will look like and, sort-of how many there are . . For me, I think 3 - 7 / 8, is enough, beyond that it's imo. waste of, disk space, so, nice as the new LOD system is, I sometimes go sort-of facepalm, why so many, that is non - sensical . . So, perhaps a setting to limit the LOD's, some setting to control the level, of the decimate modifier, and, perhaps some other way, of making the LOD's, such as ' de-quad ', or so . .

The new LOD is amazing, sort-of hoping these things might be added, I think it makes it better, as always, don't know if this is sort-of realistic, but, well, it's what I think . .

Describe the feature / enhancement and how it helps to overcome the problem or limitation

A better LOD system, or to be clear, to make the current, quite amazing one better, and add features some will want, to avoid the engine make meshes, one does not want, or ' bad ' geometry . . .

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

Well, make the current LOD system better, not sure this is how, add some stuff, that makes it appealing, to more users, some want ' control ', no bull - shit, so on . . .

If this enhancement will not be used often, can it be worked around with a few lines of script?

I can't re-code the LOD system, and while it can be coded, for each mesh, imo. it'd be so repetitive, making a simple one, perhaps even in some 3.x series, the plain manual one, makes sense, at least as I want to use Godot 3.x series, for most of my games, until Godot 4 is stable and, it also has OpenGL ES 3.0, these small, less than ' cool ' systems, will be rather nice or, cool . .

Can SOME system be added to Godot 3.x, perhaps very simple, for me, it'd be a big help, and really like Godot 3.x, it's rather good and, see no reason not to add good features to it, within reason, of course . . .

Is there a reason why this should be core and not an add-on in the asset library?

Well, I don't know, it's just a wish, might not be possible, for the expert devs, also contributors, maybe this idea doesn't work, was hoping someone might have a better idea, that's all . . . .

mrjustaguy commented 2 years ago

You can change the LOD bias with scripts on the fly, so you could fairly easily implement what you want. You can also not have the auto LOD active (disable on import) and you can create your own LOD system with the new Visibility Range fairly easily.

Godot 4.0 Won't have OpenGL at launch, but It'll get it fairly quickly post launch, for it's next release probably, as it is quite a requested feature, and the devs don't want to cut off a fairly big chunk of their users, however they are prioritizing first getting 4.0 Ready with Vulkan, for those that are able to be on the "bleeding edge" so really, if you're stuck on OpenGL ES 3.0, you'll just have to stick with 3.x branch for maybe a few months longer compared to those that aren't, or use 2D which seems to be planned for the initial 4.0 release

Also to rid you of several mis-conceptions you've got right there, 1) OpenGL ES 3.0 (for the most part) Looks fairly similar to Vulkan, and in fact Vulkan could easily be made to look exactly like OpenGL ES 3.0.. The only difference is that Vulkan allows for more Flexibility and allows for doing things that OpenGL ES 3.0 doesn't 2) Vulkan and OpenGL are Raster, it's just that Vulkan also recently got Ray-Tracing Integration, which MAY be used by Developers in their Game Engines/Games. Godot 4.0 Doesn't use Ray-Tracing, however it is planned to be added at some point in the future. 3) The Auto-LOD system does NOT store tons of data, ESPECIALLY the later LODs. Here's what a 1.3m triangle Mesh ended up being: Original: just under 100Mb Imported (with Auto-LODs): just under 140Mb Realistically you ain't going to be actively using such high poly meshes for many things, and be worrying sick about the disk size if you do. Just for comparison a single 4k texture comes to about 10Mb in size. going 8k quadruples that (which is what is usually used per texture, for Albedo, Normal, AO, Metallic/Roughness). For a 1.3m triangle Mesh you're probably going to be using High Res Textures which will end up taking more space than the entire Mesh.