changes based on feedback
This commit is contained in:
59
Test/spv.320.meshShaderUserDefined.mesh
Normal file
59
Test/spv.320.meshShaderUserDefined.mesh
Normal file
@@ -0,0 +1,59 @@
|
||||
#version 320 es
|
||||
|
||||
#define MAX_VER 81
|
||||
#define MAX_PRIM 32
|
||||
|
||||
#define BARRIER() \
|
||||
memoryBarrierShared(); \
|
||||
barrier();
|
||||
|
||||
#extension GL_NV_mesh_shader : enable
|
||||
|
||||
layout(local_size_x = 32) in;
|
||||
|
||||
layout(max_vertices=MAX_VER) out;
|
||||
layout(max_primitives=MAX_PRIM) out;
|
||||
layout(triangles) out;
|
||||
|
||||
// test use of user defined interface out blocks:
|
||||
|
||||
// per-primitive block
|
||||
perprimitiveNV layout(location=0) out myblock {
|
||||
float f;
|
||||
float fArr[4];
|
||||
vec3 pos;
|
||||
vec4 posArr[4];
|
||||
mat4 m;
|
||||
mat3 mArr[2];
|
||||
} blk[];
|
||||
|
||||
// per-vertex block
|
||||
layout(location=20) out myblock2 {
|
||||
float f;
|
||||
vec4 pos;
|
||||
mat4 m;
|
||||
} blk2[];
|
||||
|
||||
void main()
|
||||
{
|
||||
int iid = int(gl_LocalInvocationID.x);
|
||||
int gid = int(gl_WorkGroupID.x);
|
||||
|
||||
blk[iid].f = 11.0;
|
||||
blk[iid+1].fArr[gid] = blk[iid].f;
|
||||
blk[iid/2].pos.yzx = vec3(14.0, 15.0, 13.0);
|
||||
blk[iid*2].posArr[1].yzw = blk[iid/2].pos;
|
||||
blk[iid/4].m[2].wzyx = vec4(13.0, 14.0, 15.0, 16.0);
|
||||
blk[iid].mArr[0][1][1] = blk[iid/4].m[2].w;
|
||||
blk[iid*4].mArr[1][gid] = vec3(17.0, 18.0, 19.0);
|
||||
|
||||
BARRIER();
|
||||
|
||||
blk2[iid].f = blk2[iid-1].f + 20.0;
|
||||
blk2[iid].pos = vec4(21.0, 22.0, 23.0, 24.0);
|
||||
blk2[iid+1].m[gid] = blk2[iid].pos;
|
||||
blk2[iid+1].m[gid][2] = 29.0;
|
||||
blk2[iid+2].m[3] = blk2[iid+1].m[gid];
|
||||
|
||||
BARRIER();
|
||||
}
|
||||
Reference in New Issue
Block a user