Developer knowledge network ยท moderated exchange

Onbetrouwbare Code-gemeenschap

Ontwikkelaarsonderzoek, reverse engineering en coderingsgemeenschap

Knowledge indexLive
4Categories
919Threads
2.8KBerichten
Tutorial

Understanding Vulkan Descriptor Indexing (Bindless Textures) vs Classic Descriptor Sets [StackOverflow Architecture Guide]

graphics_pipeline_pro
DirectX / Vulkan Engineer
MEMBER
Vertegenwoordiger: 172
Datum van deelname: Sep 2018
Berichten: 10
Bedankt: 51
3 weken geleden ยท Jul 29, 2026 3:01 PM
#1

Why traditional descriptor set binding is a bottleneck in modern graphics engines:

In legacy Vulkan, drawing a mesh with 20 different materials required updating and rebinding descriptor sets (vkCmdBindDescriptorSets) between draw calls, stalling the CPU-GPU pipeline.

Bindless Descriptor Indexing:

  • Array of all 10,000 textures in the game bound to a single unbounded descriptor array: layout(binding = 0) uniform sampler2D textures[];.
  • Vertex / Material data passes an integer texture index (uint textureId).
  • Shaders sample dynamically: vec4 color = texture(textures[nonuniformEXT(mat.textureId)], uv);.

Reduces 1,000 draw call state changes down to a single batched multi-draw indirect command!

shader_magician
HLSL / GLSL Dev
MEMBER
Vertegenwoordiger: 176
Datum van deelname: Jan 2021
Berichten: 8
Bedankt: 32
3 weken geleden ยท Jul 29, 2026 7:40 PM
#2

Bindless rendering is the single biggest architectural shift in modern rendering engines (Unreal 5, Frostbite, id Tech).

dx12_render_dev
DX12 Master
MEMBER
Vertegenwoordiger: 55
Datum van deelname: Oct 2020
Berichten: 9
Bedankt: 65
3 weken geleden ยท Jul 30, 2026 2:21 AM
#3

Remember to enable the descriptorBindingPartiallyBound and runtimeDescriptorArray features in VkPhysicalDeviceVulkan12Features.