FadeOut.shader 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. Shader "Custom/FadeOut" {
  2. Properties {
  3. _Color ("Color", Color) = (1,1,1,1)
  4. _MainTex ("Albedo (RGB)", 2D) = "white" {}
  5. _MinDistance ("Minimum Distance", float) = 2
  6. _MaxDistance ("Maximum Distance", float) = 3
  7. }
  8. SubShader {
  9. Tags { "Queue"="Transparent" "RenderType"="Transparent" }
  10. Pass {
  11. ZWrite Off
  12. ColorMask 0
  13. }
  14. CGPROGRAM
  15. #pragma surface surf Lambert alpha:fade
  16. #pragma target 3.0
  17. sampler2D _MainTex;
  18. struct Input {
  19. float2 uv_MainTex;
  20. float3 worldPos;
  21. };
  22. float _MinDistance;
  23. float _MaxDistance;
  24. fixed4 _Color;
  25. void surf (Input IN, inout SurfaceOutput o) {
  26. fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
  27. o.Albedo = c.rgb;
  28. // help: https://developer.download.nvidia.com/cg/index_stdlib.html
  29. float distanceFromCamera = distance(IN.worldPos, _WorldSpaceCameraPos);
  30. float fade = saturate((distanceFromCamera - _MinDistance) / _MaxDistance);
  31. o.Alpha = c.a * fade;
  32. }
  33. ENDCG
  34. }
  35. FallBack "Diffuse"
  36. }