はじめに
今回は不透明オブジェクトとの境目が曖昧になるソフトパーティクルシェーダーを作成していきます。
環境は Unity 2019.3.0f3
Universal Render Pipeline(テンプレートのプロジェクトです)
UnlitGraph を使用しています。
初期設定
Masterノードを以下のように設定します。
以下のように プロパティを設定します。 NearとFarのMaxは自分の好きな値で大丈夫です。
深度バッファを使用するための設定をします。
Universal Render PipelineのSettingファイルを開きDepth Textureにチェックを入れます。
テンプレートプロジェクトの状態ならUniversalRP-HighQualityファイルを設定すればOKです。
ノード作成
ソフトパーティクル部分
Screen PostionのModeをRawNeに,Scene DepthのSmapliをEyeに設定します。
この部分は公式が解説しております。
アルファ
ソフトパーティクル部分のアルファ値と他のアルファ値を乗算してるだけです。
メインカラー
アルファと同じような感じでパーティクルカラーとプロパティのカラーとテクスチャのカラーを乗算してるだけです。
完成図
アルファ
Additve
おまけとしてAdditve版も載せておきます。 内容としてはほぼ同じで最後に最終カラーと最終アルファを乗算したものをColorノードにつないでます。
比較
ソフトパーティクルありとなしで比較してみる。
こっちが無効Ver
こっちが有効Ver
Farに0.35を入れた状態です。
地面との境目が自然になりましたね。
BOOTHで今回作成したものを公開しています braveshop.booth.pm