리소스

리소스와 주소 공간

리소스는 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: sampler
var<workgroup> tile: array<f32, 64>;
let tile: workgroup<array<f32, 64>>
var<private> seed: u32 = 7u;
let seed: u32 = 7
override tint: f32 = 0.85;
const tint: override<f32> = 0.85

@group이나 @binding은 적지 않습니다. 슬롯 번호는 파일 안 declare의 등장 순서이고, 위의 WGSL이 그 결과입니다. 텍스처와 샘플러도 같은 방식으로 다음 슬롯을 가져갑니다.

이 페이지 편집 문제 보고