Home games Vulkan Game Engine Development – Multithreading the Engine

Vulkan Game Engine Development – Multithreading the Engine

by admin



Mastering Graphics Programming with Vulkan book the main source of my education so far: https://books.google.co.uk/books/about/Mastering_Graphics_Programming_with_Vulk.html?id=IDCoEAAAQBAJ&redir_esc=y
Great starting Vulkan tutorial I completed before reading the book: https://vulkan-tutorial.com/
A vulkan tutorial I’ve been using here and there for extra help, it’s moved advanced and free alternative to the book I’m using: https://vkguide.dev/

2:29 – Naught Dog GDC talk on threading: https://www.youtube.com/watch?v=HIVBhKj7gQU

2:38 – EnkiTS library: https://github.com/dougbinks/enkiTS

3:55 – Thread affinity tutorial: https://www.youtube.com/watch?v=95fFNzV4sd0

4:11 – Intels introductionary talk on task based threading: https://www.youtube.com/watch?v=1sAR3WHzJEM
4:17 – Bungie’s talk GDC talk on threading: https://www.youtube.com/watch?v=v2Q_zHG3vqg

4:43 – Vulkan command buffers: https://docs.vulkan.org/spec/latest/chapters/cmdbuffers.html

5:56 – https://stackoverflow.com/questions/55272626/what-is-actually-a-queue-family-in-vulkan
5:56 – Vulkan queues: https://docs.vulkan.org/spec/latest/chapters/devsandqueues.html#devsandqueues-queues

7:08 – Vulkan command pools: https://docs.vulkan.org/spec/latest/chapters/cmdbuffers.html#commandbuffers-pools

8:35 – https://vkguide.dev/docs/chapter-5/memory_transfers/#transferring-memory

12:29 – Vulkan Renderpass talk: https://www.youtube.com/watch?v=yeKxsmlvvus

source

Related Videos

15 comments

@The_Hambone_88 December 28, 2024 - 6:59 am

Super amazing stuff, I am not brave enough for Vulkan, I can hardly hang with OGL! Good work!

@Br0cc0li210 December 28, 2024 - 6:59 am

please make climbing stairs easy

@nan0s500 December 28, 2024 - 6:59 am

Frankly, I didn't understand most of the stuff you are talking about here. And I can bet vast majority of other people either.

If you are talking about the code, it would be nice to show some of the code at least. Otherwise everything gets mixed up and it's not clear what are you talking about here. Or drawings at least.

Don't show the engine footage if there is nothing interesting happening there.

@EMB3D December 28, 2024 - 6:59 am

Lovely, its refreshing to see such low level implementations still happening. I think this kind of work that can open up the gates for new way of doing stuff, instead of relying on premade game engines.

@AntonioNoack December 28, 2024 - 6:59 am

@11:16 you need tonemapping 😄. Super simple to implement, and the result will look soo much better xD.
Easiest tonemapper: Reinhard, xyz / (1.0 + xyz)
My favourite easy one: Adjusted Reinhard, xyz / (1.0 + max(x,y,z))
The one I use in my game engine: convert sRGB to linear, Adjusted reinhard, plus mixing towards white with very bright colors, back to sRGB.

@absorbingdude December 28, 2024 - 6:59 am

I see you have something like "dynamically recreate descriptor sets", I advise you to look into bindless it will be much more convenient, so you have only 1 descriptor set per frame with N bindings(like samplers, textures, images, whatever you want.)

@uzlezz_3587 December 28, 2024 - 6:59 am

Command in command buffers are, in fact, NOT executed sequentially. That's why you explicitly synchronize different passes because otherwise, GPU can reorder the work in the way it likes.
But overall, good video, keep it up man!

@rexoverwatch December 28, 2024 - 6:59 am

would you be interested in making me a game, it's very simple, what can i get for a thousand dollars?

@JustYesntMan December 28, 2024 - 6:59 am

command buffers.

@Sirbozo December 28, 2024 - 6:59 am

engine performance after you said vulkan and cpp ++++++++++++++++++++++

@suras8849 December 28, 2024 - 6:59 am

As a Vulkan enthusiast, I thoroughly enjoyed this talk on the Vulkan API! Does the book you recommend ("Mastering Graphics Programming with Vulkan") explain how multithreading works in a beginner-friendly way, or should one first practice multithreading in a simpler context than Vulkan?

@HolyMethWizard December 28, 2024 - 6:59 am

Is it the command pool in flight, or is it the command buffer? I know you can add a fence to some command buffer operations so I just assumed that it was the command buffer which needed to be properly synced. If it is the command pool that needs to be synced, would that be due to the queue family? I don't know much about queue families, but can there only be 1 operation per queue and that's why the pool needs to be synced

@codinghuman9954 December 28, 2024 - 6:59 am

Ive always been amazed by people who understand shaders.

@stevemcwin December 28, 2024 - 6:59 am

Did you jump straight into Vulkan, or did you start out with something like OpenGL?

@rawvoxel December 28, 2024 - 6:59 am

Super cool stuff! I'm working in Bevy engine, but I can't help but feel I'll end up learning Vulkan at some point.

Comments are closed.