(I've really just skimmed your message quickly)
Do you know about the "built-in" OSG uniforms osg_ViewMatrix and
osg_ViewMatrixInverse? Combined with the GLSL built-in
gl_ModelViewMatrix, perhaps all the info you need is already available
to the shader?
cheers
-- mew
On Sun, May 25, 2008 at 2:42 AM, zhangguilian <[EMAIL PROTECTED]> wrote:
> Hi,
> I use glsl for shader and build a scene using osg2.4, the scene graph tree
> is shown in the diagram, I render the same scene in two passes with two
> cameras, I want to get the world coordinate of vertex in both of the two
> vertex shaders, I use this method:
>
> //to each of the geode added to the scene:
> osg::Matrix ComputeAllParentsTransforms(Geode& node)
> {
>
> Matrix ret;
> ret.identity();
> //if(!node)return ret;
>
> if(node.getNumParents()>0)
> {
> Node* parent=node.getParent(0);
>
> do
> {
>
> MatrixTransform* mt=dynamic_cast<MatrixTransform*>(parent);
> if(mt)
> {
> ret*=mt->getMatrix();
> }
> parent=parent->getParent(0);
>
> }
> while((parent->getNumParents()>0)&&(parent->getName()!="MRT_CAMERA"));//the
> first pass camera and the second pass camera is named "MRT_CAMERA"
>
> }
> return ret;
>
> }
> I set this matrix as a uniform("LocalToWorldMatrix ",Matrix()) to the
> vertex shader, and do:worldPosition= LocalToWorldMatrix * gl_Vertex; I think
> this result is the world coordinate of the vertex, am I right? Can I get the
> world coordinate of the vertex using this method? Are there any good and
> right method to get the world coordinate of the vertex? And Can I get the
> world normal through this way:
>
> vec4 nrm=vec4(gl_Normal,0.0);
> WorldNrm= (LocalToWorldMatrix *nrm).xyz;
> If it is a bad method, Could you please give me some advice about how to get
> the world coordinate and world normal? Any information about this will be
> OK.
>
> I would appreciate it very much if you would help me with it. Thanks very
> much!
>
> ________________________________
> zhangguilian
> 2008-05-25
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
--
Mike Weiblen -- Austin Texas USA -- http://mew.cx/
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org