LoginSignup
4
0

More than 1 year has passed since last update.

UE4のNvRTX_Causticsブランチを触ってみる

Last updated at Posted at 2021-12-23

NvidiaはUE4のブランチを提供してくれています。
DLSSやRTXGIはプラグイン化されており、多少話題になっていましたが、RTX_Custicsはエンジンをビルドする必要があるため、あまり使用する人が少ない印象です。
NvRTX_CausticsはRTXの技術を使用したリアルタイムコースティクスを使用することができ、画像のようにリッチな表現を実現することができます。

HighresScreenshot00045.png

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つです。下の方は何ができるかよくわかりません。

Ray traced mesh caustics
レイトレースによるメッシュのリアルタイムコースティクス。Metallic とTranslucentをサポート
Ray traced water caustics
レイトレースによる水面のリアルタイムコースティクス
Enhanced Translucency
ラスターとレイトレースをミックスした手法によるTranslucency
Multi-bounce refraction optimization
マルチバウンスRefraction/Reflectionのパフォーマンス改善とAbsorption(吸収)と全反射の追加
RTGI enhancements
エミッシブマテリアルに対応した新しいGI
DLSS tweaking
DLSSが改善されている?




それぞれの設定方法をみていきます。Githubの内容をまとめ直しただけですが、Githubではコンソールコマンドで弄る前提になっていて分かりにくかったので、ここではエディターの設定だけまとめました。

前提として、プロジェクトでレイトレーシングを有効にしておきます。

#Ray Traced Mesh Caustics

メッシュコースティクスは以下の機能に対応しています

  • ライト4タイプへの対応
  • 複数の光源
  • Reflective(反射)とRefractive(屈折)のコースティックス
  • Dispersion(分散)
  • ソフトコースティクス

HighresScreenshot00003.png

メッシュコースティクスを有効化するには以下の設定を行います

  1. ポストプロセスの[Ray Tracing Mesh Caustics]を有効にする
  2. ライトを設置して、[Cast Mesh Caustics]を有効にする
  3. マテリアルの[Material]>[Cast Ray Traced Reflection Caustics]または[Cast Ray Traced Reflection Caustics]を有効にする

ポストプロセスボリュームの設定

ポストプロセスの[Rendering]>[Ray Tracing Mesh Caustics]の[Enabled]にチェックを入れます。

キャプチャ00.PNG

パラメーターの設定

Ray Tracing Mesh Caustics

Ray Tracing Mesh Caustics
メッシュコースティクスの有効/無効化
Resolution Override
解像度の上書き。大きくするとパフォーマンスが落ちる
Intensity
反射光の明るさを設定 ![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/9893017f-df6a-c91e-c4ca-193c33e0f56c.png)
Resolution Override
Max Trace Depth
バウンスの最大数の制限。

002.png

Final Cull Threshold
カリングカラーのしきい値。パフォーマンスのためには、コースティクスが消え始めるくらいの値に調整する。(Midも同様) ![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/d26ac3ae-c458-bfac-e18f-a4299cbf68b0.png)
Mid Cull Threshold
カラーカリングのしきい値。 ![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/96c70f17-804a-4eda-03a0-b2d118e1b7c3.png)
Splat Size
Splat(はじけ?)のサイズ。 ![004-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/ebcacd5c-afc1-c55b-1652-a4c63028d79b.png)
Enable Dispersion
分散の有効/無効化。プリズム表現をしたい場合は有効化する(マテリアル側の設定も必要) ![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/504eaa88-53fd-70c7-232b-f9a03a292ae5.png)
Enable Temporal Filtering
Temporal Filteringの有効/無効化。フリッカーの低減してくれる。フィルターの強度は詳細設定で変えれます
Jitter
Jitterの強さ。
詳細設定はよくわからないので触れません

ライトの作成

ライトを設置して、[Ray Tracing]の[Cast Mesh Caustics]にチェックを入れます。
コースティクスを見たいだけならRect Lightがわかりやすいです。
キャプチャ01.PNG

パラメーターの設定
Mesh Caustics Precision
コースティクスの解像度を設定。大きくするとパフォーマンスが落ちる
Mesh Caustics Softness
コースティクスのソフトネスを設定。 ![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/554ce37f-c8d8-e948-399a-4380bd49428e.png)

マテリアルの作成

コースティクスを表現したいマテリアルを用意し、反射の場合は[Cast Ray Traced Reflection Caustics]、屈折の場合は[Cast Ray Traced Reflection Caustics]を有効にします

Reflection(反射)の設定

Reflection Causticsを有効化するには、メタリックマテリアルを作成し、
[Meterial]の[Cast Ray Traced Refrection Caustics]を有効化します。
キャプチャ02(1).PNG

Refrection(屈折)の設定

Refraction Causticsを有効化するには、半透明マテリアルである必要があるため、[Blend Mode]を"Translucent"にします。
そして、[Meterial]の[Cast Ray Traced Refrection Caustics]を有効化します。
キャプチャ03(1).PNG

パラメーターの設定
屈折
マテリアルの"Refraction"がそのままコースティクスの屈折率(IOR)に影響します ![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/50adcafe-6d48-d750-d826-dc9e92fd8a84.png)
Ray Traced Caustics Dispersion Amount
分散の量を指定 ![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/2549659e-b457-9f26-4fe4-d7b4e14b534d.png)
Ray Traced Caustics Use CustomDepth As Dspersion Amount
"CustomData0"の入力を分散の量として扱う。
Ray Traced Jittered Dispersion
分散のジッターサンプルを有効/無効化。ちょっと何言ってるかわからなかった。 ![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/6ead1b64-8d14-0800-490a-69317ad57166.png)

