Bindless Oriented Graphics Programming Overview In this post I begin by covering GPU-driven rendering at a high level before diving into bindless as an accessible gateway to powerful GPU-driven rendering techniques, and how to achieve this pragmatically with low code complexity and mental overhead while reaping the lion's share of the gains. Nothing I present is novel, but my hope is that my approach to bindless may connect with you if you have not yet made the leap. GPU Driven Rendering Stop me if you've seen or written this sort of thing before. Maybe not exactly like this, but similar: for(Draw& drawData : allDrawsForThisRenderPass) { context.BindVertexAndIndexBuffers(drawData.geometry); context.WriteConstants(drawData.constants); context.BindConstantBuffer(drawData.constantBuffer); context.BindTextures(drawData.textures); context.Draw(); } If you've played with graphics for a bit, you may have discovered that there are scales that cannot be achieved with this loop at high framerates. Although there are endless "it depends" that asterisk this, generally I'd place previous-generation renderers with this loop as being capable of individual draw calls in the thousands or low tens of thousands, and needing to resort to complex and even costly techniques to keep those counts low in scenes with many more entities. Sure, you can build a bunch of command contexts to split this into jobs, tools that (properly) arrived with modern graphics APIs. This can be cumbersome in practice though, as there are challenges in working with graphics APIs that complicate how exactly you go about doing it, and that's on top of adding multithreading to the equation. I'm not about to lecture at length the benefits of GPU-driven rendering, as it has been the subject of many of the most prolific advancements in game graphics of the last decade or more, with presentations and posts by the best in the industry. Here are some of my favorites: "GPU-Driven Rendering Pipelines" 2015 by Ulrich Haar,...
First seen: 2026-01-10 20:55
Last seen: 2026-01-11 01:56