KhronosGroup / GLSL

GLSL Shading Language Specification and Extensions
Other
336 stars 98 forks source link

Use GLSL_NV_mesh_shader with separate program #250

Open JustinCop opened 4 weeks ago

JustinCop commented 4 weeks ago

I'm using mesh shader with separate program. when compiling mesh shader (using glCreateShaderProgramv), it return following error: C7592: ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members

If I declare output like this:

out gl_PerVertex {
    vec4 gl_Position;
};

It returns following error: error C7593: Builtin block member gl_Position not found in redeclaration of out gl_PerVertex

If I declare output like this:

out gl_MeshPerVertexNV {  
    vec4 gl_Position;  
} gl_MeshVerticesNV[];  

It returns following error:

error C7528: OpenGL reserves names starting with 'gl_': gl_MeshPerVertexNV
error C7528: OpenGL reserves names starting with 'gl_': gl_MeshVerticesNV

The example here (https://github.com/nvpro-samples/gl_vk_meshlet_cadscene) does not using separate mode, so I don't know how to correctly redeclare outputs. Would you help give me an example?

pixeljetstream commented 3 days ago

this looks like bug in the OpenGL driver's shader compiler. GLSLANG is fine with specifying.

out gl_MeshPerVertexNV {  
    vec4 gl_Position;  
} gl_MeshVerticesNV[];  

We filed a bug internally about this. Thanks for reporting.

pdaniell-nv commented 3 days ago

Yes I agree. I'll try to get a fix implement asap.