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;
}