| [[block]] |
| struct Constants { |
| level : i32; |
| }; |
| |
| [[group(0), binding(0)]] var<uniform> constants : Constants; |
| |
| [[group(0), binding(1)]] var myTexture : texture_2d_array<f32>; |
| |
| [[block]] |
| struct Result { |
| values : [[stride(4)]] 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; |
| } |
| } |