Hi all,

Recently, I discovered a weird issue that the view/Proj matrix in the main 
camera updated by the default cameramanipulator of osgViewer does not sync with 
the one I got in the shader, e.g gl_ModelViewMatrix, gl_ProjectionMatrix. 

The following two code snippets produce different results. 
The first one is using the built in gl_ModelViewProjectionMatrix uniform passed 
in during renderingTraversals()

The second one is using the properties from _viewer->getCamera() as uniforms, 
e.g mainCamera->getViewMatrix().


Code:

void main()
{
 gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}





Code:

uniform mat4 u_modelMatrix;
uniform mat4 u_viewMatrix;
uniform mat4 u_projMatrix;

mat4 getModelToWorldMatrix()
{
 return osg_ViewMatrixInverse * gl_ModelViewMatrix;
}

void main()
{
 gl_Position = u_projMatrix * u_viewMatrix * getModelToWorldMatrix() * 
gl_Vertex;
}




When overlapping the rendering results of the two shaders into one buffer, the 
second shader is approximately one frame slower than the first one, making me 
doubt that the view/proj matrix managed by the main camera is not synced with 
the one managed by the renderingTraversals(). 

This out of sync problem is also pronounced in Wang Rui's effectcompositor. In 
the ssao.xml demo, if you turn on the analysis mode, you'll see that in the 
linearDepth buffer view, the depth is unstable (flickering) when you zoom in 
and out quickly. 

The following is the code snippet from Rui's ssao.xml

Code:

void main(void)
{
 vec4 vecInEye = gl_ModelViewMatrix * gl_Vertex;
 depthValue = (-vecInEye.z - nearPlaneValue) / (farPlaneValue - nearPlaneValue);
 gl_Position = ftransform();
}




I suspect that the nearPlaneValue and farPlaneValue form the built-in 
projection matrix's uniforms are somehow not synced with the corresponding ones 
in gl_ProjectionMatrix ( from ftransfrom() ); 

This problem bugs me for a long time. My current workaround is just using the 
manually supplied uniforms from the main camera. But the extra computation of 
the modelviewprojecionmatrix is definitely a waste in the vertex shader.

Any ideas?

Thank you. 

... 

Robin[/code]

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





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

Reply via email to