josemorval

Custom depth shader

Apr 20th, 2016
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1. Shader "DepthShader"
  2. {
  3.     Properties{
  4.         _Depth ("Depth", Range (0.5, 50)) = 0
  5.     }
  6.     SubShader
  7.     {
  8.         Tags { "RenderType"="Opaque" }
  9.  
  10.         Pass
  11.         {
  12.             CGPROGRAM
  13.             #pragma vertex vert
  14.             #pragma fragment frag
  15.            
  16.             #include "UnityCG.cginc"
  17.  
  18.             struct appdata
  19.             {
  20.                 float4 vertex : POSITION;
  21.             };
  22.  
  23.             struct v2f
  24.             {
  25.                 float4 vertexWorld : TEXCOORD0;
  26.                 float4 vertex : SV_POSITION;
  27.             };
  28.  
  29.             float _Depth;
  30.            
  31.             v2f vert (appdata v)
  32.             {
  33.                 v2f o;
  34.                 o.vertexWorld = mul(_Object2World, v.vertex);
  35.                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
  36.                 return o;
  37.             }
  38.            
  39.             float4 frag (v2f i) : SV_Target
  40.             {
  41.                 float distFromCamera = distance(_WorldSpaceCameraPos.xyz,i.vertexWorld.xyz);
  42.                 distFromCamera = 1.0 - 1.0/(1.0+_Depth*distFromCamera*distFromCamera);
  43.                 return float4(distFromCamera,distFromCamera,distFromCamera,1.0);
  44.             }
  45.             ENDCG
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment