CatDogEngine
CatDogEngine copied to clipboard
[FrameGraph] Improve high level rendering usages
trafficstars
1.A resource manager holds every resource handles in bgfx. Any renderers can use string to find the expected one. 2.As RenderGraph talk said, I need to split resource compile stage away from render logic!
The first step was done easily by adding StringHash support and moving resource creation apis to RenderContext. FrameGraph / RenderGraph is on the way!
- Posts except the source talk in GDC.
- Machinery Post : https://ruby0x1.github.io/machinery_blog_archive/post/high-level-rendering-using-render-graphs/index.html
- Ubi DX12 Talk : https://www.gdcvault.com/play/1024656/Advanced-Graphics-Tech-Moving-to
- Reference Projects
- https://github.com/acdemiralp/fg
- https://github.com/Themaister/Granite
- https://github.com/skaarj1989/FrameGraph-Example
Current understanding to implement Render Graph on top of bgfx. The requirement is:
- Manage transient or other kinds of Resources Lifetime.
- Convert RTV and SRV automatically if need to blit.
- Input Effects, Passes, Resource Dependencies and output sorted passes in high performance.
- Submit structed/uniform buffers automatically.
- Support multiple rendering pipelines.
- [Optional] Insert Fence/Barrier to reasonable positions. But it is only for modern backends.