Skip to content

Support bind-less descriptor arrays. #72

@crud89

Description

@crud89

Descriptor arrays that have no pre-defined fixed size are called bindless. They are written like this:

ConstantBuffer<InstanceData> instanceBuffer[] : register(b0);

When defining the descriptor set layout, they can even be unbounded. The actual array size is provided when allocating the descriptor set. The idea is to pass an index (e.g. material, instance, etc.) to the shader and query the buffer data from one single descriptor set, which minimizes the amount of descriptor updates required for each draw call. If used correctly, this can even be used to reduce draw call amounts or for GPU-based rendering (using draw indirect).

The descriptors in such arrays are typically allowed to be updated after they have been bound to a command buffer. There is no validation regarding descriptor access or range checks, which must be ensured by the application instead.

Additional context

Some useful resources:

Metadata

Metadata

Assignees

Labels

DX12 ❎The issue involves the DX12 backend.FeatureNew feature or request.Priority: MediumA issue with normal priority.Vulkan 🌋The issue involves the Vulkan backend.

Projects

Status

v0.3.1

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions