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