I searched a lot but could not find if the following statements are legal in a #version 330
vertex shader:
#define note_the_following_whitespaces 0x01
(layout location = 7) vec3 out ov;
(layout location = 8) vec3 out rv;
void main() {
rv = vec3(1.0,2.0,3.0);
ov = (1.0+rv)/2.0;
gl_Position = [whatever]...
}
I'm referring particularly to the (1.0+rv)
- the shader compiles fine on every nVidia card, but refuses to compile on ATI cards. Unfortunately I don't have the exact compilation result, I just know that the compilation was unsuccessful.
http://www.opengl.org/registry/doc/GLSLangSpec.3.30.6.pdf
From 5.9
The arithmetic binary operators add (+), subtract (-), multiply (*), and divide (/) operate on integer and floating-point scalars, vectors, and matrices.
(...)
One operand is a scalar, and the other is a vector or matrix. In this case, the scalar operation is applied independently to each component of the vector or matrix, resulting in the same size vector or matrix.
So if it doesn't compile on ATI, it just means its driver is incorrect in that regard.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With