Wrought flesh demo5/7/2023 ![]() There are a lot of potential tie-ins with hierarchical level of detail (HLOD), so we should consider that especially for 4.x (HLOD has not yet been implemented in 3.x).Could possibly be implemented as gdnative in 4.x but most seem keen on this being available in core. Is there a reason why this should be core and not an add-on in the asset library?ĭepending on the implementation, may require being core for runtime performance. If this enhancement will not be used often, can it be worked around with a few lines of script?Īlthough mesh merging can be done entirely from gdscript, or using the existing MeshInstance::merge_meshes() function in 3.x, we want to make it as easy to use as possible (and port to 4.x). Due to the need for performance, time consuming merging techniques may not be practical.Most powerful approach, can be tailored to every situation.Requires merging "groups" to be identified ahead of time.Does not require one way changes during editing.Minimizes chance of merge bugs at runtime.Probably would require manual management of shadow proxies (unless combined with a later approach).Tends to be a one way process, unless the user keeps the old nodes / source scene.Very versatile and allows the user to neatly structure their scene graph, and visualize what will occur at runtime.When you place several of these objects in a scene later, they will not be merged. This makes it only relevant in a subset of cases, where a complex scene / model has been exported. The merging is only occurring at the level of single objects.This can also be done with all the other options, and the other options more versatility.Could ensure that the format of the model in engine is kept simple. blender that will run inefficiently as is in the engine. This could be useful for large models that are built in e.g.I would also be in favour of also offering merging at one of the earlier stages, primarily because of the benefits in terms of level load time, as this can be a pre-process. At runtime when loading / running the gameĪll these have pros and cons, and there is no reason why we cannot implement merging at more than one stage.Ĭurrently I'm of the opinion that at a minimum, we should offer merging at runtime, as that covers all use cases, especially procedural.There are 4 obvious places we can perform mesh merging: Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams Essentially almost any group of opaque meshes transformed as a group can be combined into a single shadow proxy, and greatly reduce drawcalls. Shadow proxiesĪs well as merging meshes in terms of display with materials, merging meshes is also relevant for the creation of shadow proxies, because the stringent requirements for material similarity can be relaxed. Note that although the merging backend functionality is currently purposefully very simple and limited, it can easily be improved, so this should be considered separately from the topic of user interface, which is the subject here. This is especially relevant for Godot 3.x, as OpenGLES is particularly sensitive to drawcalls and state changes, but would also be beneficial for 4.x, especially the GLES3 backend. Performance bottlenecks due to drawcalls, state changes, and node overhead.Īlso relevant: #182 Describe the feature / enhancement and how it helps to overcome the problem or limitationĪlthough mesh merging functionality was introduced in Rooms & Portals, and exposed to binding in godotengine/godot#57661, it would be nice to expose this in a user friendly manner and make it easy to use and fit as many use cases as possible. Describe the problem or limitation you are having in your project ![]()
0 Comments
Leave a Reply. |