- 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