struct a2v { float4 Position : POSITION; //in object space float3 Normal : NORMAL; }; struct v2f { float4 Position : POSITION; //in projection space float4 TexCoords : TEXCOORD0; float3 LightDirection : TEXCOORD1; float3 Normal : TEXCOORD2; }; float4 main(v2f IN, uniform sampler3D colourMap : TEXUNIT0, uniform sampler3D normalMap : TEXUNIT1) : COLOR { float3 normalMapValue = tex3D(normalMap, IN.TexCoords.xyz).rgb; normalMapValue = (normalMapValue - 0.5) * 2; float3 finalNormal = normalize(IN.Normal + normalMapValue); float3 colourMapValue = tex3D(colourMap, IN.TexCoords.xyz).rgb; // calculate light vector //float3 Normal = normalize(IN.Color.xyz); /* float3 Normal = (IN.Color.xyz * 2) - float3(1.0,1.0,1.0); Normal = normalize(Normal+ normalAdjustment); float3 lightDirection = normalize(float3(1,1,1)); */ // Calculate diffuse component float diffuse = max(dot(finalNormal, IN.LightDirection) , 0); diffuse += 0.3; //OUT.Color = ambient + float4(diffuse,diffuse,diffuse,1.0); //return float4(detailColor * IN.Color.rgb, 1.0); return float4(colourMapValue*diffuse, 1.0); } /*float4 main(v2f IN, uniform sampler3D detailTexture : TEXUNIT0) : COLOR { float3 detailColor = tex3D(detailTexture, IN.TexCoords.xyz).rgb; return float4(detailColor * IN.Color.rgb, 1.0); } */