You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.5 KiB

  1. // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
  2. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  3. // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
  4. Shader "Hidden/ProGrids/pg_GridShader"
  5. {
  6. Properties
  7. {
  8. _AlphaCutoff ("Fade Cutoff", float) = .1
  9. _AlphaFade ("Fade Start", float) = .6
  10. _Color ("Color", Color) = ( .5, .5, .5, .8 )
  11. }
  12. SubShader
  13. {
  14. Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
  15. Lighting Off
  16. ZTest LEqual
  17. Blend SrcAlpha OneMinusSrcAlpha
  18. ZWrite Off
  19. Pass
  20. {
  21. CGPROGRAM
  22. #pragma vertex vert
  23. #pragma fragment frag
  24. #include "UnityCG.cginc"
  25. float _AlphaCutoff;
  26. float _AlphaFade;
  27. float4 _Color;
  28. struct appdata
  29. {
  30. float4 vertex : POSITION;
  31. float3 normal : NORMAL;
  32. float4 color : COLOR;
  33. };
  34. struct v2f
  35. {
  36. float4 pos : SV_POSITION;
  37. float4 world : TEXCOORD0;
  38. float4 color : COLOR;
  39. float3 normal : TEXCOORD1;
  40. };
  41. v2f vert (appdata v)
  42. {
  43. v2f o;
  44. o.pos = UnityObjectToClipPos(v.vertex);
  45. o.world = mul(unity_ObjectToWorld, v.vertex);
  46. o.normal = mul(unity_ObjectToWorld, float4(v.normal, 0)).xyz;
  47. o.color = v.color;
  48. return o;
  49. }
  50. half4 frag (v2f i) : COLOR
  51. {
  52. float3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.world.xyz);
  53. float d = abs(dot(i.normal, viewDir));
  54. float alpha = smoothstep(_AlphaCutoff, _AlphaFade, d);
  55. float4 col = i.color;
  56. col.a *= alpha;
  57. return col;
  58. }
  59. ENDCG
  60. }
  61. }
  62. }