Hi Rubén, Have a look at osg::State::_useModelViewAndProjectionUniforms to see if it's set to true. For builds the set the CMAke option OSG_GL_FIXED_FUNCTION_AVAILABLE to OFF this variable should be set to true by default. This member variable tells osg::State to pass the projection and modelview matrices setting to the associated uniforms.
Robert. On Wed, Sep 7, 2011 at 9:31 AM, Rubén Díaz <[email protected]> wrote: > Hi, > > Thanks for your reply! > > Well, I've tried with the "osg_" uniforms instead of the typical "gl_" > uniforms. > > Still not good. My model appears but the camera matrix uniform just doesn't > update by using > > Code: > _viewer->getCamera()->setViewMatrix(osgMat); > > > > The shader I am using is: > > > Code: > static const char gVertexShader[] = > "varying vec4 color; \n" > "const vec3 lightPos =vec3(100.0, 100.0, 100.0); \n" > "const vec4 cessnaColor =vec4(0.8, 0.0, 0.0, 1.0); \n" > "const vec4 lightAmbient =vec4(0.1, 0.1, 0.1, 1.0); \n" > "const vec4 lightDiffuse =vec4(0.4, 0.4, 0.4, 1.0); \n" > "const vec4 lightSpecular =vec4(0.8, 0.8, 0.8, 1.0); \n" > > "uniform mat4 osg_ModelViewMatrix; > \n" > "uniform mat4 osg_ModelViewProjectionMatrix; > \n" > "uniform mat3 osg_NormalMatrix; > \n" > > "void DirectionalLight(in vec3 normal, \n" > " in vec3 ecPos, \n" > " inout vec4 ambient, \n" > " inout vec4 diffuse, \n" > " inout vec4 specular) \n" > "{ \n" > " float nDotVP; \n" > " vec3 L = normalize(osg_ModelViewMatrix*vec4(lightPos, 0.0)).xyz; > \n" > " nDotVP = max(0.0, dot(normal, L)); \n" > " \n" > " if (nDotVP > 0.0) { \n" > " vec3 E = normalize(-ecPos); \n" > " vec3 R = normalize(reflect( L, normal )); \n" > " specular = pow(max(dot(R, E), 0.0), 16.0) * lightSpecular; \n" > " } \n" > " ambient = lightAmbient; \n" > " diffuse = lightDiffuse * nDotVP; \n" > "} \n" > "void main() { \n" > " vec4 ambiCol = vec4(0.0); \n" > " vec4 diffCol = vec4(0.0); \n" > " vec4 specCol = vec4(0.0); \n" > " gl_Position = osg_ModelViewProjectionMatrix * gl_Vertex; > \n" > " vec3 normal = normalize(osg_NormalMatrix * gl_Normal); > \n" > " vec4 ecPos = osg_ModelViewMatrix * gl_Vertex; > \n" > " DirectionalLight(normal, ecPos.xyz, ambiCol, diffCol, specCol); \n" > " color = cessnaColor * (ambiCol + diffCol + specCol); \n" > "} > \n"; > > static const char gFragmentShader[] = > "precision mediump float; \n" > "varying mediump vec4 color; \n" > "void main() { \n" > " gl_FragColor = color; \n" > "} \n"; > > > > > > No idea what's going wrong... > > > Cheers, > Rubén > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=42473#42473 > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

