- Home /
Question by
jatobu · Sep 21, 2012 at 03:43 AM ·
shaderlabsurfaceshader
cant use worldNormal AND normalMap at the same time.
Hi,
I've been trying to use within a surface shader the worldNormal AND the normalMap at the same time, however, I came into a problem when I try to use in the same equation (either directly or indirectly) the value of the worldNormal and the RGB values of the texture.
Here is the simplest shader I came with using it, and where it caused the compile error:
Shader "MyShaders/TestShader" {
Properties {
_MainTex ("Diffuse Map", 2D) = "white" {}
_NormalMap ("Normal Map", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Custom
half4 LightingCustom( SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
{
return half4(0,0,0,0);
}
struct Input
{
float2 uv_MainTex;
float2 uv_NormalMap;
float3 worldNormal;
INTERNAL_DATA
};
sampler2D _MainTex;
sampler2D _NormalMap;
void surf(Input IN, inout SurfaceOutput o)
{
half3 worldNormal = WorldNormalVector( IN, float3(0,0,1) );
half3 dN = dot( worldNormal, half3(1,0,0) );
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb * dN; // works without *dN, sends error with it
o.Normal = UnpackNormal( tex2D(_NormalMap, IN.uv_NormalMap) );
}
ENDCG
}
Fallback "Diffuse"
}
Does anybody has any idea why it is causing a compile error with ".rgb dN"?... and if you change it for any explicit value like ".rgb 0.5" it compiles without any problem?
Thanks!
Comment
Your answer