Guest User

Untitled

a guest
Jun 29th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2.  
  3. Shader "FX/TransparentMirrorReflection"
  4. {
  5.     Properties
  6.     {
  7.         _MainTex("Base (RGB)", 2D) = "white" {}
  8.         [HideInInspector] _ReflectionTex0("", 2D) = "white" {}
  9.         [HideInInspector] _ReflectionTex1("", 2D) = "white" {}
  10.     }
  11.     SubShader
  12.     {
  13.         Tags{ "RenderType" = "Transparent" "Queue"="Transparent" }
  14.         LOD 100
  15.  
  16.         Pass
  17.         {
  18.             Blend SrcAlpha OneMinusSrcAlpha
  19.  
  20.             CGPROGRAM
  21.             #pragma vertex vert
  22.             #pragma fragment frag
  23.             #include "UnityCG.cginc"
  24.             #include "UnityInstancing.cginc"
  25.  
  26.             sampler2D _MainTex;
  27.             float4 _MainTex_ST;
  28.  
  29.             sampler2D _ReflectionTex0;
  30.             sampler2D _ReflectionTex1;
  31.  
  32.             struct appdata
  33.             {
  34.                 float4 vertex : POSITION;
  35.                 float2 uv : TEXCOORD0;
  36.  
  37.                 UNITY_VERTEX_INPUT_INSTANCE_ID
  38.             };
  39.  
  40.             struct v2f
  41.             {
  42.                 float2 uv : TEXCOORD0;
  43.                 float4 refl : TEXCOORD1;
  44.                 float4 pos : SV_POSITION;
  45.  
  46.                 UNITY_VERTEX_OUTPUT_STEREO
  47.             };
  48.  
  49.             v2f vert(appdata v)
  50.             {
  51.                 v2f o;
  52.  
  53.                 UNITY_SETUP_INSTANCE_ID(v);
  54.                 UNITY_INITIALIZE_OUTPUT(v2f, o);
  55.                 UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  56.  
  57.                 o.pos = UnityObjectToClipPos(v.vertex);
  58.                 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  59.                 o.refl = ComputeNonStereoScreenPos(o.pos);
  60.  
  61.                 return o;
  62.             }
  63.  
  64.             half4 frag(v2f i) : SV_Target
  65.             {
  66.                 UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
  67.  
  68.                 half4 tex = tex2D(_MainTex, i.uv);
  69.                 half4 refl = unity_StereoEyeIndex == 0 ? tex2Dproj(_ReflectionTex0, UNITY_PROJ_COORD(i.refl)) : tex2Dproj(_ReflectionTex1, UNITY_PROJ_COORD(i.refl));
  70.                 half3 col = (tex * refl).xyz;
  71.                 half3 chromakey = half3(0, 1, 0);
  72.                 half3 diff = abs(col - chromakey);
  73.                 half alpha = step(0.2, dot(diff, diff));
  74.  
  75.                 return half4(col.xyz, alpha);
  76.             }
  77.             ENDCG
  78.         }
  79.     }
  80. }
Add Comment
Please, Sign In to add comment