Hello Denis,

When I added vertex shader, the object was not shadowed properly (with the same exact fragment shader). I suspect I'm doing something wrong with the texture coordinates in a vertex shader. I looked in ShadowMap.cpp, it has only fragment shaders. Do you know where can I find default vertex shader?

When you start using a shader for one part of the pipeline (vertex or fragment) you need to do everything that that part of the pipeline used to do (and which is needed by your rendering). In the case of shadows, you'll notice that the code in ShadowMap.cpp adds an osg::TexGen that calculates some texture coordinates for texture unit 1. But that's the fixed pipeline, so you will need to calculate texture coordinates for unit 1 as glTexGen would in your vertex shader now that it has replaced the fixed-function vertex processing.

Something like this should work, though you should probably have finer control over when these are calculated or not:

    gl_TexCoord[1].s = dot( ecPosition, gl_EyePlaneS[1] );
    gl_TexCoord[1].t = dot( ecPosition, gl_EyePlaneT[1] );
    gl_TexCoord[1].p = dot( ecPosition, gl_EyePlaneR[1] );
    gl_TexCoord[1].q = dot( ecPosition, gl_EyePlaneQ[1] );

Note that ecPosition is:

    vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex;

I also assume you're transforming your texture coordinates for texture unit 0 properly:

    gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;

Just assigning gl_MultiTexCoord0 to gl_TexCoord[0] will work until you try to use a texture matrix (osg::TexMat)...

I highly recommend you get/read the Orange Book, as this is all given there. You can also download the ShaderGen program from 3DLabs (now hosted on http://mew.cx/glsl since 3DLabs removed it from their site) which can generate shaders that emulate the fixed pipeline. Note that for speed, you should probably only use the features you need in your shaders, so I am not recommending that you generate a shader that does *all* of what the fixed pipeline would do... Just use what ShaderGen produces as a guide.

Hope this helps,

J-S
--
______________________________________________________
Jean-Sebastien Guay    [EMAIL PROTECTED]
                               http://www.cm-labs.com/
                        http://whitestar02.webhop.org/
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to