48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
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);
|
|
} */ |