зеркало из https://github.com/stride3d/xkslang.git
38 строки
885 B
Plaintext
38 строки
885 B
Plaintext
#version 310 es
|
|
|
|
precision highp float;
|
|
|
|
layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in;
|
|
|
|
shared float s;
|
|
shared int i;
|
|
|
|
buffer outb {
|
|
float f;
|
|
float g;
|
|
float h;
|
|
vec3 uns[]; // this makes it look like the "second" set of 3 floats in a struct, which LLVM
|
|
// takes advantage of when optimizing, giving confusing results, like thinking
|
|
// &outbname.uns[18].x == &outbname[9].uns.x
|
|
} outbname;
|
|
|
|
buffer outbna {
|
|
int k;
|
|
vec4 na;
|
|
} outbnamena;
|
|
|
|
buffer outs {
|
|
vec4 va[];
|
|
} outnames;
|
|
|
|
void main()
|
|
{
|
|
barrier();
|
|
outbname.f = s;
|
|
outbnamena.na = vec4(s);
|
|
s = outbname.uns[18].x; // TODO: see note above
|
|
//outbname.uns[17] = vec3(3.0); // TODO: see note above, this one bitcasts, which isn't handled
|
|
outbname.uns[i] = vec3(s);
|
|
outnames.va[gl_LocalInvocationID.x] = vec4(s);
|
|
}
|