LoginSignup
1
0

More than 3 years have passed since last update.

AndroidでPost Effectをつけると画面が真っ暗になる問題

Last updated at Posted at 2020-07-15

問題

CameraにOnRenderImageをoverrideしたスクリプトをアタッチする形式でポストエフェクトを作成したところUnityEditor上では意図通りの動作を確認できるのに、Androidの実機で確認すると画面が真っ黒になるという問題に遭遇しました。

解決方法

.shaderZTest Alwaysを使うようにすると、意図通り動くようになりました。


Shader "Custom/HorizontalScaleShader"
{
      Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        [PowerSlider(1)]_HorizontalScale ("HorizontalScale", Range(0.01,1.00)) = 1
    }

    SubShader {
        Pass {
            Tags { "RenderType"="Opaque" }
            ZTest Always

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            float _HorizontalScale;

            struct v2f {
                half4 pos : POSITION;
                half2 uv : TEXCOORD0;
            };

            float4 _MainTex_ST;

            v2f vert(appdata_base v) {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }

            half4 frag(v2f i) : COLOR {
                half2 uv = half2(i.uv);
                float horizontalScale = _HorizontalScale;
                uv.x = horizontalScale*uv.x+(1.0-horizontalScale)*0.5;
                fixed4 col = tex2D(_MainTex, uv);
                return col;
            }

            ENDCG
        }
    }
    FallBack "Diffuse"
}

結果

実機で動いた

posteffect.gif

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0