My shader worked perfectly before recent Nvidia Update. Now I'm getting the error "ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accesing its member." I'm new to GLSL shaders, and I just don't know what to do...Any help is greatly appreciated.
If I add:
out gl_PerVertex
{
vec4 gl_Position;
};
It compiles with no errors but nothing is drawn.
//geom
#version 430
#define POSITION 0
#define GEOMUV 1
#define INDEX 2
#define FRAG_COLOR 0
layout(points) in; // x, y, width, height
layout(triangle_strip, max_vertices = 4) out;
uniform mat4 MVP;
in Data
{
ivec4 pos; // x, y, width, height
vec2 UV;
flat int Index;
} vdata[1];
out Data
{
vec2 UV;
flat int Index;
} gdata;
void main()
{
int x = vdata[0].pos.x;
int y = vdata[0].pos.y;
int widthx = vdata[0].pos.z + vdata[0].pos.x;
int heighty = vdata[0].pos.w + vdata[0].pos.y;
// bottom left quad
gl_Position = MVP * vec4(x, heighty, 0, 1);
gdata.UV = vec2(0.0, 0.0);
gdata.Index = vdata[0].Index;
EmitVertex();
// bottom right quad
gl_Position = MVP * vec4(widthx, heighty, 0, 1);
gdata.UV = vec2(1.0, 0.0);
gdata.Index = vdata[0].Index;
EmitVertex();
// top right quad
gl_Position = MVP * vec4(x, y, 0, 1);
gdata.UV = vec2(0.0, 1.0);
gdata.Index = vdata[0].Index;
EmitVertex();
// top left quad
gl_Position = MVP * vec4(widthx, y, 0, 1);
gdata.UV = vec2(1.0, 1.0);
gdata.Index = vdata[0].Index;
EmitVertex();
EndPrimitive();
}