All pastes #536896 Raw Edit

toon Shader

public text v1 · immutable
·published 2007-06-04 15:18 UTC
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;
}