1617a3babSopenharmony_ci#version 450 2617a3babSopenharmony_ci 3617a3babSopenharmony_ci#define MAX_VER 81 4617a3babSopenharmony_ci#define MAX_PRIM 32 5617a3babSopenharmony_ci#define MAX_VIEWS gl_MaxMeshViewCountNV 6617a3babSopenharmony_ci 7617a3babSopenharmony_ci#define BARRIER() \ 8617a3babSopenharmony_ci memoryBarrierShared(); \ 9617a3babSopenharmony_ci barrier(); 10617a3babSopenharmony_ci 11617a3babSopenharmony_ci#extension GL_NV_mesh_shader : enable 12617a3babSopenharmony_ci 13617a3babSopenharmony_cilayout(local_size_x = 32) in; 14617a3babSopenharmony_ci 15617a3babSopenharmony_cilayout(max_vertices=MAX_VER) out; 16617a3babSopenharmony_cilayout(max_primitives=MAX_PRIM) out; 17617a3babSopenharmony_cilayout(triangles) out; 18617a3babSopenharmony_ci 19617a3babSopenharmony_ci// test use of per-view builtin attributes 20617a3babSopenharmony_ci 21617a3babSopenharmony_civoid main() 22617a3babSopenharmony_ci{ 23617a3babSopenharmony_ci uint iid = gl_LocalInvocationID.x; 24617a3babSopenharmony_ci uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; 25617a3babSopenharmony_ci 26617a3babSopenharmony_ci gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID] = vec4(1.0, 2.0, 3.0, 4.0); 27617a3babSopenharmony_ci gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2] = 5.0; 28617a3babSopenharmony_ci gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3] = 6.0; 29617a3babSopenharmony_ci gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID] = 7; 30617a3babSopenharmony_ci gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0] = 8; 31617a3babSopenharmony_ci 32617a3babSopenharmony_ci BARRIER(); 33617a3babSopenharmony_ci 34617a3babSopenharmony_ci gl_MeshVerticesNV[iid+1].gl_PositionPerViewNV[viewID] = gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID]; 35617a3babSopenharmony_ci gl_MeshVerticesNV[iid+1].gl_ClipDistancePerViewNV[viewID][2] = gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2]; 36617a3babSopenharmony_ci gl_MeshVerticesNV[iid+1].gl_CullDistancePerViewNV[viewID][3] = gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3]; 37617a3babSopenharmony_ci gl_MeshPrimitivesNV[iid+1].gl_LayerPerViewNV[viewID] = gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID]; 38617a3babSopenharmony_ci gl_MeshPrimitivesNV[iid+1].gl_ViewportMaskPerViewNV[viewID][0] = gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0]; 39617a3babSopenharmony_ci 40617a3babSopenharmony_ci BARRIER(); 41617a3babSopenharmony_ci} 42617a3babSopenharmony_ci 43