Jump to content
  • Advertisement
Sign in to follow this  

Vulkan Vulkan / D3D12 multithreaded Rendering Architecture

This topic is 688 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
Sign in to follow this  

  • Advertisement

Important Information

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

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!