2021-06-10 18:49:14 +00:00
|
|
|
|
2021-12-09 15:45:03 +00:00
|
|
|
struct Constants {
|
2021-06-16 09:19:36 +00:00
|
|
|
level : i32;
|
2021-06-10 18:49:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
[[group(0), binding(0)]] var<uniform> constants : Constants;
|
|
|
|
[[group(0), binding(1)]] var myTexture : texture_2d_array<f32>;
|
|
|
|
|
2021-12-09 15:45:03 +00:00
|
|
|
struct Result {
|
2021-06-16 09:19:36 +00:00
|
|
|
values : [[stride(4)]] array<f32>;
|
2021-06-10 18:49:14 +00:00
|
|
|
};
|
|
|
|
[[group(0), binding(3)]] var<storage, read_write> result : Result;
|
|
|
|
|
2021-06-29 18:39:44 +00:00
|
|
|
[[stage(compute), workgroup_size(1)]]
|
2021-06-10 18:49:14 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|