Ray Traced Water Caustics

ウォーターコースティクスでは以下の機能に対応しています

  • ライト4タイプへの対応
  • 複数の光源
  • Reflective(反射)とRefractive(屈折)のコースティックス
  • Dispersion(分散)
  • ソフトコースティクス
  • カスケードされたコースティックスマップ


Water Causticsを有効にするには以下の設定を行います

  1. ポストプロセスで[Ray Tracing Water Caustics]>[Caustics Type]を[Photon Difference Scattering]か[Static Caustic Mesh]に変更する
  2. ライトを設置して、[Cast Water Caustics]を有効にする
  3. Translucentマテリアルを適用したメッシュアクターの[Ray Tracing]>[Evaluate Ray Tracing Water Caustics]を有効にする

HighresScreenshot00034.png

Translucentではなく、SingleLayerWaterでも、マテリアルの[Ray Traced Water Caustics For SingleLayerWater]にチェックを入れることでもコースティクスを有効化できます。

ポストプロセスボリュームの設定

ポストプロセスの[Rendering]>[Ray Tracing Water Caustics]の[Caustics Type]を[Photon Difference Scattering]か[Static Caustic Mesh]に変更します。
キャプチャ06.PNG

パラメーターの設定
見た目に関わるのはタイプとデノイズとDispersion、Intensityくらい?他はパフォーマンス向上のために弄る感じな気がする。
Caustics Type
コースティクスのタイプを設定。"Photon Difference Scattering"は柔軟性があり、すべてのライトタイプに対してコースティックスをレンダリングするのに適している。"Procedural Caustic Mesh"は、比較的低解像度のコースティックスマップでもシャープなコースティックスを生成することがでるが、カスケードは機能しない。 ![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/f51eb55b-7004-a731-2a28-0867b3c6bb6a.png)
Caustics Buffer Scale
コースティクスのバッファーサイズを設定。
Directional Lighting Follow Camera
コースティクスマップのキャプチャをDrectional Lightの向きに合わせるかどうか。無効にすると、ライトの方向からではなく、常にカメラの上部からキャプチャされる
Directional Lighting Look At
?
Directional Lighting Range
コースティクスマップをキャプチャ範囲を指定。範囲を広くするとマップの解像度が高くなる
Color
コースティクスの色。
Denoise Passes
デノイズのイテレーション回数。 ![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/78f8ef91-7a7e-d3f8-7547-4759697fe143.png)
Disersion Intensity
Dispersion(分散)の強さ。 ![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887206/5ec977ec-8e44-bd93-ab71-93d5247f9115.png)
Disersion Offset
Dispersion(分散)のオフセット値。
Reflection Intensity
反射光の強さ。
Max Reflection Ray Distance
反射光の最大距離。
Min Reflection Ray Distance
反射光の最小距離。
Refraction Intensity
屈折光の強さ。
Max Reflection Ray Distance
屈折光の最大距離。
Min Reflection Ray Distance
屈折光の最小距離。
Reflect BackFace Culling Threshold
反射の背面カリングのしきい値。
Refract BackFace Culling Threshold
屈折の背面カリングのしきい値。

ライトの作成

ライトを設置して、[Ray Tracing]の[Cast Wesh Caustics]にチェックを入れます。
キャプチャ04.PNG

パラメーターの設定
Water Caustics Precision
コースティクスの解像度を設定。大きくするとパフォーマンスが落ちる
Num Water Caustics Map Cascades
カスケードマップのレベルを設定。[Photon Difference Scattering]でのみ有効
Water Caustics Map Cascade Scale
カスケードマップのスケールを設定

スタティックメッシュアクターの設定

スタティックメッシュアクターにTranslucentマテリアルを適用後
、[Rendering]の[Evaluate Ray Tracing Water Caustics]にチェックを入れます。
キャプチャ05.PNG

Enhanced Hybrid Translucency

ラスターとレイトレーシングを組み合わせた2つのTransluceny機能が追加されています。

機能を有効にするには、ポストプロセスの[Translucency]の[Type]を[Hybrid Translucency]または[Enhanced Ray Tracing]に変更する必要があります。
0000.jpg

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を使うのが良い気がします。
010.png

Multi-bounce Refraction Optimization

機能は

  • TranslucentマテリアルのAbsorption(吸収)
  • スループットカリング

です

Absorption(吸収)を有効にするには以下の操作が必要です。

  1. Raytracing translucencyを有効にする
  2. ポストプロセスボリュームで [Enable Absorption] をチェックする
  3. Absorption(吸収)を有効にしたいマテリアルを選び、マテリアルエディタで [Ray Traced Translucency Absorption]にチェックする

014.png

ポストプロセスキャプチャ08.PNG
マテリアルキャプチャ09.PNG

スループットカリングはポストプロセスの[Ray Tracing Translucency]の中の[Min. Reflection Thtoughout][Min. Refraction Thtoughout]で設定できます。
キャプチャ10.PNG

Enhanced GI

Enhanced GIでは以下の機能に対応しています。

  • New GI Denoiser
  • Emissiveマテリアルへの対応
  • 1/4および1/8解像度に対応

New GI Denoiserを有効にするには、以下の手順が必要です。

  1. UE4 でRaytracing GIを有効にする
  2. ポストプロセスのボリューム設定で、[GI Denoise Type]を "New Denoiser"に設定する
    キャプチャ07.PNG

デノイザーのパラメーターはコンソールコマンドでしか変更できないようなので深くは掘りません。

DLSS tweaking

???

Githubにも特に説明がなかったのでわかりません。
DLSSプラグインが更新されている?
DLSS後にパーティクルをレンダリングできるようになっているのと、DoF不具合が調整されているらしいです。

4
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0