mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 19:40:06 +00:00
e485c7af58
Note that declaratives are not handled, only procedurals.
52 lines
721 B
GLSL
52 lines
721 B
GLSL
#version 450
|
|
|
|
struct S {
|
|
int a;
|
|
};
|
|
|
|
uniform ubuf {
|
|
S s;
|
|
};
|
|
|
|
uniform sampler2D s2d;
|
|
|
|
layout(location = 0) in vec4 inv;
|
|
layout(location = 0) out vec4 outv;
|
|
|
|
vec4 foo(S s)
|
|
{
|
|
vec4 r = s.a * inv;
|
|
++r;
|
|
if (r.x > 3.0)
|
|
--r;
|
|
else
|
|
r *= 2;
|
|
|
|
return r;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
outv = foo(s);
|
|
outv += texture(s2d, vec2(0.5));
|
|
|
|
switch (s.a) {
|
|
case 10:
|
|
++outv;
|
|
break;
|
|
case 20:
|
|
outv = 2 * outv;
|
|
++outv;
|
|
break;
|
|
default:
|
|
--outv;
|
|
break;
|
|
}
|
|
|
|
for (int i = 0; i < 10; ++i)
|
|
outv *= 3.0;
|
|
|
|
outv.x < 10.0 ?
|
|
outv = sin(outv) :
|
|
outv = cos(outv);
|
|
} |