| |
| struct Constants { |
| level : i32; |
| }; |
| |
| @group(0) @binding(0) var<uniform> constants : Constants; |
| @group(0) @binding(1) var myTexture : texture_2d_array<f32>; |
| |
| struct Result { |
| values : array<f32>; |
| }; |
| @group(0) @binding(3) var<storage, read_write> result : Result; |
| |
| @stage(compute) @workgroup_size(1) |
| fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) { |
| var flatIndex : u32 = |
| 2u * 2u * GlobalInvocationID.z + |
| 2u * GlobalInvocationID.y + |
| GlobalInvocationID.x; |
| flatIndex = flatIndex * 1u; |
| var texel : vec4<f32> = textureLoad(myTexture, vec2<i32>(GlobalInvocationID.xy), 0, 0); |
| |
| for (var i : u32 = 0u; i < 1u; i = i + 1u) { |
| result.values[flatIndex + i] = texel.r; |
| } |
| } |