Plans for my 2019 work (Patreon)
Content
Hi dear Patrons, and again thanks from the bottom of my heart for your continued support!
As you many know, Godot 3.1 is about to come out, focusing mostly on usability. We had to postpone most 3D work and features due to the problems we've been having with OpenGL/OpenGL ES drivers since Godot 3.0 came out.
As most products and game engines are meant for Windows, they use DirectX as their principal back-end, so OpenGL is not as maintained or cared for by hardware vendors. Added to this, OpenGL state based nature makes it incredibly difficult to develop drivers for.
Still, as Godot is an open source project and multi platform, we will always favor vendor neutral APIs, as they align better with our beliefs and also make our work easier.
The fact that now OpenGL begins to be abandoned favoring Vulkan makes this situation worse as we have been seeing evidence of bit-rotting in the drivers, reflected as new bugs being opened in our issue tracker for situations that didn't fail before and that are not our responsibility.
After Godot 3.1 is out, I will put my full focus on moving all rendering code to Vulkan and also implement the remaining 3D features, most of which were voted here on Patreon but are also expected by our community in general. This will hopefully help catch up with all the items we had to push back..
In any case, this is the full list I have been working on to outline my work for next year. Any feedback will be greatly welcome!
Godot 4.0 TODO list for 3D:
- Keep current rendering design as a base
- port to vulkan
- move tile/filter/mipmaps flags from texture to shader and use 8 pre-bound samplers for this, so textures become bindless
- Geometry shaders in Godot shader language
- Tesselation support
- Arrays in Godot shader language
- Per instance parameters in shader (CanvasItem or GeometryInstance), besides per material
- add shader caching
3D:
- Add motion vectors for motion blur and temporal anti aliasing, but only do a limited implementation on the reflection buffer to solve specular aliasing and SSR aliasing issues (rest is handled by MSAA fine)
- add CPU based occlusion culling based on temporal reprojection of previous frame depth buffers
- add tiled and clustered lighting modes
- add god-rays for directional lights
- add volumetry for spot and omni lights, as additive post-process
- see about replacing SSAO algorithm for a more modern one
- add a heighfield cone tracing for open world GI
- add projector textures for omni and spot lights
- add decal support (and optimize it via tiled and clustered too if available)
- add volumetric fog that works with tiled and clustered lighting modes
- add multithreaded render list generation
- add custom render target support, to render extra data
- add stencil support, but make it so most stencil uses (such as object masking, planar reflections and portals) are easy to use
- add post-processing shader support, with access to normals, depth, stencil and custom render targets
- rewrite the lightmap baking code to use polygons instead of voxels, and potentially optimize it with GPU and AI denoiser
- Re-add particle attractors and add 3D force fields
- Add particle collisions for GPU, as both height field and depth cubemaps.
- Make eliminating base rest matrix from skeleton and animation importing optional, so new users wont find that really crappy-made models they download from they internet don't work.
- Add pluggable spatial indexers
2D:
- Make 2D lighting work in one pass, to increase performance
- add multithreaded render list generation to Vulkan back-end
- Add batching to GLES2 back-end
- 2D geometry antialiasing
Hope you all have a beautyful 2019!