Quick answer: Vulkan validation reporting binding collision when two shader modules in the same pipeline use the same set/binding? Each module's bindings must be unique across the pipeline - use distinct binding numbers.

Pipeline includes vertex and fragment shaders; both declare binding=0 for different resources. Validation rejects.

Use distinct bindings

Vertex: set=0 binding=0. Fragment: set=0 binding=1. Don't share numbers.

Or use separate descriptor sets

Set 0 for vertex; set 1 for fragment. Cleaner separation; more set switches per draw.

Generate via cross-compiler

HLSL with explicit register declarations. Cross-compiler emits non-colliding bindings.

“Vulkan bindings are per-pipeline. Modules share the namespace.”

Establish a binding convention per project. Set 0 for globals; set 1 for material; set 2 for per-object. Slots within sets allocated by module.

Related reading