Jump to content
  • Advertisement
Sign in to follow this  
AxeGuywithanAxe

Vulkan Vulkan / D3D12 multithreaded Rendering Architecture

This topic is 608 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

So I wanted to see if anyone had any resources on rendering architectures for Vulkan and D3D12... My current rendering architecture had visibility and drawcall logic performed on the same thread, I used "proxy" objects that held rendering information such as the transform and the mesh. When a mesh component changed it's transform or mesh, it would send a command to the render thread to update it's proxy's data. I'm trying to move a way from a single rendering thread architecture for visibility and drawcall logic, but am still trying to keep backwards compatibility and scalability, from 1 core to X cores.

As of right now i'm thinking about changing my logic towards an implementation as such :

- Run Game Logic , any updates to render resources / transforms will be saved into a global queue ( done on the Game Thread , and worker threads when possible)

- Sync all data in the global queue ( done on the Game Thread)

- Perform Visibility Detection ( done across all threads)

- Send a task for the rest of the rendering pipeline to a worker thread (this is done so that the Game Thread isn't blocked after visibility)

- Generate Command Lists (done in parallel )

- Submit Command Lists for submission to a single "GFXThread" that will actually call the API if on D3D11/OGL or Execute on Vulkan/D3D12

... Is this approach viable ? and do other's have any approaches that work well for these new api's ? I know UE4 uses a rendering thread for Visibility/DrawCall-Logic/and render command submission.. but that doesn't scale well for the newer APIs.... thanks.

 

 

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!