Advertisement
Guest User

FX ThermalColors.shader

a guest
Dec 17th, 2019
916
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "FX/ThermalColors"
  2. {
  3.     Properties
  4.     {
  5.         _Matcap("Matcap", 2D) = "white" {}
  6.         _Mask("Mask", 2D) = "white" {}
  7.         _Strength("Tinting Strength", Range(-2,2)) = 0.4
  8.     }
  9.  
  10.     SubShader
  11.     {      
  12.         Tags
  13.         {
  14.             "Queue" = "Geometry"
  15.             "RenderType" = "Transparent"
  16.             "ThermalVision" = "ThermalColors"
  17.         }
  18.  
  19.         Pass
  20.         {
  21.             CGPROGRAM
  22.  
  23.             #pragma vertex vert
  24.             #pragma fragment frag
  25.            
  26.             #include "UnityCG.cginc"
  27.  
  28.             struct appdata
  29.             {
  30.                 float4 vertex : POSITION;
  31.                 float4 uv : TEXCOORD0;
  32.                 float3 normal : NORMAL;
  33.             };
  34.  
  35.             struct v2f
  36.             {
  37.                 float2 uv : TEXCOORD0;
  38.                 float4 vertex : SV_POSITION;
  39.                 float2 cap : TEXCOORD2;
  40.             };
  41.  
  42.             sampler2D _Mask, _Matcap;
  43.             float _Strength;
  44.  
  45.             v2f vert (appdata v)
  46.             {
  47.                 v2f o;
  48.                 o.vertex = UnityObjectToClipPos(v.vertex);
  49.                 o.uv = v.uv;
  50.                            
  51.                 float3 vertexN = normalize(v.vertex);
  52.                     // get vector perpendicular to both vertex and normal
  53.                 float3 viewCross = cross(vertexN, v.normal);
  54.                
  55.                 o.cap = viewCross.xy * 0.5 + 0.5;  
  56.                 return o;
  57.             }
  58.  
  59.             fixed4 frag (v2f i) : SV_Target
  60.             {
  61.                 // Mask
  62.                 fixed4 m = tex2D(_Mask, i.uv);
  63.                
  64.                 // take out masked area
  65.                 i.cap *= (1 - (m.g* _Strength));
  66.                 // color texture over cap
  67.                 fixed4 color = tex2D(_Matcap, i.cap);
  68.                 return color;
  69.  
  70.             }
  71.  
  72.             ENDCG
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement