Guest User

Default with Fog

a guest
May 26th, 2020
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.91 KB | None | 0 0
  1. Shader "Sprites/Default with Fog"
  2.   {
  3.       Properties
  4.       {
  5.           [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
  6.           _Color ("Tint", Color) = (1,1,1,1)
  7.           [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
  8.           [HideInInspector] _RendererColor ("RendererColor", Color) = (1,1,1,1)
  9.           [HideInInspector] _Flip ("Flip", Vector) = (1,1,1,1)
  10.           [PerRendererData] _AlphaTex ("External Alpha", 2D) = "white" {}
  11.           [PerRendererData] _EnableExternalAlpha ("Enable External Alpha", Float) = 0
  12.       }
  13.  
  14.       SubShader
  15.       {
  16.           Tags
  17.           {
  18.               "Queue"="Transparent"
  19.               "IgnoreProjector"="True"
  20.               "RenderType"="Transparent"
  21.               "PreviewType"="Plane"
  22.               "CanUseSpriteAtlas"="True"
  23.           }
  24.  
  25.           Cull Off
  26.           Lighting Off
  27.           ZWrite Off
  28.           Blend One OneMinusSrcAlpha
  29.  
  30.           Pass
  31.           {
  32.           CGPROGRAM
  33.               #pragma vertex SpriteVertFog
  34.               #pragma fragment SpriteFragFog
  35.               #pragma target 2.0
  36.               #pragma multi_compile_instancing
  37.               #pragma multi_compile _ PIXELSNAP_ON
  38.               #pragma multi_compile _ ETC1_EXTERNAL_ALPHA
  39.               #pragma multi_compile_fog
  40.               #include "UnitySprites.cginc"
  41.  
  42.               struct v2f_fog
  43.               {
  44.                   float4 vertex   : SV_POSITION;
  45.                   fixed4 color    : COLOR;
  46.                   float2 texcoord : TEXCOORD0;
  47.                   UNITY_FOG_COORDS(1)
  48.                   UNITY_VERTEX_OUTPUT_STEREO
  49.               };
  50.  
  51.               v2f_fog SpriteVertFog(appdata_t IN)
  52.               {
  53.                   v2f_fog OUT;
  54.  
  55.                   UNITY_SETUP_INSTANCE_ID (IN);
  56.                   UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
  57.  
  58.               #ifdef UNITY_INSTANCING_ENABLED
  59.                   IN.vertex.xy *= _Flip.xy;
  60.               #endif
  61.  
  62.                   OUT.vertex = UnityObjectToClipPos(IN.vertex);
  63.                   OUT.texcoord = IN.texcoord;
  64.                   OUT.color = IN.color * _Color * _RendererColor;
  65.  
  66.               #ifdef PIXELSNAP_ON
  67.                   OUT.vertex = UnityPixelSnap (OUT.vertex);
  68.               #endif
  69.  
  70.  
  71.                   UNITY_TRANSFER_FOG(OUT, OUT.vertex);
  72.  
  73.                   return OUT;
  74.               }
  75.  
  76.  
  77.               fixed4 SpriteFragFog(v2f_fog IN) : SV_Target
  78.               {
  79.                   fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
  80.  
  81.                   // apply fog
  82.                   UNITY_APPLY_FOG(IN.fogCoord, c);
  83.                   c.rgb *= c.a;
  84.  
  85.                   return c;
  86.               }
  87.  
  88.           ENDCG
  89.           }
  90.       }
  91.   }
  92.  
  93.  
  94. (THIS IS THE SHADER CODE FOR MAKING FOG AFFECT SPRITES IN UNITY DO NOT COPY THIS SPECIFIC LINE OF TEXT OR YOU WILL GET ERRORS, HOWEVER THE ACTUAL CODE IS SAFE TO COPY)
Add Comment
Please, Sign In to add comment