Resources and address spaces
A resource is a declare, which is TypeScript for a value something else provides. The address space and the access mode are the wrapper type on the annotation: a storage binding a shader writes is storage<T, "read_write">, and every resource is a const.
WGSLTypeShade
@group(0) @binding(0) var<uniform> camera: Camera;declare const camera: uniform<Camera>@group(0) @binding(1) var<storage, read> src: array<f32>;declare const src: storage<array<f32>>@group(0) @binding(2) var<storage, read_write> dst: array<f32>;declare const dst: storage<array<f32>, "read_write">@group(0) @binding(3) var tex: texture_2d<f32>;declare const tex: texture_2d<f32>@group(0) @binding(4) var smp: sampler;declare const smp: samplervar<workgroup> tile: array<f32, 64>;let tile: workgroup<array<f32, 64>>var<private> seed: u32 = 7u;let seed: u32 = 7override tint: f32 = 0.85;const tint: override<f32> = 0.85There is no @group or @binding to write. The slot index is the source order of the declare in the file, and the WGSL above shows what that came out as. A texture or a sampler takes the next slot the same way.