『鳴潮』におけるレイトレーシング――光で描くアニメ風オープンワールド | Unreal Fest Tokyo 2025

1.3K Views

December 09, 25

スライド概要

本講演へのアンケートにご協力をお願い致します:
https://forms.gle/ZFC88mHsDYwK5ZnS6

講演動画:
https://youtu.be/9npJMgz4gAE

講演内容:



講演者:
Xin Wang(KURO GAMES)

Unreal Fest Tokyo 2025公式サイト:
https://www.unrealengine.com/ja/events/unreal-fest-tokyo-2025

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

『鳴潮』におけるレイトレーシング: 光で描くアニメ風オープンワールド 王鑫(Wang Xin)

2.

鳴潮 オープンワールド アクションゲーム

3.

01 レンダリングパイプラインのおさらい アジェンダ 02 鳴潮におけるレイトレーシング 03 技術選定のプロセス&迅速な検証 04 機能の実装と統合 05 パフォーマンス最適化の実践

4.

レンダリングパイプラインのおさらい Rasterization Ray Tracing 各triangle 各pixel(ray) 各pixel 各triangle Triangleがpixelをカバーするか? Shadingを行う TriangleがRayに当たるか? Shadingを行う

5.

レンダリングパイプラインのおさらい Application Input Vertex Shader Rasterization Pipeline Rasterization Input → VS → Rasterization → PS → Ouput Pixel Shader Frame Buffer Output

6.

レンダリングパイプラインのおさらい Ray Generation (DXR) TraceRay [payload] Ray Tracing Pipeline Any Hit Ray Traversal Ray Gen → → Accept Hit → Miss Ray Traversal → → Intersection → Closest Hit Intersection Any Hit No Miss Hit? Yes Closest Hit

7.

レンダリングパイプラインのおさらい Hybrid Rendering Pipeline Geometry GBuffer RayTracing Indirect Lighting Reflections Shadows ...... Lighting

8.

鳴潮におけるレイトレーシング レイトレーシングによって、どのような機能を 実現したのか? Ray Traced Ray Traced Ray Traced Reflections Global Illumination Shadows

9.

鳴潮におけるレイトレーシング Ray Traced Reflections

10.

鳴潮におけるレイトレーシング Ray Traced Global Illumination

11.

鳴潮におけるレイトレーシング Ray Traced Shadows

16.

技術選定のプロセス&迅速な検証 プロジェクトの 要件と状況 Time of day アニメ調 ダイナミックラ レンダリング イティングシス スタイル テム 32km×32km超の 広大なオープンワー ルドマップ 高速移動を 特徴とする リリース済みの アクション 運営型タイトル ゲーム

17.

技術選定のプロセス&迅速な検証 Unreal Engine 4.26 オープンワールド 、ダイナミック シーン 、ダイナミックライティング 技術上の目標 アニメ調レンダリングスタイル レイトレーシング機能の実装: GI、反射、シャドウ 4060 2K 60fps

18.

案一:ReSTIR に基づくパストレーシング ReSTIR(Reservoir Spatial-Temporal Importance Resampling) 01 Initial Sampling 02 Temporal Resampling 03 Spatial Resampling 04 Evaluate lighting

19.

ReSTIR 関連ソリューション SHaRC(Spatially Hashed Radiance Cache) Multi-Bounce Problemの解決 ワールドスペーススパースハッシュベースの Radiance Cache デフォルト2回反射 NRD(NVIDIA Real-time Denoising) Spatio-Temporalベースのデノイザー 即使用可能 最終出力のノイズ除去に使用 性能コストはやや高く:4080 2k 2.3~3.0ms

20.

結論 ReSTIR ベースの手法は優れているが、 まだ完璧ではない Pros 実装が容易で、すぐに使える機能が豊富 光漏れが少ない Cons Per Pixel Trace,遠方や輪郭部分、動きのあるピクセルで高周波ノイズが目立つ ReSTIR アルゴリズムは帯域負荷が高く、Reservoir の読み書きが複数回発生する パフォーマンス面では負荷が大きく:4060 2k ReSTIR 5~10ms,デノイズ処理 3~4ms

21.

案二:ハードウェアレイトレーシングベースの Lumen 01 UE5 における Probe ベースの成熟したGI ソリューション 02 ハードウェアトレースにより、多くの移 植作業を省くことができる • MeshCard • SurfaceCache • SDFTrace • …… 03 •移植対応が必要な部分 HWRT Lumen (移植実現可能性に関する検討) • ScreenProbeGather • RadianceCache • Reflections

22.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map • 8x8 pixel per probe • Radiance と HitDistance などの情報

23.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map 02 Adaptive Probe Placement • 補間エラーの発生したProbeを細分化して再計算

