Unity Standard Assets の水面に関するメモ
この記事について
- Unity の Standard Assets に水面の例がいくつかあって, どれがどういう機能を持っているかがややこしいです.
- 今回, それらの特徴や実装について調べてみたので下にメモしていきます.
- 順に機能が増えていきます.
(A) WaterBasic : シンプル
- スクリプト : Water(Basic)\Scripts\WaterBasic.cs
- シェーダ : Water(Basic)\Shaders\FXWaterBasic.shader
- 反射 : なし
- 屈折 : なし
- 頂点変位 : なし
(B) Water : 普通
- スクリプト : Water\Scripts\Water.cs
- シェーダ : Water\Shaders\FXWaterPro.shader
- 反射 : あり. 別バッファに物体を描画
- 屈折 : あり. さらに別バッファに物体を描画
- 頂点変位 : なし
(C) WaterTile : やや重め
- スクリプト : Water\Scripts\WaterTile.cs
- シェーダ : Water\Water4\Shaders\FXWater4Advanced.shader と FXWater4Simple.shader ( 違いは泡があるかどうか )
- 反射 : あり. 別バッファに物体を描画. PlanarReflection.cs を利用する
- 屈折 : あり. GrabPass を使うタイプ.
- 頂点変位 : あり. Gerstner 波で 4 つの sin/cos 波を合成. Displace.cs または GerstnerDisplace.cs でシェーダバリエーションを有効化
- "Chapter 1. Effective Water Simulation from Physical Models" GPU Gems 1