AIによって実験的に作成されたURPで動作する、シミュレーションベースの河川システムです。
HDRPからURPに描画パイプラインを変更するときにWaterシステムが無かったため、研究開発的にAIと作成したシステムになります。
サンプルシーンとして■■ノニラヤ内で使用しているパラメーターで設定した河川データーを2種類格納しています。
- Unity 6.3.10f1以降
- compute shaderが実行出来る環境
- URP-ScreenSpaceReflection optional
- directional lightに対応していません
- deferred+パス専用に作成しています
配布用に体裁を整えていません。
リポジトリを取得後にAssetsフォルダー以下のRiverWaterフォルダーをあなたのプロジェクトにコピーしてください。
あなたのプロジェクトのUniversal Render Data AssetにRiverWaterRendererFeatureを追加して下さい。
- Render Pass Event
描画タイミングを設定できますが、デフォルトのまま変更しないことをお勧めします。 - Layer Mask
Lihgting Maskを設定できます。あなたのシーンの構成に合わせてご使用下さい。 - Update SSR
URP-ScreenSpaceReflection向けに一部のGBufferに追加情報を書きこみます
- コンポーネントの追加
GameObjectにRiverRectSurfaceもしくはRiverCurveSurfaceを追加します。
それぞれ矩形状のメッシュとカーブに沿ったメッシュを生成できます。
制御パラメーターはどちらも同じです。
- マテリアルの設定
コンポーネントが追加されるとメッシュが自動的に作成されます。
メッシュのマテリアルにRiverWaterフォルダー以下のマテリアルを設定してください。 - compute shaderの設定
コンポーネント内のパラメーターのGrid ComputeにRiverWaterフォルダー以下のGridRipple.computeを設定します。
この時点で水面のメッシュが動き始めます。
ここから先はサンプルのパラメーターを参考に調整を行って下さい。
水面に作用するコンポーネントが存在しています。
- WaterObstacle
水面に岩などの障害物と共に使用する、流れを妨害する効果を持ちます。 - WaterRippleSource
水面に周期的な波紋の生成を行います。
またRiverRectSurfaceもRiverCurveSurfaceもRequestWaterHeightAsync()関数経由で非同期で水面の高さを取得する事が出来ます。