24.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map 02 Adaptive Probe Placement • 補間エラーの発生したProbeを細分化して再計算 • 細分化したProbeをAtlasの下部に配置する

25.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map 02 Adaptive Probe Placement 03 Structure Importance Sampling • BRDF、Lighting (prev frame) • PDF(確率密度関数)

26.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map 02 Adaptive Probe Placement 03 Structure Importance Sampling 04 Spatial and temporal reuse • 近傍probes • Temporal jittering

27.

案二:ハードウェアレイトレーシングベースの Lumen Screen Probe Gather (Diffuse Indirect) 01 Octahedral Map 02 Adaptive Probe Placement 03 Structure Importance Sampling 04 Spatial and temporal reuse 05 Final integration with SH

28.

案二:ハードウェアレイトレーシングベースの Lumen Radiance Cache 01 ワールドスペースProbes • 4レイヤーClipmap • 32x32 atlas pixel per probe

29.

案二:ハードウェアレイトレーシングベースの Lumen Radiance Cache 01 ワールドスペースProbes 02 Connecting rays • Sphere parallax

30.

案二:ハードウェアレイトレーシングベースの Lumen Radiance Cache 01 ワールドスペースProbes 02 Connecting rays 03 役割 • 遠方の不安定な輝点によって発生するノイズ • 遠距離トレースのコストを削減する

31.

案二:ハードウェアレイトレーシングベースの Lumen 01 Screen Space Trace 02 Mini SortRayトレースでマテリアルの一部情報を取得する Reflections • Material ID、TwoSided、Translucency ... • Instance UserData 03 マテリアル情報に基づいてソートを行う 04 Trace Lighting で反射を計算する 05 Diffuse raysの再利用 (Radiance Cache) 06 Spatial and temporal reuse 07 Bilateral filter

32.

HW Lumen関連ソリューション Clipmap Irradiance Cache 01 Multi-Bounce Problemの解決 (SurfaceCacheが不足) 02 ワールドスペース Clipmap Irradiance Cache 03 Hit pointの間接光を補完する 04 Temporal RISの応用 05 解像度に依存せず、パフォーマンスコストが低い

33.

HW Lumen関連ソリューション Clipmap Irradiance Cache 01 Multi-Bounce Problemの解決 (SurfaceCacheが不足) 02 ワールドスペース Clipmap Irradiance Cache 03 Hit pointの間接光を補完する 04 Temporal RISの応用 05 解像度に依存せず、パフォーマンスコストが低い 06 無限バウンスをサポート

34.

HW Lumen関連ソリューション 01 Decoupling LumenScene その他 カスタマイズ変更 02 Clipmap Irradiance Cache が Surface Cache Lighting を置き換え 03 Global Field が Near Field と Far Field を置き換え 04 Substrate 関連コードを削除し、TextureArray->Texture2D 05 特殊なマテリアルに対して、Avoid Self Intersections特別な処理を実装 06 Trace Lighting にもいくつかの改良を加えており、この点については後ほど 説明

35.

結論 HWRT Lumenはより柔軟かつ完成度が高い案 (最終的に選択した案) Pros 拡張性が高い Probeベースの設計により高周波ノイズが少なく、複数のDenoiserソ リューションを標準で搭載 パフォーマンスも良好で、ノイズ除去含む 4060 2k GI ~2ms 反射 ~2ms Cons 実装が複雑 一部光漏れが発生

36.

機能の実装と統合 LightSelection 公式版 UE4 は、レイトレーシング計算に参加できる ライト数を全体で 256 に制限 NEE(Next Event Estimation)時:全ライト走査+CDF再構築 → ライト数が多いと低速 World Space Clipmap Light Grid:ライトを分割・フィルタリング ReGIR (Rendering Many Lights with Grid-Based Reservoirs) を用 いた時系列リサンプリング

37.

機能の実装と統合 LightSelection ReSTIR の検証段階で、600 灯を対象にし たパフォーマンステスト UE4 標準のライト選択手法を適用 ReGIR機能を有効にする

38.

機能の実装と統合 ToonShading 事例1:キャラクターの自己シャドウ 01 ラスタライズ方式 •シーン:CSM •キャラクター:PerObjectShadow 02 レイトレーシング方式 •キャラクターを除外したInstanceMask、ToonShadowRayを生成

39.

機能の実装と統合 ToonShading 事例2:キャラクターの GI対応 01 キャラクター描画をシーン全体の雰囲気に調和させる • キャラクターが環境からの間接光(反射光)を受け取る必要がある • 透け感を高めることで、キャラクターの表現をより自然に

40.

