Hi Robin,

I'm a bit perplexed by the issue, as the uniform should be tracking the
modelview matrix directly as osg::State does a substitution.

Could you create a small code example that reproduces the problem?

Robert.

On 25 March 2015 at 01:28, Robin Wu <[email protected]> wrote:

> 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
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to