Fur shader updated and "slightly" improved for dx9.0

Code:
 
material mat_fur
{
flags = tangent;

effect
"
matrix matWorldViewProj;
matrix matWorld;
matrix matWorldView;

texture entSkin1;

technique fur
{
pass p0
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={1.0f,1.0f,1.0f,1.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1 /////vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
pixelshader=
asm
{
ps.1.4 //////////ps.1.4

texld r0, t0 // base map

mul r0, r0, c0
};
}
pass p1
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={2.0f,2.0f,2.0f,2.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};

}
pass p2
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={3.0f,3.0f,3.0f,3.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p3
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={4.0f,4.0f,4.0f,4.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}

pass p4
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={5.0f,5.0f,5.0f,5.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p5
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={6.0f,6.0f,6.0f,6.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p6
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={7.0f,7.0f,7.0f,7.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p7
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={8.0f,8.0f,8.0f,8.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p8
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={9.0f,9.0f,9.0f,9.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p9
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={10.0f,10.0f,10.0f,10.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p10
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={11.0f,11.0f,11.0f,11.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p11
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={12.0f,12.0f,12.0f,12.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p12
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={13.0f,13.0f,13.0f,13.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
pass p13
{
Texture[0] = <entSkin1>;

VertexShaderConstant[0]=<matWorldViewProj>;
VertexShaderConstant[4]={0.76f,0.76f,0.76f,0.76f};
VertexShaderConstant[5]={14.0f,14.0f,14.0f,14.0f};

PixelShaderConstant[0]={0.628f,0.373f,0.121f,0.424f};

VertexShader =
asm{

vs.1.1

dcl_position v0
dcl_normal v1
dcl_texcoord v2
// get model space vertex
mov r0, v0

// get shell distance
mov r1, c4

// offset shell in direction of normal
mul r1.x, r1.x, c5.x
mul r1.xyz, r1.xxx, v1.xyz
add r0.xyz, r0.xyz, r1.xyz

// output transformed vertex
m4x4 oPos, r0, c0

// output texture coordinates
mov oT0, v2
};
}
}
";
}

ACTION atifur
{
my.material=mat_fur;
}