HDRPのFog Volume シェーダーグラフを使ってみました。ローカルボリューメトリックフォグの色と不透明度をシェーダーグラフで制御できます。
Fog Volumeシェーダーグラフを適用するには、Fog Volumeシェーダーのマテリアルを「Local Volumetric Fog」コンポーネントにアタッチします。
サンプルシーンのインポート
Fog Volumeシェーダーグラフのサンプルを閲覧できます。サンプルをインポートするには、パッケージマネージャーのHDRPの「Samples」をクリックします。
下の方にスクロールして「Volumetric Samples」の「Import」ボタンを押します。
インポートすると、Assetsフォルダの中に「Volumetric Samples」フォルダが作られます。
サンプルシーンで、Fog Volume シェーダーグラフのサンプルが見れます。
Local Volumetric Fogゲームオブジェクト
ヒエラルキーでLocal Volumetric Fogゲームオブジェクトをシーンに追加します。
Local Volumetric Fogコンポーネントの「Size」で大きさを変更できます。
Fog Volumeシェーダーグラフを作る
Projectウィンドウで右クリックして、Fog Volume Shader Graphを作ります。
シェーダーグラフを右クリックして、マテリアルを作成します。
マテリアルを設定
Local Volumetric Fogコンポーネントにマテリアルを設定します。Local Volumetric FogコンポーネントのMask Modeを「Material」に変更します。
「Material」という項目が現れます。ここに、作成したマテリアルをドラッグアンドドロップします。
シェーダーグラフを編集
シェーダーグラフをダブルクリックして、シェーダーグラフウィンドウを表示させます。マスタースタックには色と不透明度の入力があります。
サンプルの「Fumes」を参考に、カラフルな煙が立ち上るようなエフェクトを作ってみました。
まず、時間とベクトル(0, -1, 0)をかけます。それを位置に足してスクロールさせます。Perlin FBM Noise 3Dノードにいれると、煙が下から上に立ち上るような見た目になります。
1を足して0.5をかけることで範囲を調節します。Lerpノードで色分けます。これをマスタースタックのBase Colorに接続します。
時間と別の方向をかけます。再度、位置に足します。
SplitノードでX、Z座標を取り出します。上に立ち上るノイズをそれぞれに足します。
別々の値をかけたりSineノードに入れたりして足し合わせます。それをSineノードに入力して複雑な揺れを作ります。
UVノードのY座標を取り出します。これはフォグの高さです。
Smoothstepで値の低い部分を調節します。
One Minusノードで上下を逆さまにします。
これとノイズをかけて、上の部分で煙が消えるようにしました。
これをマスターノードのアルファに接続します。
これで、シェーダーグラフでフォグの色と不透明度を制御できました。