float4x4 World; float4x4 View; float4x4 Projection; float4 AmbientColor; float AmbientIntensity; float3 DiffuseDirection; float4 DiffuseColor; float DiffuseIntensity; Texture xTexture; Texture bTexture; sampler TextureSampler = sampler_state { texture = ; magfilter = LINEAR; minfilter = LINEAR; mipfilter=LINEAR; AddressU = mirror; AddressV = mirror;}; sampler TextureSampler2 = sampler_state { texture = ; magfilter = LINEAR; minfilter = LINEAR; mipfilter=LINEAR; AddressU = mirror; AddressV = mirror;}; // TODO: add effect parameters here. struct VertexShaderInput { float4 Position : POSITION0; float2 TexCoords1 : TEXCOORD0; float2 TexCoords2 : TEXCOORD1; float BlendWeight : BLENDWEIGHT0; float4 Color : COLOR0; // TODO: add input channels such as texture // coordinates and vertex colors here. }; struct VertexShaderOutput { float4 Position : POSITION0; float3 Normal : NORMAL0; float2 TexCoords1 : TEXCOORD0; float2 TexCoords2 : TEXCOORD1; float BlendWeight : BLENDWEIGHT0; float4 Color : COLOR0; // TODO: add vertex shader outputs such as colors and texture // coordinates here. These values will automatically be interpolated // over the triangle, and provided as input to your pixel shader. }; VertexShaderOutput VertexShaderFunction(VertexShaderInput input, float3 Normal : NORMAL0) { VertexShaderOutput output; float4 worldPosition = mul(input.Position, World); float4 viewPosition = mul(worldPosition, View); output.Position = mul(viewPosition, Projection); output.Normal = normalize(mul(Normal,World)); output.BlendWeight = input.BlendWeight; output.TexCoords1 = input.TexCoords1; output.TexCoords2 = input.TexCoords2; output.Color = input.Color; // TODO: add your vertex shader code here. return output; } float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0 { // TODO: add your pixel shader code here. float4 norm = float4(input.Normal, 1.0); float4 diffuse = saturate(dot(-DiffuseDirection,norm)); float4 blend = tex2D(TextureSampler2, input.TexCoords2) * input.BlendWeight; float4 normtex = tex2D(TextureSampler, input.TexCoords1) * (1 - input.BlendWeight); float4 merge = (blend + normtex) / 2; return merge * (AmbientColor*AmbientIntensity + DiffuseIntensity*DiffuseColor*diffuse + input.Color); // (AmbientColor*AmbientIntensity + DiffuseIntensity*DiffuseColor*diffuse) // return float4(1, 0, 0, 1); } technique Technique1 { pass Pass1 { // TODO: set renderstates here. VertexShader = compile vs_3_0 VertexShaderFunction(); PixelShader = compile ps_3_0 PixelShaderFunction(); } }