blob: c5dc05d743c22270d5b3443d405e84e923e14307 [file] [log] [blame]
layout(local_size_x = 128) in;
layout(std430) buffer;
struct SomeStruct {
vec2 vf;
uint i;
};
layout(binding = 0) writeonly buffer Output {
vec4 elements[];
}
output_data;
layout(binding = 1) readonly buffer Input0 {
int some_int;
ivec2 fixed_array[3];
vec4 elements[];
}
input_data0;
layout(binding = 2) readonly buffer Input1 {
SomeStruct some_struct;
uvec2 fixed_array[4];
vec4 elements[];
}
input_data1;
uniform Info {
uint count;
}
info;
void main() {
uint ident = gl_GlobalInvocationID.x;
// TODO(dnfield): https://github.com/flutter/flutter/issues/112683
// We should be able to use length here instead of an extra arrgument.
if (ident >= info.count) {
return;
}
output_data.elements[ident] =
input_data0.elements[ident] * input_data1.elements[ident];
output_data.elements[ident].x +=
input_data0.fixed_array[1].x + input_data1.some_struct.i;
output_data.elements[ident].y +=
input_data1.fixed_array[0].y + input_data1.some_struct.vf.x;
output_data.elements[ident].z +=
input_data0.some_int + input_data1.some_struct.vf.y;
}