[[block]] struct Constants { level : i32; }; [[group(0), binding(0)]] var constants : Constants; [[group(0), binding(1)]] var myTexture : texture_2d_array; [[block]] struct Result { values : [[stride(4)]] array; }; [[group(0), binding(3)]] var result : Result; [[stage(compute), workgroup_size(1)]] 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); { var i : u32 = 0u; loop { if (!((i < 1u))) { break; } result.values[(flatIndex + i)] = texel.r; continuing { i = (i + 1u); } } } }