うにてぃブログ

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

【Shader】オブジェクトを重ねた数によって色を変える〜アルファちょっと対応〜

https://hacchi-man.hatenablog.com/entry/2021/02/23/220000hacchi-man.hatenablog.com

以前の記事でアルファ画像が対応できなかったのですが、少し調査したらまだ問題ありますが

アルファを適当できたので、メモがてら追加しておきます

オブジェクトのシェーダー

半透明の描画が必要なのでRenderType を Transparentに変更

        Tags {
            "RenderType"="Transparent"
            "Queue"="Transparent"
        }

描画前のアルファが必要だったので Blend を 以下に変更

Blend OneMinusDstAlpha OneMinusSrcAlpha

アルファが0の場合描画が必要無いので、clip を利用して0の箇所を描画しないように対応

            fixed4 frag (v2f_img i) : SV_Target
            {
                fixed4 color = tex2D(_MainTex, i.uv);
                clip(color.a - 0.0001);
                return color;
            }

奇数を描画するシェーダー

半透明の描画が必要なのでRenderType を Transparentに変更

        Tags {
            "RenderType"="Transparent"
            "Queue"="Transparent+1"
        }

こちらも描画前のアルファでアルファブレンドを行いたいので以下の Blend を追加します

Blend DstAlpha OneMinusDstAlpha

あとは特に変更する必要が無いのでそのまま

結果

もともとあったのが左で、今回対応したのが右になります

まだ一部アルファがおかしいですが、とりあえずアルファ画像を使えるようになりました

また進展があれば追加したいと思います

f:id:hacchi_man:20210212234747p:plain:h300f:id:hacchi_man:20210212234613p:plain:h300