1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- Shader "Hidden/VolumetricFog2/FoWBlur" {
- Properties {
- _MainTex ("", 2D) = "white" {}
- _Color ("", Color) = (1,1,1,1)
- }
- SubShader {
- CGINCLUDE
- #include "UnityCG.cginc"
- struct appdata {
- float4 vertex : POSITION;
- float2 texcoord : TEXCOORD0;
- };
- struct v2fCross {
- float4 pos : SV_POSITION;
- float2 uv: TEXCOORD0;
- float2 uv1: TEXCOORD1;
- float2 uv2: TEXCOORD2;
- float2 uv3: TEXCOORD3;
- float2 uv4: TEXCOORD4;
- };
-
- sampler _MainTex;
- float4 _MainTex_ST;
- float4 _MainTex_TexelSize;
-
- v2fCross vertBlurH(appdata v) {
- v2fCross o;
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord;
- float2 inc = float2(_MainTex_TexelSize.x * 1.3846153846, 0);
- o.uv1 = UnityStereoScreenSpaceUVAdjust(v.texcoord - inc, _MainTex_ST);
- o.uv2 = UnityStereoScreenSpaceUVAdjust(v.texcoord + inc, _MainTex_ST);
- float2 inc2 = float2(_MainTex_TexelSize.x * 3.2307692308, 0);
- o.uv3 = UnityStereoScreenSpaceUVAdjust(v.texcoord - inc2, _MainTex_ST);
- o.uv4 = UnityStereoScreenSpaceUVAdjust(v.texcoord + inc2, _MainTex_ST);
- return o;
- }
-
- v2fCross vertBlurV(appdata v) {
- v2fCross o;
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord;
- float2 inc = float2(0, _MainTex_TexelSize.y * 1.3846153846);
- o.uv1 = UnityStereoScreenSpaceUVAdjust(v.texcoord - inc, _MainTex_ST);
- o.uv2 = UnityStereoScreenSpaceUVAdjust(v.texcoord + inc, _MainTex_ST);
- float2 inc2 = float2(0, _MainTex_TexelSize.y * 3.2307692308);
- o.uv3 = UnityStereoScreenSpaceUVAdjust(v.texcoord - inc2, _MainTex_ST);
- o.uv4 = UnityStereoScreenSpaceUVAdjust(v.texcoord + inc2, _MainTex_ST);
- return o;
- }
-
- #define PIX(uv) tex2D(_MainTex,uv)
-
- float4 fragBlur (v2fCross i): SV_Target {
- float4 pixel = PIX(i.uv) * 0.2270270270 + (PIX(i.uv1) + PIX(i.uv2)) * 0.3162162162 + (PIX(i.uv3) + PIX(i.uv4)) * 0.0702702703;
- return pixel;
- }
-
-
- ENDCG
- Pass { // Blur horizontally
- ZTest Always Cull Off ZWrite Off
- Fog { Mode Off }
- CGPROGRAM
- #pragma vertex vertBlurH
- #pragma fragment fragBlur
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma target 3.0
- ENDCG
- }
-
- Pass { // Blur vertically
- ZTest Always Cull Off ZWrite Off
- Fog { Mode Off }
- CGPROGRAM
- #pragma vertex vertBlurV
- #pragma fragment fragBlur
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma target 3.0
- ENDCG
- }
-
- }
- Fallback Off
- }
|