I suppose you are writing the data in a texture with gl_FragColor = vec4(..., depth). What exactly are you doing with the data that you write afterwards, or how do you actually obtain your point cloud?
If for example you take the position vec4(..., depth) (which is a world space position?) and you would project it on the image plane by doing PROJECTIONMATRIX * MODELVIEWMATRIX * vec4(..., depth) then, if depth is not equals 1.0 you get a completely different projection on the screen after doing the perspective division. Remember: your world space positions are specified in the homogenous coordinate system, meaning that a world space position (x,y,z) is represented by (x,y,z,1). If you want to project a world space position on the image plane it needs to have the w component (the 4th one) set to 1, since that's where the effect of perspective foreshortening is kind of "stored" after multiplication with the projection matrix. The perspective division (dividing the x,y,z component by the resulting w component) then actually performs the projection. ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=8776#8776 _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org