Advertisement
SebastianLague

Edge blend shader

Dec 16th, 2016
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. Shader "Custom/EdgeBlend" {
  2. Properties {
  3. blendFactor ("Edge blend", Range(0.01,5)) = .15
  4. }
  5. Subshader {
  6. Tags {"RenderType"="Transparent" "Queue"="Transparent"}
  7.  
  8. Lod 500
  9. ColorMask RGB
  10.  
  11. Pass {
  12. Blend SrcAlpha OneMinusSrcAlpha
  13. ZTest LEqual
  14. ZWrite Off
  15. Cull Off
  16.  
  17. CGPROGRAM
  18.  
  19. #pragma target 3.0
  20.  
  21. #pragma vertex vert
  22. #pragma fragment frag
  23.  
  24. ENDCG
  25. }
  26.  
  27. CGINCLUDE
  28.  
  29. #include "UnityCG.cginc"
  30.  
  31. struct appdata
  32. {
  33. float4 vertex : POSITION;
  34. float3 normal : NORMAL;
  35. };
  36.  
  37. struct v2f
  38. {
  39. float4 pos : SV_POSITION;
  40. float4 screenPos : TEXCOORD3;
  41.  
  42. };
  43.  
  44. sampler2D_float _CameraDepthTexture;
  45. float blendFactor;
  46.  
  47. v2f vert(appdata_full v)
  48. {
  49. v2f o;
  50. o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//
  51. o.screenPos = ComputeNonStereoScreenPos(o.pos);
  52. return o;
  53. }
  54.  
  55. half4 frag( v2f i ) : SV_Target
  56. {
  57.  
  58. half depth = SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.screenPos));
  59. depth = LinearEyeDepth(depth);
  60. float baseColour = saturate(blendFactor * (depth-i.screenPos.w)).x;
  61.  
  62. return baseColour;
  63. }
  64.  
  65.  
  66. ENDCG
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement