うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】アルファテクスチャを利用できる Shader

通常テクスチャを表示する Shader では Alpha のあるテクスチャを利用すると
下図のようにAlpha部分は無く表示がおかしくなってしまいます

f:id:hacchi_man:20200805004046p:plain:h200

Shader "Custom/Texture"
{
    Properties
    {
        [NoScaleOffset]
        _MainTex("Texture", 2D) = "white" {}
    }

    SubShader
    {
        Tags { "RenderType" = "Opaque" }
 
        Pass
        {
            CGPROGRAM
            #pragma vertex vert_img
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;

            fixed4 frag (in v2f_img i) : SV_Target
            {
                return tex2D(_MainTex, i.uv);
            }
            ENDCG
        }
    }
}

そのため、Queue の変更と Alpha Blend の設定をしてあげる必要があります

    SubShader
    {
        Tags { "RenderType" = "Opaque" }

上記を下記に書き換える

    SubShader
    {
        Tags {"Queue"="Transparent"}

        Blend SrcAlpha OneMinusSrcAlpha

そうすると正しくアルファが表示されます

f:id:hacchi_man:20200805004313p:plain:h200