Plans for my 2019 work
Added 2019-01-13 15:39:49 +0000 UTCHi 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!
Comments
Are we cool yet?
AY200
2019-01-17 13:33:05 +0000 UTCOn Vulkan this is not needed (if you see, most Vulkan demos are about drawing orders of magnitude more objects than without it) because PSOs make sure there is no driver side validation between draw calls. On the GLES2 side, I am not sure how much demand there is, given you won't really do anything too complex with it for 3D.
Juan Linietsky & Godot Core Contributors
2019-01-15 18:42:44 +0000 UTCDo you plan to add batching for 3D too? This can be done manually but engine-based automatic batching to reduce draw calls would make my life easier. And happy new year to you too!
Sergey
2019-01-15 18:38:33 +0000 UTCHell yeah!
Jeff Nyte
2019-01-15 02:49:05 +0000 UTCWhoa, that's a tall order. (O_O)'
Jason Anderson
2019-01-13 19:10:53 +0000 UTC4.0 from my part will be rendering work mostly (and hopefully physics), as well what the community might want to work in. GDScript will also see some improvements which require compatibility breaking, like first class functions and annotations.
Godot Engine
2019-01-13 17:12:32 +0000 UTCNice! Godot is getting better and better. Is there a roadmap for 4.0 already?
Janders
2019-01-13 17:08:33 +0000 UTCI am not personally working on C# (not my area of expertise), but this is being actively worked on.
Godot Engine
2019-01-13 16:52:39 +0000 UTCLooks very good! Thanks for your hard work. I would also love to have stable (currently alpha) C# support by v4
Georgi
2019-01-13 16:33:33 +0000 UTCVulcan, occlusion culling, decal support, and post-processing shader support? Oh boy am I excited!
Jesse
2019-01-13 16:16:11 +0000 UTCSounds awesome Juan, thanks for all your hard work!
Nathan Warden
2019-01-13 15:44:42 +0000 UTC