wgsl_bindgen 0.22.2

Type safe Rust bindings workflow for wgsl shaders in wgpu
Documentation
// Shared data structures used by multiple shaders
struct SharedUniforms {
    view_matrix: mat4x4<f32>,
    time: f32,
}

struct VertexData {
    position: vec3<f32>,
    normal: vec3<f32>,
}

// Group 0: Shared by both shaders (basic rendering resources)
@group(0) @binding(0) var<uniform> shared_uniforms: SharedUniforms;
@group(0) @binding(1) var<storage, read> vertex_data: array<VertexData>;
@group(0) @binding(2) var shared_texture: texture_2d<f32>;
@group(0) @binding(3) var shared_sampler: sampler;

// Group 1: Partially shared bindings (tests partial usage scenario)
// binding 0: uniform in group 0, storage in group 1 (tests address space confusion)
@group(1) @binding(0) var<storage, read> dynamic_data: array<array<f32, 4>>;
// binding 1: uniform buffer in group 1 (different from group 0 binding 1 which is storage)
@group(1) @binding(1) var<uniform> compute_uniforms: vec4<f32>;
// binding 2: read_write storage buffer (only used by compute shader)
@group(1) @binding(2) var<storage, read_write> output_data: array<f32>;