Hello,
I'm re-implementing some shader code and I've run into a problem I've not had
before. That is, I'm switching on osg uniforms and vertex attributes for
shaders (testing GLSL 140), as it's laid out in the osgVertexAttributes
example, but it seems to only partly work.
Here's the shader code:
Vertex:
Code:
#version 140
uniform mat3 osg_NormalMatrix;
uniform mat4 osg_ModelViewProjectionMatrix;
in vec3 osg_Normal;
in vec4 osg_Vertex;
out vec3 normal;
void main()
{
normal = normalize(osg_NormalMatrix * osg_Normal);
gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex; //ftransform();
}
Fragment:
Code:
#version 140
vec4 color1;
vec4 color2;
vec4 color3;
vec4 color4;
in vec3 normal;
out vec4 glFragColor;
void main()
{
color1 = vec4( 1.0, 0.5, 0.5, 1.0 );
color2 = vec4( 0.5, 0.2, 0.2, 1.0 );
color3 = vec4( 0.2, 0.1, 0.1, 1.0 );
color4 = vec4( 0.1, 0.05, 0.05, 1.0 );
vec4 light0 = vec4(0.0, 0.0, 0.0, 1.0);
float intensity = dot(vec3(light0), normal);
if (intensity > 0.95) glFragColor = color1;
else if (intensity > 0.5) glFragColor = color2;
else if (intensity > 0.25) glFragColor = color3;
else glFragColor = color4;
}
Error log:
Code:
glLinkProgram "" FAILED
Program "" infoLog:
Vertex info
------------
0(3) : warning C7555: 'attribute' is deprecated, use 'in/out' insetead
0(6) : error C1038: declaration of "osg_ModelViewProjectionMatrix" conflicts
with previous declaration at 0(2)
0(8) : error C1038: declaration of osg_Vertex conflicts with previous
declaration at 0(3)
I've used GLSL 140+ successfully in the past (OSG 2.8.x / 2.9.x), though I
don't have that code any longer. The error log makes no sense, suggesting I'm
declaring osg_ModelViewProjectionMatrix and osg_Vertex twice, with meaningless
line references. Interestingly, the osg_NormalMatrix and osg_Normal
declarations generate no errors.
Just to ensure it wasn't something I was doing, I modded osgVertexAttributes to
automatically load a model and apply the same GLSL 140 code - shader gen was
disabled. I didn't change any of the NodeVisitor code. Strangely enough, I
received a very similar error log for the vertex shader.
The GLSL 140 code was modded from the original 120 in the beginner's guide.
Prior to enabling the osg uniforms and vertex attributes, I tested the version
120 code and it worked just fine.
Maybe I missed a CMake option when I built my 3.0.1 binaries?
Thanks,
Joel
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=46690#46690
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org