I'm trying to compile a compute shader that starts with :
#version 310 es
layout (local_size_x = 1) in;
layout (local_size_y = 1) in;
layout (local_size_z = 1) in;
and I get the following error :
0:3: L0001: local_size_x qualifier was not set in the first declaraton or had a different value
I'm a bit baffled by this as the first declaration needs to be the shader version, does it not ? The same code on Desktop GL 4.4 seems to work though.
UPDATE : I now tried writing
layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
and it compiles.
My CS particle updates are now running flawless which is good news. However I had a hard time with compile errors saying that integers like 10 or 20 were not uints but ints and had to write
uint Index = uint(10);
instead of my original
uint Index = 10;
However I had a hard time with compile errors saying that integers like 10 or 20 were not uints but ints <snip>
ESSL doesn't allow any implicit type conversion - which I agree can be a bit counter intuitive for constants. Not sure if this works (no shader compiler near by at the moment), but can you try declaring the constants as unsigned values. i.e.
uint Index = 10u;
This would work in C, not sure about ESSL 3.1.
Cheers, Pete