Hi,
Here is a series bugs I encounter:
1 - nVidia drivers doesn't support precision qualifier for input and output varyings.
2 - gl_ViewportIndex isn't supported.
3 - nVidia drivers behave weirdly with precision qualifiers. On one side there are more of less discard, on other side there are interpreted as int8_t or int16_t which are defined in GL_NV_vertex_attrib_integer_64bit but I don't use it.
4 - I have a misleading warning with the following simple shader:
0(21) : warning C7050: "GeomColor" might be used before being initialized
Code :#version 400 core layout(triangles, invocations = 6) in; in vec3 VertColor[]; layout(stream = 0) out vec3 GeomColor; uniform mat4 MVP; void main() { for(int i = 0; i < gl_in.length(); ++i) { gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0)); GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + VertColor[i]) / 2.0; EmitVertex(); } EndPrimitive(); }
It is followed by a invalid operation error at draw call.
5 - More misleading errors with a simple control shader:
Code :#version 400 core layout(vertices = 4) out; in vert { vec4 Color; } Vert[]; out cont { vec4 Color; } Cont[]; void main() { gl_TessLevelInner[0] = 16.0; gl_TessLevelInner[1] = 16.0; gl_TessLevelOuter[0] = 8.0; gl_TessLevelOuter[1] = 8.0; gl_TessLevelOuter[2] = 8.0; gl_TessLevelOuter[3] = 8.0; gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; Cont[gl_InvocationID].Color = Vert[gl_InvocationID].Color; }
0(14) : error C5121: multiple bindings to output semantics
"ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"
Yes, I have it 3 times...
6 - More geometry shader issue:
Code :#version 410 core // Declare all the semantics #define ATTR_POSITION 0 #define ATTR_COLOR 3 #define ATTR_TEXCOORD 4 #define VERT_POSITION 0 #define VERT_COLOR 3 #define VERT_TEXCOORD 4 #define VERT_INSTANCE 7 #define GEOM_COLOR 3 #define FRAG_COLOR 0 #define FRAG_RED 0 #define FRAG_GREEN 1 #define FRAG_BLUE 2 #define FRAG_ALPHA 3 layout(triangles, invocations = 6) in; layout(location = VERT_COLOR) in vec3 Color[]; layout(location = GEOM_COLOR, stream = 0) out vec3 GeomColor; uniform mat4 MVP; void main() { for(int i = 0; i < gl_in.length(); ++i) { gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0)); GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + Color[i]) / 2.0; EmitVertex(); } EndPrimitive(); }
which generates the message: (0) fatal error C9999: *** exception during compilation ***
Actually, I didn't manage to run any gemetry shader code...
***Outch***



...
