Jump to content
  • Advertisement
Sign in to follow this  
ccanan

w=0 problem in shadow volume

This topic is 4139 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

in dx sample:Shadow volume, in the shader file: ShadowVolume.fx, on the function which deal with extrde the vertex away, you can get the
    float4 PosView = mul( vPos, g_mWorldView );

    // Light-to-vertex vector in view space
    float3 LightVecView = PosView - g_vLightView;

    // Perform reverse vertex extrusion
    // Extrude the vertex away from light if it's facing away from the light.
    if( dot( N, -LightVecView ) < 0.0f )
    {
        if( PosView.z > g_vLightView.z )
            PosView.xyz += LightVecView * ( g_fFarClip - PosView.z ) / LightVecView.z;
        else
            PosView = float4(LightVecView,0);

        // Transform the position from view space to homogeneous projection space
        oPos = mul( PosView, g_mProj );
    } else
        oPos = mul( vPos, g_mWorldViewProjection );


why when it set w=0 when PosView.z <= g_vLightView.z, it works and otherwise it doesn't; what happened in the clipping stage? when I set w=0 on all situations, there is one more strange shadow; sorry I don't know how to paste picture here; you can see it by modify the code; the homogeneous coordinates, the clipping algorithm, puzzle me;

Share this post


Link to post
Share on other sites
Advertisement
I can't give a real answer, but setting the w component means that you have a vector instead of a point. The gpu knows how to handle this. If you have a triangle where one of the points has w=0, you'll actually get a three sided rectangle where one side can never be seen because it's off at infinity. You can see a cool example from nvidia visualizing this: http://download.developer.nvidia.com/developer/SDK/Individual_Samples/3dgraphics_samples.html

Search for "External Triangles".

As for this specific case, it has to do with fixing problems with general stencil shadows. Using a special shadow mesh, there are cases that can be fixed by sending off some of the faces to crazy town with this method. I'm not an expert on this, but I know how to find one: http://developer.nvidia.com/object/robust_shadow_volumes.html

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!