Dispatching
The compute pipeline is compiled, a descriptor set created and a buffer filled with initial values. So the remaining step is to invoke the compute shader for each particle every frame to receive discrete changes and render them. But instead of recording draw calls you record a dispatch with a selected amount of invocations. A support function will be able to calculate the required amount of work group invocations to launch a thread for each particle depending on the work groups size. Similar as with draw calls the used descriptor sets have to be provided with their binding indices. auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics); /* Requesting a graphics queue for the command stream here is fine because * most devices expose at least one queue to support graphics and compute tasks * * Using such a queue allows dropping any synchronization between multiple queues * by recording compute dispatching and draw calls in just one command buffer. */ vkcv::Pus