50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #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
 | |
|     layout(align=16, offset=2048) 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;
 | |
| }
 | 
