리소스와 주소 공간
리소스는 declare로 적습니다. 다른 쪽이 제공하는 값을 가리키는 TypeScript의 표현이 그것입니다. 주소 공간과 접근 모드는 타입 주석의 래퍼 타입이 나타냅니다. 셰이더가 쓰는 storage 바인딩은 storage<T, "read_write">이고, 리소스는 모두 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.85@group이나 @binding은 적지 않습니다. 슬롯 번호는 파일 안 declare의 등장 순서이고, 위의 WGSL이 그 결과입니다. 텍스처와 샘플러도 같은 방식으로 다음 슬롯을 가져갑니다.