зеркало из https://github.com/stride3d/xkslang.git
136 строки
1.5 KiB
JavaScript
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
|
|
}
|