| #version 120 |
| |
| float lowp; |
| float mediump; |
| float highp; |
| |
| float precision; |
| |
| in vec4 i; |
| out vec4 o; |
| |
| uniform sampler2D s2D; |
| centroid varying vec2 centTexCoord; |
| |
| uniform mat4x2 m; |
| |
| struct s { |
| float f; |
| }; |
| |
| void main() |
| { |
| mat2x3 m23 = mat2x3(m); |
| |
| int a; |
| bool b; |
| s sv = s(a); |
| float[2] ia = float[2](3, i.y); |
| float f1 = 1; |
| float f = a; |
| f = a; |
| ivec3 iv3; |
| vec3 v3 = iv3; |
| f = f + a; |
| f = a - f; |
| f += a; |
| f = a - f; |
| v3 *= iv3; |
| v3 = iv3 / 2.0f; |
| v3 = 3.0 * iv3; |
| v3 = 2 * v3; |
| v3 = v3 - 2; |
| if (f < a || |
| a <= f || |
| f > a || |
| f >= a || |
| a == f || |
| f != a); |
| f = b ? a : f; |
| f = b ? f : a; |
| f = b ? a : a; |
| s news = sv; |
| |
| i.xy + i.xyz; // ERROR |
| m * i.xyz; // ERROR |
| m + i; // ERROR |
| int aoeu = 1.0; // ERROR |
| f = b; // ERROR |
| f = a + b; // ERROR |
| f = b * a; // ERROR |
| b = a; // ERROR |
| b = b + f; // ERROR |
| f |= b; // ERROR |
| |
| gl_FragColor = texture2D(s2D, centTexCoord); |
| |
| float flat; |
| float smooth; |
| float noperspective; |
| float uvec2; |
| float uvec3; |
| float uvec4; |
| //packed; // ERROR, reserved word |
| |
| { |
| mat4 m; |
| vec4 v; |
| bool b; |
| gl_FragColor += b ? v : m; // ERROR, types don't match around ":" |
| } |
| |
| gl_FragColor.xr; // ERROR, swizzlers not from same field space |
| gl_FragColor.xyxyx.xy; // ERROR, cannot make a vec5, even temporarily |
| centTexCoord.z; // ERROR, swizzler out of range |
| (a,b) = true; // ERROR, not an l-value |
| } |
| |
| float imageBuffer; |
| float uimage2DRect; |
| |
| int main() {} // ERROR |
| void main(int a) {} // ERROR |
| |
| const int a; // ERROR |
| |
| int foo(in float a); |
| int foo(out float a) // ERROR |
| { |
| return 3.2; // ERROR |
| foo(a); // ERROR |
| } |
| |
| bool gen(vec3 v) |
| { |
| if (abs(v[0]) < 1e-4F && abs(v[1]) < 1e-4) |
| return true; |
| } |
| |
| void v1() |
| { |
| } |
| |
| void v2() |
| { |
| return v1(); // ERROR, no expression allowed, even though void |
| } |
| |
| void atest() |
| { |
| vec4 v = gl_TexCoord[1]; |
| v += gl_TexCoord[3]; |
| } |
| |
| varying vec4 gl_TexCoord[6]; // okay, assigning a size |
| varying vec4 gl_TexCoord[5]; // ERROR, changing size |
| |
| mat2x2 m22; |
| mat2x3 m23; |
| mat2x4 m24; |
| |
| mat3x2 m32; |
| mat3x3 m33; |
| mat3x4 m34; |
| |
| mat4x2 m42; |
| mat4x3 m43; |
| mat4x4 m44; |
| |
| void foo123() |
| { |
| mat2 r2 = matrixCompMult(m22, m22); |
| mat3 r3 = matrixCompMult(m33, m33); |
| mat4 r4 = matrixCompMult(m44, m44); |
| |
| mat2x3 r23 = matrixCompMult(m23, m23); |
| mat2x4 r24 = matrixCompMult(m24, m24); |
| mat3x2 r32 = matrixCompMult(m32, m32); |
| mat3x4 r34 = matrixCompMult(m34, m34); |
| mat4x2 r42 = matrixCompMult(m42, m42); |
| mat4x3 r43 = matrixCompMult(m43, m43); |
| |
| mat3x2 rfoo1 = matrixCompMult(m23, m32); // ERROR |
| mat3x4 rfoo2 = matrixCompMult(m34, m44); // ERROR |
| } |