Heu 
Why don't you use different uniform for your differents cameras?

arennuit wrote:
> Dear OSG forum,
> 
> I am having trouble using shaders in the context of multiple views (either 
> several Viewer objects or a CompositeViewer). When using shaders (either 
> vertex or fragment), you most often need to let the shaders know about the 
> camera configuration. In the case where a single view (i.e. single camera) is 
> used, this can be done via a ModelViewProjectionMatrix uniform and setting up 
> a callback camera callback such that when the camera is updated, the shader 
> is informed about the update:
> 
> 
> Code:
> 
> struct ModelViewProjectionMatrixCallback: public osg::Uniform::Callback {
>       ModelViewProjectionMatrixCallback(osg::Camera* camera) :
>                       _camera(camera) {
>       }
> 
>       virtual void operator()(osg::Uniform* uniform, osg::NodeVisitor* nv) {
>               osg::Matrixd viewMatrix = _camera->getViewMatrix();
>               osg::Matrixd modelMatrix = 
> osg::computeLocalToWorld(nv->getNodePath());
>               osg::Matrixd modelViewProjectionMatrix = modelMatrix * 
> viewMatrix * _camera->getProjectionMatrix();
>               uniform->set(modelViewProjectionMatrix);
>       }
> 
>       osg::Camera* _camera;
> };
> 
> 
> osg::Uniform* modelViewProjectionMatrix = new 
> osg::Uniform(osg::Uniform::FLOAT_MAT4, "ModelViewProjectionMatrix");
> modelViewProjectionMatrix->setUpdateCallback(new 
> ModelViewProjectionMatrixCallback(camera));
> 
> 
> 
> 
> But in the case where multiple views are used, there are multiple cameras and 
> if we install callbacks on all cameras, then the shader may be informed about 
> camera 2 being updated but being rendering the view of camera 0. And in this 
> case view 0 will be drawn with the configuration of camera 2, no?
> 
> I guess I am wrong somewhere? Or else what should I change in my code to get 
> shaders in the context of multiple views?
> 
> Thank you!
> 
> Cheers,
> Antoine


------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=72811#72811





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to