NvidiaはUE4のブランチを提供してくれています。
DLSSやRTXGIはプラグイン化されており、多少話題になっていましたが、RTX_Custicsはエンジンをビルドする必要があるため、あまり使用する人が少ない印象です。
NvRTX_CausticsはRTXの技術を使用したリアルタイムコースティクスを使用することができ、画像のようにリッチな表現を実現することができます。
11月にこっそり4.27版のブランチが公開されていたので、今回はそちらを使ってみたいと思います。
技術的なことは難しくてわからないので、Nvidiaのブログ等をみてもらうこととして、今回は見た目重視で設定方法をまとめてみました。
ビルド手順
事前準備
・NvidiaのGPU
・VisualStudio2019のインストール
・UnrealEngineアカウントとGithubアカウントの連携
特筆することはありませんが、エンジンを自分でビルドする必要があるのでVisualStudioのインストールとGithubアカウントの連携は必須です。あと、当然ですがRTXの技術なのでNvidiaのGPU(最低要件はわかりませんが、UE4でレイトレが使えれば動くはず)も必要です。
準備が問題なければ、GithubからNvRTX_Causticsのブランチをクローンします。今回は4.27.1のブランチを使用します。
リポジトリをクローンしたら、Setup.bat、GenerateProjectFiles.batの順に実行してプロジェクトファイルを生成後、VisualStudioからビルドします。
エンジンのビルドはソースからビルドする方法と同じなので他の記事を参考にしてください。
機能
メインの機能はコースティクスだと思いますが、そのほかにも機能が含まれています。
NvRTX_Causticsのリポジトリの中に含まれているのは、以下の6つです。下の方は何ができるかよくわかりません。
それぞれの設定方法をみていきます。Githubの内容をまとめ直しただけですが、Githubではコンソールコマンドで弄る前提になっていて分かりにくかったので、ここではエディターの設定だけまとめました。
前提として、プロジェクトでレイトレーシングを有効にしておきます。
#Ray Traced Mesh Caustics
メッシュコースティクスは以下の機能に対応しています
- ライト4タイプへの対応
- 複数の光源
- Reflective(反射)とRefractive(屈折)のコースティックス
- Dispersion(分散)
- ソフトコースティクス
メッシュコースティクスを有効化するには以下の設定を行います
- ポストプロセスの[Ray Tracing Mesh Caustics]を有効にする
- ライトを設置して、[Cast Mesh Caustics]を有効にする
- マテリアルの[Material]>[Cast Ray Traced Reflection Caustics]または[Cast Ray Traced Reflection Caustics]を有効にする
ポストプロセスボリュームの設定
ポストプロセスの[Rendering]>[Ray Tracing Mesh Caustics]の[Enabled]にチェックを入れます。
パラメーターの設定
Ray Tracing Mesh Caustics
ライトの作成
ライトを設置して、[Ray Tracing]の[Cast Mesh Caustics]にチェックを入れます。
コースティクスを見たいだけならRect Lightがわかりやすいです。
パラメーターの設定
マテリアルの作成
コースティクスを表現したいマテリアルを用意し、反射の場合は[Cast Ray Traced Reflection Caustics]、屈折の場合は[Cast Ray Traced Reflection Caustics]を有効にします
Reflection(反射)の設定
Reflection Causticsを有効化するには、メタリックマテリアルを作成し、
[Meterial]の[Cast Ray Traced Refrection Caustics]を有効化します。
Refrection(屈折)の設定
Refraction Causticsを有効化するには、半透明マテリアルである必要があるため、[Blend Mode]を"Translucent"にします。
そして、[Meterial]の[Cast Ray Traced Refrection Caustics]を有効化します。
パラメーターの設定
Ray Traced Water Caustics
ウォーターコースティクスでは以下の機能に対応しています
- ライト4タイプへの対応
- 複数の光源
- Reflective(反射)とRefractive(屈折)のコースティックス
- Dispersion(分散)
- ソフトコースティクス
- カスケードされたコースティックスマップ
Water Causticsを有効にするには以下の設定を行います
- ポストプロセスで[Ray Tracing Water Caustics]>[Caustics Type]を[Photon Difference Scattering]か[Static Caustic Mesh]に変更する
- ライトを設置して、[Cast Water Caustics]を有効にする
- Translucentマテリアルを適用したメッシュアクターの[Ray Tracing]>[Evaluate Ray Tracing Water Caustics]を有効にする
Translucentではなく、SingleLayerWaterでも、マテリアルの[Ray Traced Water Caustics For SingleLayerWater]にチェックを入れることでもコースティクスを有効化できます。
ポストプロセスボリュームの設定
ポストプロセスの[Rendering]>[Ray Tracing Water Caustics]の[Caustics Type]を[Photon Difference Scattering]か[Static Caustic Mesh]に変更します。
パラメーターの設定
ライトの作成
ライトを設置して、[Ray Tracing]の[Cast Wesh Caustics]にチェックを入れます。
パラメーターの設定
スタティックメッシュアクターの設定
スタティックメッシュアクターにTranslucentマテリアルを適用後
、[Rendering]の[Evaluate Ray Tracing Water Caustics]にチェックを入れます。
Enhanced Hybrid Translucency
ラスターとレイトレーシングを組み合わせた2つのTransluceny機能が追加されています。
機能を有効にするには、ポストプロセスの[Translucency]の[Type]を[Hybrid Translucency]または[Enhanced Ray Tracing]に変更する必要があります。
Hybrid Translucency
Githubの説明のr.RayTracing.HybridTranslucency 1に相当するもののはずです。ラスターTranslucencyの一部として、レイトレースされたレイヤーを合成される形にです。
こちらを有効にするためには、[プロジェクト設定]から[Rendering]>[Ray Tracing]のHybrid Translucencyにチェックを入れる必要があります。
Enhanced Ray Tracing
Githubの説明のr.RayTracing.HybridTranslucency 2に相当するもののはずです。
ラスターTranslucencyと反射、屈折、OIT(OIT(Order Independent Transparency)サポートを含む完全なレイトレースTranslucencyを混在させることができます。
レイトレーシング下でTranslucentマテリアルのパーティクルを使用するのに有効な気がします。
比べてみると、Hybrid Translucencyはラスターに毛が生えた程度でパフォーマンスもそこまで変わらなさそうなので、基本的にはEnhanced Ray Tracingを使うのが良い気がします。
Multi-bounce Refraction Optimization
機能は
- TranslucentマテリアルのAbsorption(吸収)
- スループットカリング
です
Absorption(吸収)を有効にするには以下の操作が必要です。
- Raytracing translucencyを有効にする
- ポストプロセスボリュームで [Enable Absorption] をチェックする
- Absorption(吸収)を有効にしたいマテリアルを選び、マテリアルエディタで [Ray Traced Translucency Absorption]にチェックする
ポストプロセス
マテリアル
スループットカリングはポストプロセスの[Ray Tracing Translucency]の中の[Min. Reflection Thtoughout]と[Min. Refraction Thtoughout]で設定できます。
Enhanced GI
Enhanced GIでは以下の機能に対応しています。
- New GI Denoiser
- Emissiveマテリアルへの対応
- 1/4および1/8解像度に対応
New GI Denoiserを有効にするには、以下の手順が必要です。
デノイザーのパラメーターはコンソールコマンドでしか変更できないようなので深くは掘りません。
DLSS tweaking
???
Githubにも特に説明がなかったのでわかりません。
DLSSプラグインが更新されている?
DLSS後にパーティクルをレンダリングできるようになっているのと、DoF不具合が調整されているらしいです。