rendered paste body//toon Shading shaders
matrix worldViewMat;
matrix worldViewProjMat;
vector lightDirection;
struct VS_INPUT
{
vector position : POSITION;
vector normal : NORMAL;
};
struct VS_OUTPUT
{
vector position : POSITION;
vector diffuse : COLOR;
};
VS_OUTPUT Main( VS_INPUT input )
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.position = mul( input.position, worldViewProjMat );
lightDirection = mul( lightDirection, worldViewMat );
input.normal = mul( input.normal, worldViewMat );
lightDirection.w = 0.0f;
input.normal = 0.0f;
float u = dot( lightDirection, input.normal );
if( u < 0.0f )
u = 0.0f;
if( u >= 0 && u < 0.33f )
shade = ( 0.0f, 0.3f, 0.3f, 0.3f );
if( u >= 0.33f && u < 0.66f )
shade = ( 0.0f, 0.6f, 0.6f, 0.6f );
if( u >= 0.66f && u < 1.0f )
shade = ( 0.0f, 0.9f, 0.9f, 0.9f );
output.diffuse = shade;
return output;
}