Simple Toon Shader New

From GameStudio Wiki

Jump to: navigation, search

This version of the simple toon shader works with DirectX9 and only requires VS 1.0. :) Your entities skin should be made of solid colors(no gradients or photorealistic stuff) to get the cartoonish look. ;)

You will need one picture file: Image:toonlookup7yr.png

If you scroll down to this line:

vertexShaderConstant[16]=0.3; // outline thickness

You may change the thickness of the black line by changing the 0.3 to a higher value or a lower value for thinner lines.

bmap bmp_toonlookup=<toonlookup.tga>;

material mtl_toon
{
	skin1=bmp_toonlookup;
	effect =
	"
matrix matWorldViewProj;
matrix matWorld;vector vecSunDir;
texture entSkin1;texture mtlSkin1;
technique t0{
pass p0 // shade it
{
zwriteenable= true;
zenable = true;
Texture[0]=<mtlSkin1>;
ColorOp[0]=Modulate;
ColorArg1[0]=Texture;
ColorArg2[0]=Texture;
AddressU[0]=Clamp;
AddressV[0]=Clamp;
AddressW[0]=Clamp;
TexCoordIndex[0]=0;
Texture[1]=<entSkin1>;
ColorOp[1]=Modulate;
ColorArg1[1]=Texture;
ColorArg2[1]=Current;
TexCoordIndex[1]=1;
VertexShaderConstant[0] = <matWorldViewProj>;
VertexShaderConstant[4] = <matWorld>;
VertexShaderConstant[7] = <vecSunDir>; 

VertexShader =		asm
{
vs_1_0
dcl_position  v0
dcl_normal    v3
dcl_texcoord0 v7
dcl_texcoord1 v8
mov oT2.xy, v7
dp4 oPos.x, c0, v0
dp4 oPos.y, c1, v0
dp4 oPos.z, c2, v0
dp4 oPos.w, c3, v0
dp3 r0.x, c4.xyz, v3.xyz
dp3 r0.y, c5.xyz, v3.xyz
dp3 r0.z, c6.xyz, v3.xyz
dp3 oT0.x, r0.xyz, -c7.xyz
mov oT1.xyz, v8
};
}
pass p1 // ink it
{
CULLMODE=CW;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[16]=0.3; // outline thickness
vertexShader =		asm
{
vs_1_0
dcl_position v0
dcl_normal v3
dcl_texcoord v7
mov r0,v0
mul r1,c16.x,v3
// Scale the normal
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
// Transorm position to clip space
mov oD0, c0
mov r0,c0
};
}
}
	";
}
action toon
{
	my.material=mtl_toon;
}



Have fun! ;)


Written by: Josh Arldt on August 18, 2005