VignetteShader.shader 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. Shader "Custom/VignetteShader"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. _VRadius ("Vignette Radius", Range(0.0, 1.0)) = 1.0
  7. _VSoft ("Vignette Softness", Range(0.0, 1.0)) = 0.5
  8. }
  9. SubShader
  10. {
  11. // No culling or depth
  12. Cull Off ZWrite Off ZTest Always
  13. Pass
  14. {
  15. CGPROGRAM
  16. #pragma vertex vert
  17. #pragma fragment frag
  18. #pragma multi_compile_instancing
  19. #include "UnityCG.cginc"
  20. struct appdata
  21. {
  22. float4 vertex : POSITION;
  23. float2 uv : TEXCOORD0;
  24. UNITY_VERTEX_INPUT_INSTANCE_ID
  25. };
  26. struct v2f
  27. {
  28. float2 uv : TEXCOORD0;
  29. float4 vertex : SV_POSITION;
  30. UNITY_VERTEX_OUTPUT_STEREO
  31. };
  32. v2f vert(appdata v)
  33. {
  34. v2f o;
  35. UNITY_SETUP_INSTANCE_ID(v);
  36. UNITY_INITIALIZE_OUTPUT(v2f, o); //Insert
  37. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); //Insert
  38. o.vertex = UnityObjectToClipPos(v.vertex);
  39. o.uv = v.uv;
  40. return o;
  41. }
  42. //sampler2D _MainTex;
  43. UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex); //Insert
  44. float _VRadius;
  45. float _VSoft;
  46. fixed4 frag(v2f i) : SV_Target
  47. {
  48. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); //Insert
  49. fixed4 col = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, i.uv); //Insert
  50. // just invert the colors
  51. //col.rgb = 1 - col.rgb;
  52. //return col;
  53. float distFromCenter = distance(i.uv.xy, float2(0.5, 0.5));
  54. float vignette = smoothstep(_VRadius, _VRadius - _VSoft, distFromCenter);
  55. col = saturate(col * vignette);
  56. return col;
  57. }
  58. ENDCG
  59. }
  60. }
  61. }