Hi,

I currently have a problem with a shader update callback I do not understand. I have a vertex and fragment shader which calculate linear depth in [0,1] for me, also respecting dynamic clipping planes. To achieve this, I pass zNear and zFar as uniform parameters to the shader. To have them updated, I have the following callback methods (zFar is looking accordingly):

class UpdateShaderZNear: public osg::Uniform::Callback {
public:
        virtual void operator()(osg::Uniform* uniform, osg::NodeVisitor* nv) {
                double x, zNear;
        viewer->getCamera()->getProjectionMatrixAsPerspective(x,x,zNear,x);
                uniform->set((float)zFar);
        }
};

Now when I move my camera towards and away from the object, it seems like the shader update is one frame (or so) "too late", as I get values that do not correspond to the [0,1]-normalization and the problem disappears as soon as the camera stops.

Is there any reason for that/does anyone have an idea what I'm doing wrong? If more information or code is necessary, just tell me :-)

-Thorsten
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to