1#version 310 es 2layout(local_size_x = 1) in; 3 4layout(std430, binding = 0) readonly buffer SSBO 5{ 6 mat4 mvp; 7 vec4 in_data[]; 8}; 9 10layout(std430, binding = 1) writeonly buffer SSBO2 11{ 12 vec4 out_data[]; 13}; 14 15void main() 16{ 17 uint ident = gl_GlobalInvocationID.x; 18 vec4 idat = in_data[ident]; 19 20 int k = 0; 21 22 // Continue with side effects. 23 while (++k < 10) 24 { 25 idat *= 2.0; 26 k++; 27 } 28 29 // Again used here ... 30 for (uint i = 0u; i < 16u; i++, k++) 31 for (uint j = 0u; j < 30u; j++) 32 idat = mvp * idat; 33 34 do 35 { 36 k++; 37 } while (k > 10); 38 out_data[ident] = idat; 39} 40 41