Search Unity

Bug Blur shader causes my screen to invert Android

Discussion in 'Shaders' started by FogCZ, Nov 30, 2022.

  1. FogCZ

    FogCZ

    Joined:
    Apr 30, 2020
    Posts:
    30
    So I have a pretty basic Blur shader I use for my UI as the background behind some UI elements. When I test it in the Editor it works perfectly, but when I build the game for Android, it flips everything behind the blur effect. So I either need someone to help me solve this issue or someone with knowledge about shader who would help me actually invert it back using the shader itself.

    Code (CSharp):
    1. GrabPass { }
    2.      Pass
    3.      {
    4.          CGPROGRAM
    5.          #pragma vertex vert
    6.          #pragma fragment frag
    7.          #include "UnityCG.cginc"
    8.          struct appdata
    9.          {
    10.              float4 vertex : POSITION;
    11.              float3 normal : NORMAL;
    12.          };  
    13.          struct v2f
    14.          {
    15.              float4 position : POSITION;
    16.              float4 screenPos : TEXCOORD0;
    17.          };
    18.          half _BlurAmount;
    19.          fixed4 _Color;
    20.          sampler2D _GrabTexture : register(s0);
    21.          v2f vert(appdata input)
    22.          {
    23.              v2f output;
    24.              output.position = UnityObjectToClipPos(input.vertex);
    25.              output.screenPos = output.position;
    26.              return output;
    27.          }
    28.          half4 pixel;
    29.          half2 uv;
    30.          fixed i = 0;
    31.          half iBlur;
    32.          half4 frag(v2f input) : SV_Target
    33.          {  
    34.              uv = input.screenPos.xy / input.screenPos.w;
    35.              uv.x = (uv.x + 1) * .5;
    36.              uv.y = 1.0 - (uv.y + 1) * .5;
    37.              pixel = 0;
    38.              pixel += tex2D(_GrabTexture, half2(uv.x + 1.5 * _BlurAmount, uv.y + 0.5 * _BlurAmount));
    39.              pixel += tex2D(_GrabTexture, half2(uv.x + 1.5 * _BlurAmount, uv.y - 0.5 * _BlurAmount));
    40.              pixel += tex2D(_GrabTexture, half2(uv.x + 1.5 * _BlurAmount, uv.y - 1.5 * _BlurAmount));
    41.              pixel += tex2D(_GrabTexture, half2(uv.x + 1.5 * _BlurAmount, uv.y - 2.5 * _BlurAmount));
    42.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y + 2.5 * _BlurAmount));
    43.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y + 1.5 * _BlurAmount));
    44.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y + 0.5 * _BlurAmount));
    45.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y - 0.5 * _BlurAmount));
    46.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y - 1.5 * _BlurAmount));
    47.              pixel += tex2D(_GrabTexture, half2(uv.x + 0.5 * _BlurAmount, uv.y - 2.5 * _BlurAmount));
    48.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y + 2.5 * _BlurAmount));
    49.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y + 1.5 * _BlurAmount));
    50.            
    51.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y + 0.5 * _BlurAmount));
    52.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y - 0.5 * _BlurAmount));
    53.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y - 1.5 * _BlurAmount));
    54.              pixel += tex2D(_GrabTexture, half2(uv.x - 0.5 * _BlurAmount, uv.y - 2.5 * _BlurAmount));
    55.              pixel += tex2D(_GrabTexture, half2(uv.x - 1.5 * _BlurAmount, uv.y + 2.5 * _BlurAmount));
    56.              pixel += tex2D(_GrabTexture, half2(uv.x - 1.5 * _BlurAmount, uv.y + 1.5 * _BlurAmount));
    57.              pixel += tex2D(_GrabTexture, half2(uv.x - 1.5 * _BlurAmount, uv.y + 0.5 * _BlurAmount));
    58.              pixel += tex2D(_GrabTexture, half2(uv.x - 1.5 * _BlurAmount, uv.y - 0.5 * _BlurAmount));
    59.              pixel += tex2D(_GrabTexture, half2(uv.x, uv.y));
    60.              return (pixel / 20.0) * _Color;
    61.          }
    62.          ENDCG
    63.      }
    64. }
     

    Attached Files: