#version 310 es | |
layout(location = 7) in vec3 c; | |
layout(LocatioN = 3) in vec4 p; | |
layout(location = 9) in ivec2 aiv2; | |
out vec4 pos; | |
out vec3 color; | |
flat out int iout; | |
layout(row_major) uniform; // default is now row_major | |
layout(std140) uniform Transform { // layout of this block is std140 | |
mat4 M1; // row_major | |
layout(column_major) mat4 M2; // column major | |
mat3 N1; // row_major | |
int iuin; | |
} tblock; | |
uniform T2 { // layout of this block is shared | |
bool b; | |
mat4 t2m; | |
}; | |
layout(column_major) uniform T3 { // shared and column_major | |
mat4 M3; // column_major | |
layout(row_major) mat4 M4; // row major | |
mat2x3 N2; // column_major | |
uvec3 uv3a[4]; | |
}; | |
in uint uiuin; | |
struct S { | |
vec3 c; | |
float f; | |
}; | |
out S s; | |
void main() | |
{ | |
pos = p * (tblock.M1 + tblock.M2 + M4 + M3 + t2m); | |
color = c * tblock.N1; | |
iout = tblock.iuin + int(uiuin) + aiv2.y; | |
s.c = c; | |
s.f = p.x; | |
if (N2[1] != vec3(1.0) || uv3a[2] != uvec3(5)) | |
++s.c; | |
} |