機能の実装と統合 ToonShading 事例2:キャラクターの GI対応 01 キャラクター描画をシーン全体の雰囲気に調和させる 02 スタイライズ処理 • 高密度の GI 情報 は、トゥーンの質感を損なう可能性がある • 髪と顔の部分には球状ノーマル処理を適用 • キャラクター全体のノーマルをカメラ方向に少し傾ける • 低コストでスムーズな間接照明

41.

機能の実装と統合 ToonShading 事例2:キャラクターの GI対応 01 キャラクター描画をシーン全体の雰囲気に調和させる 02 スタイライズ処理 03 ブレンド処理 • トゥーンシャドウ下でも完全に黒くならないよう調整し、白飛びや異常な 表現を回避 • 間接光をHSV空間に変換し、彩度と明度を制限して自然な色味に補正 • AO(Ambient Occlusion)を乗算し、奥行きを強調 • スキンマスクを適用し、肌部分では GI の影響を軽減

42.

機能の実装と統合 ToonShading 事例3:キャラクターの反射表現対応 01 金属特性を持つ表面への適用を想定 02 キャラクターと環境の相互作用ディテールを強化 03 スタイライズ処理 • 粗さ:Clampは0~0.3999,SSRへの切り替えを防止 • 金属度:反射強度として使用し、0.9以上を鏡面反射として扱う 04 ブレンド処理 • MatCap ベースに加算し、金属本来の質感を損なわないように反 射を統合

43.

機能の実装と統合 Hybrid Shadows Billboard や Imposter などのオブジェクトにもシャドウを付与する必要がある レイトレーシングはラスタライズとは異なり、Shadow Pass と Base Pass を分離できない CSM + Ray Traced Shadowを併用 TileClassify によるトレースピクセル削減 Cascade Shadow Map Shadow Depth Shadow Projection ShadowMask TileClassify NRD Sigma Denoiser Shadow Mask ShadowMask TileClassification ShadowMask Denoised Lighting

44.

機能の実装と統合 Ray Traced Shadows ShadowDepth 片面プレーンを使って光を遮ることがある 既存アセットのシャドウ処理ロジックへの適応が必要 Shadow RayFlag: RAY_FLAG_CULL_FRONT_FACING_TRIANGLES ShadowRay

45.

機能の実装と統合 Volumetric Fog VolumetricFogはCSMに依存 Shadow Ray を使用して 3D Shadow Volume を事前生成 Inject LightingはShadow Volumeを利用して Visibility(可視性) を判定 Hybrid Shadowによってパフォーマンスを最適化し、トレース対象オブ ジェクトの数を削減 Shadow Volume と Volumetric Fog の精度をデカップリング,ローエンド デバイスの性能スケーリングを実現

46.

機能の実装と統合 SingleLayerWater & Translucency SLW では、水底の色および深度を取得する必要があり、追加のレイトレースでそれらを算出して散乱効果を再現 SLW と同様に追加レイを発射し、各層をトレースして手動ブレンドを行う。層数の管理が重要

47.

機能の実装と統合 Skybox 鳴潮のスカイボックスは美しい反面、構造が複雑で、反射内にも空を正しく描写する必要がある(非常に需要!!) RayMiss または HitT が十分に遠い場合に、3〜4 回のRay Traversalを追加で実行し、手動でブレンドすることでスカイボックス全体を反射 させることが可能 ただし、非常に大きなパフォーマンスコストを伴う

48.

パフォーマンス最適化 — GPU Skybox Capture スカイボックスのトレースコストは非常に高い ラスタライズでスカイボックスを 512×512 のキューブマップとしてキャプチャ スカイボックスは非常に遠く、カメラが到達できないため、グローバルに 1 枚のキャプチャで十分 隔フレーム更新。異なる対策・更新頻度で 1 フレームにつきキューブマップの 1 面のみ更新 レイが Miss した場合、レイ方向に基づいてキューブマップをサンプリングする この手法により、反射処理のパフォーマンスが約 25% 向上

49.

パフォーマンス最適化 — GPU Payload圧縮 UE 標準の FPackedMaterialClosestHitPayload は 64 bytes 弊社のライティング計算データ構造では、 32 bytes 程度まで圧縮可能であり、GPU トレーシング性能が約 15% 向上 20/16 bytes まで圧縮も試みたが、品質 低下に対して性能向上は限定的。 今後は Shader Model 6.6 で追加されたPayload Access Qualifiers(PAQs) の活用を検討

50.

パフォーマンス最適化 — GPU マテリアルの簡略化 レイトレーシングにおける GI と 反射 では、完全なラスタラ イズマテリアル計算は不要 GI は反射よりもさらに簡略化が可能 静的分岐(Static Branch) を用いて、ラスタライズ/反射/ GI の各マテリアルロジックを分離 GI 用マテリアルでは光照計算を簡略化し、完全な PBRを使用 しない

