mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 20:10:06 +00:00
1f1e5369ce
If we don't do this then we get reflection output like so: ArrayedBind[0].a.a: offset 0, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].a.b: offset 4, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b.a: offset 4, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b.b: offset 8, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b: offset 4, type 1406, size 1, index 4, binding -1, stages 1 When the outer reflection loop that calls blowUpActiveAggregate incorrectly iterates over the struct members.
65 lines
1.3 KiB
GLSL
65 lines
1.3 KiB
GLSL
#version 440 core
|
|
|
|
struct VertexInfo {
|
|
float position[3];
|
|
float normal[3];
|
|
};
|
|
|
|
struct TriangleInfo {
|
|
VertexInfo v[3];
|
|
};
|
|
|
|
buffer VertexCollection {
|
|
TriangleInfo t[5];
|
|
uint padding[10];
|
|
};
|
|
|
|
buffer MultipleArrays {
|
|
TriangleInfo tri[5];
|
|
VertexInfo vert[5];
|
|
float f[5];
|
|
} multiarray;
|
|
|
|
buffer ArrayedBind {
|
|
float a;
|
|
float b;
|
|
} buffers[3];
|
|
|
|
uniform UBO {
|
|
VertexInfo verts[2];
|
|
float flt[8];
|
|
uvec4 unused;
|
|
float uniform_multi[4][3][2];
|
|
} ubo;
|
|
|
|
uniform float uniform_multi[4][3][2];
|
|
|
|
struct OutputStruct {
|
|
float val;
|
|
vec3 a;
|
|
vec2 b[4];
|
|
mat2x2 c;
|
|
};
|
|
|
|
out OutputStruct outval;
|
|
out float outarr[3];
|
|
|
|
void main()
|
|
{
|
|
float f;
|
|
f += t[0].v[0].position[0];
|
|
f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID];
|
|
f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID];
|
|
f += multiarray.tri[gl_InstanceID].v[0].position[0];
|
|
f += multiarray.vert[gl_InstanceID].position[0];
|
|
f += multiarray.f[gl_InstanceID];
|
|
f += ubo.verts[gl_InstanceID].position[0];
|
|
f += ubo.flt[gl_InstanceID];
|
|
f += ubo.uniform_multi[0][0][0];
|
|
f += uniform_multi[gl_InstanceID][gl_InstanceID][gl_InstanceID];
|
|
f += buffers[gl_InstanceID].b;
|
|
TriangleInfo tlocal[5] = t;
|
|
outval.val = f;
|
|
outarr[2] = f;
|
|
}
|