Developer knowledge network · moderated exchange

UnreliableCode コミュニティ

開発者リサーチ、リバース エンジニアリング、コーディング コミュニティ

Tutorial

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

graphics_pipeline_pro
DirectX / Vulkan Engineer
MEMBER
担当者: 172
参加日: Sep 2018
投稿: 10
ありがとう: 51
3 週間前 · 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
担当者: 176
参加日: Jan 2021
投稿: 8
ありがとう: 32
3 週間前 · 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
担当者: 55
参加日: Oct 2020
投稿: 9
ありがとう: 65
3 週間前 · Jul 30, 2026 2:21 AM
#3

Remember to enable the descriptorBindingPartiallyBound and runtimeDescriptorArray features in VkPhysicalDeviceVulkan12Features.