float4x4 matWorld;
float4x4 matWorldViewProj;
float4 vecSunDir;
float4 vecAmbient;
float4 vecSunColor;
float2 tiles = {50,50};
texture dmap1_bmap;
texture dmap2_bmap;
texture dmap3_bmap;
texture dmap4_bmap;
texture dmap5_bmap;
sampler2D skin1 = sampler_state { Texture = <dmap1_bmap>;mipfilter=2;minfilter=2;magfilter=2;};
sampler2D skin2 = sampler_state { Texture = <dmap2_bmap>;mipfilter=2;minfilter=2;magfilter=2;};
sampler2D skin3 = sampler_state { Texture = <dmap3_bmap>;mipfilter=2;minfilter=2;magfilter=2;};
sampler2D skin4 = sampler_state { Texture = <dmap4_bmap>;mipfilter=2;minfilter=2;magfilter=2;};
sampler2D skin5 = sampler_state { Texture = <dmap5_bmap>;mipfilter=2;minfilter=2;magfilter=2;};
void VS ( in float4 iPos : POSITION,
in float3 iNorm : NORMAL,
in float4 iTex : TEXCOORD0,
out float4 oPos : POSITION,
out float3 oNorm : TEXCOORD1,
out float4 oTex : TEXCOORD0,
out float y : TEXCOORD2)
{
oPos = mul (iPos,matWorldViewProj);
oNorm = mul(iNorm,matWorld);
oTex = iTex;
y = mul(iPos,matWorld).y;
}
float4 PS( in float2 tex : TEXCOORD0,
in float3 normal : TEXCOORD1,
in float y : TEXCOORD2) : COLOR {
float4 color = tex2D(skin1,tiles * tex);
color = lerp(color,tex2D(skin2,tiles * tex),saturate((1500-y) / 100));
color = lerp(color,tex2D(skin3,tiles * tex),saturate((1000-y) / 100));
color = lerp(color,tex2D(skin4,tiles * tex),saturate((500-y) / 100));
color = lerp(color,tex2D(skin5,tiles * tex),saturate(1-pow(normal.y,1)));
color *= vecSunColor * saturate(dot(-vecSunDir, normalize(normal))) + vecAmbient;
return color;}
technique t{ pass p{ AlphaBlendEnable = 0;
zWriteEnable = 1;
VertexShader = compile vs_2_0 VS();
PixelShader = compile ps_2_0 PS();
}}