[osg-users] Shaders with multiple views, possible?
Julien Valentin
julienvalentin51 at gmail.com
Fri Jan 19 15:20:13 PST 2018
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
More information about the osg-users
mailing list