51.

パフォーマンス最適化 — GPU(External Tech) Opacity Micro-Map (OMM) ラスタライズとは異なり、レイトレーシングでは Alpha Test を実装する際に、 AHS内で Alpha を計算する必要がある Encode TriangleVisibleState To BLAS 黄色の三角形のみが AHS の計算 Shader Execution Reordering (SER) GPU 上では、計算パスをできるだけ統一しないと Divergence問題が発生 GI 処理では、レイの方向が非常に発散しており、マテリアル計算の複雑度にも大きな差がある NVIDIA が提供する GPU 機能 SERを利用することで、この問題をある程度緩和可能 レイの方向がある程度揃っているケースでは効果は限定的で、またレジスタ使用量の増加によ り逆に性能が低下する場合もある

52.

パフォーマンス最適化 — CPU CPU Bound:GatherInstances(3.2ms)、BuildAS(2.8ms)、BindSBT(ShaderBindingTable)(2.4ms) RHI上のタスクである BuildAS と BindSBT の処理が重く、レンダースレッドをブロックしていた( 4.4ms) CPU Trace on Intel i9-13900k, FrameTime (WithTrace):19.8ms この問題に対して、3 つのステップで最適化を実施

53.

パフォーマンス最適化 — CPU(Step1) オープンワールド環境ではオブジェクト数が非常に多いため、CPU 側でカリング(Culling)を実行。カメラの前後で処理を分 け、距離(Radius)と立体角(Solid Angle)に基づいた段階的なカリングを適用 各マテリアルの Root Signature には、ViewUniformBuffer や MaterialParameterCollection などの冗長な共通データが含まれていた • これらを Global Root Signature に移行 • LocalRoot Signature のバインドコストを削減 FrameTime (WithTrace) :16.6ms

54.

パフォーマンス最適化 — CPU(Step2) GatherRayTracingInstance の最適化 データ依存関係の解析 依存タスクを InitViews の段階に前倒しし、完了後すぐに処理を開始 Task スレッドに分配して並列実行 し、レンダースレッドのブロッキングを回避。

55.

パフォーマンス最適化 — CPU(Step2) BuildAS の分解と最適化には: • D3D12_RAYTRACING_INSTANCE_DESCのフィル構築 • Dynamic BLAS、 TLAS の構築 PreBuildAS を分離し、Gather の後に構造体の一部をフィル する処理を配置 従来の BuildAS には以下の処理のみが残る:Dynamic BLAS ・TLAS の構築 FrameTime (WithTrace) :14.5ms

56.

パフォーマンス最適化 — CPU(Step3) BindSBT の分解,Shader/Shader Resource/Geometry Resource のバインド処理 PreBindSBT を新たに分離し、FlushRHIResource の直後から実行可能に。バインド内容: • 静的オブジェクト: Shader、ShaderResource、GeometryResource • 動的オブジェクト: Shader、ShaderResource 動的オブジェクトの Geometry Resource は、BuildBLAS 完了 後にバインド FrameTime (WithTrace) :10.5ms Test Build(No Trace)環境では約 7.35ms に短縮 この段階では再び GPU Boundに戻る

57.

まとめ 主な成果 01 ReSTIR と Lumen を迅速に検証し、プロジェクトに最も適したソリューションを採用 02 レイトレーシングにより、Reflections・GI・Shadows を実現 03 オープンワールド × トゥーンレンダリングパイプライン への統合過程で発生したさまざまな課題を解決 04 パフォーマンス最適化:: Skybox capture, Payload Compression, OMM, SER,CPU Multi-threading … 05 RTX 4060(2K)環境で 60fps を達成

58.

まとめ 今後の展望 01 さらなるプラットフォーム対応:Console、Mac、Mobile… 02 Inline Ray Tracing、Bindless (パフォーマンス向上) 03 Ray Traced Direct Lighting (無限シャドウ) 04 GPU-Driven Pipeline (Nanite like) with Mega Geometry 05 Enhanced Ray Traced Effects: Particles, Transparency, Caustics

59.

Reference • Lumen: Real-time Global Illumination in Unreal Engine 5 • Ray Tracing Open Worlds in Unreal Engine 5 • Overview and Introduction to Ray Tracing Shaders • Intel Details its Ray Tracing Architecture, Posts RT Performance Numbers • ReSTIR GI: Path Resampling for Real-Time Path Tracing • Experimental real-time global illumination renderer - kajiya • Spatially Hashed Radiance Cache (SHaRC) Library • NVIDIA Real-time Denoising (NRD) library • Rendering Many Lights with Grid-Based Reservoirs • Opacity Micro-Map SDK Source Repository • Improve Shader Performance and In-Game Frame Rates with Shader Execution Reordering