All pastes #917385 Raw Edit

Unnamed

public text v1 · immutable
#917385 ·published 2008-02-25 10:17 UTC
rendered paste body
//shadow pass

ShadowVertexToPixel ShadowVS( float4 inPos : POSITION)
{
    ShadowVertexToPixel Output = (ShadowVertexToPixel)0;
    float4x4 preWorldViewProjection = mul(xWorld, xSunViewProjection[xShadowMapIndex]);
    Output.Position =mul(inPos, preWorldViewProjection);
    Output.Depth.rba = 1;
    Output.Depth.g = Output.Position.z / (  2000);
    return Output;
}

float4 ShadowPS(ShadowVertexToPixel PSIn): COLOR0
 {
     half4 White = {PSIn.Depth.g,PSIn.Depth.g, PSIn.Depth.g ,1};
     return White;
 }

//scene pass

TerrainVertexToPixel ColoredVS( float4 inPos : POSITION, float4 inColor: COLOR, float3 inNormal: NORMAL)
{
    TerrainVertexToPixel Output = (TerrainVertexToPixel)0;
    float4x4 preSunWorldViewProjection = mul (xWorld, xSunViewProjection);
    Output.ProjectedCoords = mul(inPos, preSunWorldViewProjection);
    Output.Position = mul(inPos, xWorldViewProjection);
    Output.Color = inColor;
    Output.Normal = mul(normalize(inNormal), xWorld);  
    return Output;    
}
float4 ColoredPS(TerrainVertexToPixel PSIn) :COLOR0
{
    float2 projectedTexCoords;
    float lightingfactor = 1;
    projectedTexCoords[0] = (ProjectedCoords.x / 
                             ProjectedCoords.w / 2.0f) + 0.5f;
    projectedTexCoords[1] = (-ProjectedCoords.y / 
                              ProjectedCoords.w / 2.0f) + 0.5f;
    half4 depth = {0,0,0,0};                         

		
    depth = tex2D(Shadowmap, projectedTexCoords);
//this is the depth check
   if((ProjectedCoords.z/2000) < depth.r)
       depth.r *= 0;

    lightingfactor -=  depth.r*1000.5f;		


    color.a = 1;
    return color;
}