- Home /
 
              This question was 
             closed Sep 30, 2015 at 03:46 AM by 
             CloudChing. 
            
 
             
               Question by 
               CloudChing · Sep 17, 2015 at 12:11 PM · 
                shadershadersshader programmingshaderlabshader writing  
              
 
              Fog not working in my Shader~
in Unity5 , Fog not working in my own Vertext Shader,i use default surface shader is working.
I see the documentation:
 Fog handling was changed
      
      Unity 5.0 makes built-in Fog work on WP8 and consoles, but in order to achieve that we’ve changed how Fog is done a bit. For surface shaders and fixed function shaders, nothing extra needs to be done - fog will be added automatically (you can add “nofog” to surface shader #pragma line to explicitly make it not support fog).
      
      For manually written vertex/fragment shaders, fog does not happen automagically now. You need to add
      #pragma multi_compile_fog and fog handling macros to your shader code. Check out built-in shader source, for example Unlit-Normal how to do it.
 
               i add the #pragma multi_compile_fog , but still not working...
there is my code:
   Properties {
          _MainTex ("Base (RGB)", 2D) = "white" {}
          _QOffset ("Offset", Vector) = (0,0,0,0)
          _Dist ("Distance", Float) = 100.0
      }
    
  SubShader {
      Tags { "RenderType"="Opaque"  }
      Fog  {Mode Linear }
      Pass
      {
          CGPROGRAM
          #pragma vertex vert
          #pragma fragment frag
          #include "UnityCG.cginc"
          #pragma multi_compile_fog
           
   
          sampler2D _MainTex;
          float4 _QOffset;
          float _Dist;
   
          struct v2f {
              float4 pos : SV_POSITION;
              float4 uv : TEXCOORD0;
          };
   
          v2f vert (appdata_base v)
          {
              v2f o;
              float4 vPos = mul (UNITY_MATRIX_MV, v.vertex);
              float zOff = vPos.z/_Dist;
              vPos += _QOffset*zOff*zOff;
              o.pos = mul (UNITY_MATRIX_P, vPos);
              o.uv = mul( UNITY_MATRIX_TEXTURE0, v.texcoord );
              return o;
          }
   
          half4 frag (v2f i) : COLOR
          {
              half4 col = tex2D(_MainTex, i.uv.xy);
              return col;
          }
   
          ENDCG
      }
  }
 
              
               Comment
              
 
               
              Follow this Question
Related Questions
Shader - What is float3.xy? 1 Answer
Surface shader changing z value 0 Answers
Shader inverts uv map only once, how to fix it? 0 Answers
How to adapt this shader into a transparent one (alpha blend) 0 Answers