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