【Unity】パーティクルのボリューム表現
煙や雲を表現する場合、パーティクルのビルボードを使って実装するのが一般的です。(真面目に煙や雲のポリゴンモデルを用意して描画すると負荷が凄い事になってしまうので・・・)
ただ、この方法は処理が軽くなるけど四角形ポリゴンにテクスチャを貼り付けてるだけなのでボリューム感が出ない事があります。
ライトの影響を受ければ立体感が出るはずなので単純に光源からの距離に応じて頂点単位で明るさを調整するシェーダーを適用してみました。
だいぶマシになりましたがもう少しボリューム感が欲しいです ^^;
最終的にフラグメントシェーダーでテクスチャのα値を雲の厚みとして扱うようにして明るさの調整をしてみました。
だいぶ良い感じになりました。
テクスチャのα値とは別で設定したい場合は専用のテクスチャを用意してそちらの値を参照するのが良さそうです。
プロジェクト一式はこちらにアップしました。
github.com
今回はなるべく低コストでモバイルでも動かせるものにしたかったので擬似表現になりましたが、多光源対応やより精度の高いボリューム表現をしたい場合はボリュームレンダリングを使うとかになると思います。