Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1@group(0) @binding(0) var<storage, read> transforms: array<array<vec4<f32>, 3>>;
2@group(0) @binding(1) var<storage, read> blas_refs: array<vec2<u32>>;
3@group(0) @binding(2) var<storage, read_write> instances: array<TlasInstance>;
5struct TlasInstance {
6 transform: array<vec4<f32>, 3>,
7 custom_data_and_mask: u32,
8 sbt_offset_and_flags: u32,
9 blas_ref: vec2<u32>,
12@compute @workgroup_size(64, 1, 1)
13fn setup_tlas_instances(@builtin(global_invocation_id) global_id: vec3<u32>) {
14 let slot = global_id.x;
15 if slot >= arrayLength(&instances) || slot >= arrayLength(&blas_refs) || slot >= arrayLength(&transforms) {
16 return;
17 }
19 instances[slot] = TlasInstance(
20 transforms[slot],
21 (slot & 0xFFFFFFu) | 0xFF000000u,
22 0u,
23 blas_refs[slot],
24 );
Contents