xkslang/Test/300operations.frag

136 строки
1.5 KiB
JavaScript

#version 300 es
uniform block {
mediump float f;
} instanceName;
struct S {
int i;
} s;
float a[5];
void main()
{
bool b;
float f;
int i;
uint u;
bvec3 b3;
vec3 v3;
ivec3 iv3;
uvec3 uv3;
vec4 v4;
ivec4 iv4;
uvec4 uv4;
mat2 m2;
mat4 m4;
// These are all errors:
instanceName + instanceName;
s + s;
i + f;
u + f;
u + i;
iv3 *= iv4;
iv4 / uv4;
i - v3;
iv3 + uv3;
a * a;
b / b;
f % f;
i % f;
f % u;
instanceName++;
++s;
a--;
++b3;
iv3 < uv3;
m2 > m2;
m2 != m4;
i >= u;
a <= a;
b > b;
b && b3;
b3 ^^ b3;
b3 || b;
i && i;
u || u;
m2 ^^ m2;
!u;
!i;
!m2;
!v3;
!a;
~f;
~m4;
~v3;
~a;
~instanceName;
i << iv3;
u << uv3;
i >> f;
f >> i;
m4 >> i;
a >> u;
iv3 >> iv4;
i & u;
u &= uv3;
i | uv3;
u & f;
m2 | m2;
s ^ s;
(f = f) = f;
// These are all okay:
f * v4;
u + u;
uv4 / u;
iv3 -= iv3;
i %= 3;
uv3 % 4u;
--m2;
iv4++;
m4 != m4;
m2 == m2;
i <= i;
a == a;
s != s;
b && b;
b || b;
b ^^ b;
!b, uv3;
~i;
~u;
~uv3;
~iv3;
uv3 <<= i;
i >> i;
u << u;
iv3 >> iv3;
i & i;
u | u;
iv3 ^ iv3;
u & uv3;
uv3 | u;
uv3 &= u;
int arr[0x222 & 0xf];
arr[1]; // size 2
int arr2[(uvec2(0, 0x2) | 0x1u).y];
arr2[2]; // size 3
}