【Unity】ShaderGraphでソフトパーティクルシェーダーを作成する

はじめに

今回は不透明オブジェクトとの境目が曖昧になるソフトパーティクルシェーダーを作成していきます。

環境は Unity 2019.3.0f3

Universal Render Pipeline(テンプレートのプロジェクトです)

UnlitGraph を使用しています。

初期設定

Masterノードを以下のように設定します。

f:id:Brave345:20200226141349p:plain

以下のように プロパティを設定します。 NearとFarのMaxは自分の好きな値で大丈夫です。

f:id:Brave345:20200226141337p:plain

深度バッファを使用するための設定をします。

Universal Render PipelineのSettingファイルを開きDepth Textureにチェックを入れます。

f:id:Brave345:20200226141304p:plain

テンプレートプロジェクトの状態ならUniversalRP-HighQualityファイルを設定すればOKです。

ノード作成

ソフトパーティクル部分

Screen PostionのModeをRawNeに,Scene DepthのSmapliをEyeに設定します。

f:id:Brave345:20200226141456p:plain

この部分は公式が解説しております。

www.youtube.com

アルファ

ソフトパーティクル部分のアルファ値と他のアルファ値を乗算してるだけです。

f:id:Brave345:20200226141518p:plain

メインカラー

アルファと同じような感じでパーティクルカラーとプロパティのカラーとテクスチャのカラーを乗算してるだけです。

f:id:Brave345:20200226141557p:plain

完成図

アルファ

f:id:Brave345:20200226141630p:plain

Additve

おまけとしてAdditve版も載せておきます。 内容としてはほぼ同じで最後に最終カラーと最終アルファを乗算したものをColorノードにつないでます。

f:id:Brave345:20200226141646p:plain

比較

ソフトパーティクルありとなしで比較してみる。

こっちが無効Ver

f:id:Brave345:20200226141714p:plain

こっちが有効Ver

Farに0.35を入れた状態です。

f:id:Brave345:20200226141724p:plain

地面との境目が自然になりましたね。