【※シェーダー修正(第5回)】エフェクト汎用シェーダー作成編(※中・上級者向け)
【第5回】Smoothstep・Colorの実装 の処理の修正
・前回までのシェーダーの組み方の結果を確認したところ、修正が必要な箇所がありましたのでこちらの記事で修正対応していきます。
1.シェーダーの修正内容
修正予定内容は以下の通りです
①汎用性を上げるためにBaseColorテクスチャのAlpha情報は、Rチャンネルも選択できるようにする。
②グラデーションの色付けを選択した際に、Alpha情報が消えてしまっているので修正する。
①BaseColorテクスチャのAlpha情報の分岐の追加
◆RGB情報とAlpha情報が異なるテクスチャを使用する際、RチャンネルをAlpha情報として使いたい場面が多々あります。
例❶
下記画像のようなRGBA情報のテクスチャがあるとします。(R・G・Bチャンネルは同じ結果となります)
ブレンドモードをAlphaBlendモードでエフェクトを作成した場合、次のような結果になります。
中央の黒い部分が必要ない場合、RチャンネルををAlpha情報として使用することで黒抜きすることが出来ます。
例❷
下記画像のようなAlphaチャンネルがないテクスチャがあるとします。
このテクスチャをAlphaBlendモードでエフェクトを作成した場合、次のような結果になります。
・Alphaチャンネルがないテクスチャの場合、テクスチャ作成ツールでAlpha情報を追加するのはとても面倒です。
・RチャンネルをAlpha情報として使用することで、簡単に黒の領域を透過させることが出来ます。
上記2つの例を通して、RチャンネルをAlpha情報として使用できるようにするメリットが分かったかと思います。
それでは分岐処理を追加していきます。
①【Enumノード】をBlackboardから作成して分岐処理を追加して下さい。
・Alpha情報の使用に関して下記3つの選択肢を用意します。
・使用しない(None)
・RチャンネルをAlpha情報として使用(R)
・AlphaチャンネルをAlpha情報として使用(Alpha)
※使用しない(None)の選択肢を加えた理由としては、AlphaチャンネルにAlpha情報があるテクスチャを使用する際(例❶のような場合)、RチャンネルとAlphaチャンネルの選択肢しかないとテクスチャの黒い領域が必ず透過されてしまうからです。
⇒主にBaseColorテクスチャに対して、マスクでシルエットを決めたい(切り抜きたい)時に使用することになります。
②下記画像を参考に処理を変更して下さい。
②グラデーションの色付けを使用した時の、Alpha情報の処理の修正
・下記画像の通り、グラデーションの色付けを使用した際にAlpha情報が0(黒)になっています。
・このままの処理だとグラデーションの色付けを選択した際に何も映らなくなるので処理を修正していきます。
①【Splitノード】でRGBA情報を分離させ【Combineノード】でRGB情報をまとめます。
②Smoothstep使用分岐処理後のAlpha情報が欲しいので【Combineノード】のAlphaチャンネルに格納します。
これで正しくAlpha情報が追加できました。
③カラーモード分岐処理の【Enumノード】にRGBA情報を接続する。
以上でシェーダーの修正作業は終了です。
お疲れさまでした。
この記事が気に入ったらサポートをしてみませんか?