Description
Describe the project you are working on
Godot
Describe the problem or limitation you are having in your project
In Godot 3, choosing the rendering driver is relatively easy because only GLES2 and GLES3 are present.
In Godot 4, this problem is far harder due to the addition of the new RenderingDevice rendering layer. The following combinations are (and will be) possible:
RenderingDevice renderers:
- ForwardClustered
- DeferredClustered
- ForwardMobile
RenderingDevice drivers:
- Vulkan
- D3D12
- Metal
- WebGPU
GLES3 drivers:
- Native (OpenGL/GLES)
- Angle D3D12/Metal
This is far too many combinations, we can't put 3 combos for selecting everything.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
The general idea is that we simplify this by having a main rendering method, then drivers configurable in the project settings.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
As suggested by @clayjohn we should instead focus on rendering method, driver second. This way, the combobox showing the graphic driver instead the following methods:
- RD_Forward (Renderer for desktop, focused on flexibility, using RenderingDevice)
- RD_Deferred (Renderer for desktop, focused on performance, using RenderingDevice)
- RD_Mobile (Renderer for mobile, focused on performance on mobile devices, using RenderingDevice)
- GL_Compat (Renderer for compatibility with old desktop and mobile, using GLES3)
Then, in the project settings, we need to have a setting with the rendering driver.
rendering/rendering_device/driver
- this one not really editable
Then the following platform overrides:
rendering/rendering_device/driver.windows
[ Vulkan | Direct3D]
rendering/rendering_device/driver.linuxbsd
[ Vulkan ]
rendering/rendering_device/driver.javascript
[ WebGPU ]
rendering/rendering_device/driver.android
[ Vulkan ]
rendering/rendering_device/driver.ios
[ Metal | Vulkan ]
rendering/rendering_device/driver.osx
[ Metal | Vulkan ]
also
rendering/gl_compatibility/driver
- not really editable
Then the following platform overrides:
rendering/gl_compatibility/driver.windows
[ OpenGL | AngleDirect3D ]
rendering/gl_compatibility/driver.linuxbsd
[ OpenGL | AngleVulkan ]
rendering/gl_compatibility/driver.javascript
[ WebGL ]
rendering/gl_compatibility/driver.android
[ GLES3 | AngleVulkan ]
rendering/gl_compatibility/driver.ios
[ AngleMetal | OpenGL (Deprecated) ]
rendering/gl_compatibility/driver.osx
[ AngleMetal | OpenGL (Deprecated) ]
Remember also that overrides can be set by export setting, so different export settings can also change the driver.
If this enhancement will not be used often, can it be worked around with a few lines of script?
N/A
Is there a reason why this should be core and not an add-on in the asset library?
N/A
Metadata
Assignees
Type
Projects
Status
Done
Status
Implemented