夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UnityHDRPでWater Surface機能を使用する

本日はUnity枠です。

Unityではクラシックなレンダーパイプラインとは別にScriptableRenderPipeline(SRP)と呼ばれるグラフィックパイプラインをC#でカスタム可能なパッケージがあります。

このSRPの中でUnityが提供しているテンプレートが2種類あり、そのうちのハイエンドデバイスでの高品質のグラフィックを実現するものがHDRPです。

HDRPではURP以上に高品質な機能を利用できる反面通常のアプリケーションとしてHoloLensをはじめとするxRデバイスに向けたアプリケーション開発にはほぼ対応していません。(例外的にVarjoXR3などはHDRPがデフォルトで推奨されています。)

筆者も普段xRアプリケーションを開発しているためHDRPを積極的に利用する機会はなく、今回久々に起動しています。

今回はWater Surface機能を利用していきます。

〇Water Surfaceとは?

Water SurfaceはUnity2022以降のHDRPで実装された水シュミレーションシステムです。

HDRPに組み込まれているため外部パッケージを使用することなく利用が可能です。

ただ水が描画されているだけでなく屈折などの表現も行われています。

ボリュームレンダリングによって水の中の描画も行えます。

今回はこのWater Surfaceを使用する設定を行います。

〇Water Surfaceの設定法

今回は以下の環境で行います。

・Unity 2022.2.12

・HDRP 14.06

・Widnow11PC

①新規でUnityプロジェクトを作成します。

②シーン上のポストプロセスなどを管理するオブジェクトSky and Fog VolumeVolumeコンポーネントからAdd Overrideを選択しWater Renderingを追加します。

③Wager RenderingからStateにチェックを入れEnableへ設定を変えます。

ProjectSettingsを開きQualityタブからHDRPの設定を開きます。

⑤Rendering設定のWaterタブからEnableをチェックを入れ有効化します。

⑥最後にHDRP Gloval Settingsの設定を行います。 これはProjectSettingsのGraphicsタブ内からアクセスできます。

FrameSettingsから3つのWaterにチェックを入れます。

Realtime Reflaction

Baked or CustomReflection

CameraRendering

以上で設定が完了しました。

⑦シーン上に適当なゲームオブジェクトを作成し、Water Surfaceコンポーネントを追加します。

これによりシーン上に海が現れます。

本日は以上です。