[[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);
  {
    var i : u32 = 0u;
    loop {
      if (!((i < 1u))) {
        break;
      }
      result.values[(flatIndex + i)] = texel.r;

      continuing {
        i = (i + 1u);
      }
    }
  }
}
