VignettingShader.shader 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Hidden/VignettingShader" {
  3. Properties {
  4. _MainTex ("Base (RGB)", 2D) = "" {}
  5. _VignetteTex ("Vignette (RGB)", 2D) = "" {}
  6. }
  7. // Shader code pasted into all further CGPROGRAM blocks
  8. CGINCLUDE
  9. #include "UnityCG.cginc"
  10. struct v2f {
  11. float4 pos : POSITION;
  12. float2 uv : TEXCOORD0;
  13. };
  14. // the color should come from a half rezolution buffer
  15. // and target a quarter resolution buffer
  16. sampler2D _MainTex;
  17. sampler2D _VignetteTex;
  18. float4 _MainTex_TexelSize;
  19. float vignetteIntensity;
  20. float blurVignette;
  21. v2f vert( appdata_img v ) {
  22. v2f o;
  23. o.pos = UnityObjectToClipPos(v.vertex);
  24. o.uv = v.texcoord.xy;
  25. return o;
  26. }
  27. half4 frag(v2f i) : COLOR {
  28. half2 coords = i.uv;
  29. half2 uv = i.uv;
  30. coords = (coords - 0.5) * 2.0;
  31. half coordDot = dot (coords,coords);
  32. half4 color = tex2D (_MainTex, uv);
  33. float mask = 1.0 - coordDot * vignetteIntensity * 0.1;
  34. half4 colorBlur = tex2D (_VignetteTex, uv);
  35. color = lerp (color, colorBlur, saturate (blurVignette * coordDot));
  36. return color * mask;
  37. }
  38. ENDCG
  39. Subshader {
  40. Pass {
  41. ZTest Always Cull Off ZWrite Off
  42. Fog { Mode off }
  43. CGPROGRAM
  44. #pragma fragmentoption ARB_precision_hint_fastest
  45. #pragma vertex vert
  46. #pragma fragment frag
  47. ENDCG
  48. }
  49. }
  50. Fallback off
  51. } // shader