Roadmap Native Graphics Backend (Vulkan, DirectX11, DirectX12, Metal) #5105
Labels
Category: Doc
Requests, Issues and Changes targeting javadoc and module documentation
Status: Needs Discussion
Requires help discussing a reported issue or provided PR
Motivation
There are not a lot of good options in regards to rendering frameworks. for LWJGL there is either OpenGL or BGFX.
I've used bgfx for this project (https://github.com/OSS-Cosmic/AmnesiaTheDarkDescent/tree/feat/bgfx). bgfx is decent there is quite a bit of overhead since commands are recorded and played out on a render thread. basically you are limited to two command buffers for vulkan and the action of replaying and forwarding state is quite a bit of overhead. It's also very opinionated, so how things function from a graphical point of view can be very hard to trace, basically its a black box. some things are not straightforward and require peering into the API to understand functionality.
Proposal
one thought to to is move all the asset management and rendering logic to a native binary. I've been using this rendering abstraction wonder if it would be applicable to our needs: https://github.com/ConfettiFX/The-Forge the other option is NVRHI (https://developer.nvidia.com/blog/writing-portable-rendering-code-with-nvrhi/)
how I imagine how this would world would involve a call into this abstraction with a handle we can store for a entity and have a native API to call back in and update some state maaybe. you can have a uniform API to bind in some custom shading state but we can start simple and not have it configurable to start with and figure that out when it happens. :?.
this is used for a lot of upcoming games so retrofitting it on terasology doesn't seem such a horrible idea. It's fairly modular so we don't necessarily need to adopt everything :?
we do end up dropping support for OpenGL but I don't see a lot of current/new engines supporting opengl going forward. Unity, Unreal Engine etc ... OpenGL takes a lot of effort to support if you still want to do that. DirectX11,12, Vulkan, and metal are pretty similar. OpenGL is the odd one out ...
The text was updated successfully, but these errors were encountered: