In every previous tutorial the CPU decides what to draw and when. This one removes the CPU from the render loop entirely. A compute shader reads the scene, culls what’s invisible, and writes draw commands directly into an MTLIndirectCommandBuffer β€” the GPU issues its own draw calls. This is the architecture behind modern game engines on Apple platforms.

GPU-driven rendering pipeline

What you’ll learn:

  • Encoding draw commands with MTLIndirectCommandBuffer
  • Bindless resource access via argument buffers
  • Suballocating buffers and textures from a single MTLHeap
  • Running a compute dispatch to cull objects and populate the ICB on the GPU

Read the tutorial β†’