夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

ゼロから始めるUnityShader開発 画像を使用した透明表現(ShaderGraph)

本日はShader枠です。

今回は実践でよく使用する表現としてオブジェクトの透明表現として、テクスチャに基づいてメッシュの一部を透明にしていく表現を行います。

〇ShaderGraphでの実装

ShaderGraphではコードを意識することなく実装することができるためプロトタイプ開発などで非常に役に立ちます。

①マスタースタックを選択している状態でGraph InspectorウィンドウでSurface TypeTransparentに設定します。

これによってAlphaの出力が現れます。

②マテリアルのインスペクターとしてTexture2D型のパラメータを追加します。

③Alphaの出力に作成したTexture2D型のパラメータをSample Texture2Dノードを介して接続します。

これによってパラメータのテクスチャに適応した画像に応じて透明度が設定されます。

しかし上記の状態ではRGBのR値が透明度のパラメータとして使用されています。

次に画像をグレースケール化します。

SampleTexture2Dノードの出力をMaximamノードにつなぎ、RGBの成分のうち一番大きい値をα値に使用するようにします。

これによってよりアルファテクスチャを生かした透明表現ができます。

〇AlphaThreshold

AlphaThreshouldはα値の閾値という意味です。

使用するためにはマスタースタックでGraph InspectorAlphaThreshouldを有効にする必要があります。

有効にすることでデフォルトで0.5の値が設定されていますが、アルファ値が0.5未満は切り捨てられ0としてカウントされるという効果を与えます。

本日は短いですが以上です。

ShaderGraphでは実装は簡単でしたが実際のShaderLabでのコードを用いた処理ではAlphaBlendingなどを使用する必要があり若干難易度が上がります。

次回はこちらを行っていきます。