VulkanMod
VulkanMod copied to clipboard
[Vulkan 1.2] Implement Bindless rendering
(Fixes several design flaws from https://github.com/xCollateral/VulkanMod/pull/461, and allows Bindless mode to be disabled if unsupported)
Enhances VulkanMod's internal engine (i.e. the renderer) by utilizing Vulkan 1.2 features to implement bindless rendering
For compat reasons this is handled with two modes, Bindless and Non-Bindless mode
Bindless mode
- Uniform memory usage decreased by up to 100x
- Reduced Push Constant usage
- Reduced CPU overhead
- Immutable Samplers and Inline Uniform blocks are enabled
- Entity rendering performance increased slightly
Non-Bindless (Bindful) mode
- Used if Bindless mode is unsupported
- Bindless optimizations, Immutable Samplers and Inline Uniform blocks disabled
- The additional optimizatons are still used however
- Otherwise perfomance should be identical to upstream
Additional optimizatons
- Many uniforms optimized into PushConstants
- Chunk rendering performnce is increased slightly
Minor visual bugs
- New textures rendered for the first time are skipped for 1 frame; causes very minor texture flicker:
- Graphics menu navigation arrows use the incorrect fill color
- Sky Color transitions between biomes are delayed by one frame
Edit: Removed mention of Anisotropic Filtering and MSAA; recently found that they do not require bindless rendering, so those features will likely show up later in a separate PR