
[[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)]]
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;
  }
}
