Upgrade to Pro — share decks privately, control downloads, hide ads and more …

わかった気になれるUE5レンダリング

swd
September 01, 2022

 わかった気になれるUE5レンダリング

swd

September 01, 2022
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前 ◦ swd (@s_w_d_) • 所属 ◦ Preferred

    Networks ◦ 普段の仕事は全く描画関係なし • OSS ◦ Effekseer ▪ EpicGamesからも支援
  2. 概要 • Unreal Engine5 ◦ ゲームエンジン ◦ とてもレンダリングが綺麗 ◦ CitySampleで話題

    • 話すこと ◦ UE5の描画技術の概要の一部 ▪ 甘口 ▪ 非描画技術者向け • 話さないこと ◦ UE5の設定 ◦ 詳細な技術の実装 City Sample
  3. NaniteとLumen • Lumen ◦ リアルタイムGI ▪ 直接光と間接光を リアルタイムに計算 ▪ 発光等もリアルタイムに使用可能

    • Nanite ◦ 大量のポリゴンを表示する技術 ▪ 数千万ポリゴンの 3Dモデルを表示
  4. Nanite • 大量のポリゴンを表示する機能 • 主に2つの要素で構成 ◦ 強力なカリングとLoD ▪ Mesh Cluster

    Rendering • メッシュの一部のみを描画する機能 ◦ 描画時のメモリの転送量の削減 ▪ Visibility Buffer • メモリ転送量を抑制する描画手法
  5. カリング • 従来の手法 ◦ フラスタムカリング ▪ カメラ外のオブジェクトを描画から除外 ▪ 一部でも表示されている場合、全体が描画される ◦

    オクルージョンカリング ▪ 壁等で隠れているオブジェクトを描画から除外 ▪ 遮蔽の計算が難しい ▪ 一部でも表示されている場合、全体が描画される
  6. Mesh Cluster Rendering • 1つのメッシュを複数に分割 ◦ 分割した単位でカリング ◦ 必要なメッシュのみを描画 •

    距離に応じてメッシュを変更 ◦ ポリゴンのサイズが同じになるように調整 近 遠
  7. AmplificationShader + MeshShader • Amplification Shader ◦ GPU側でメッシュを描画の可否を判断する機能 • MeshShader

    ◦ 高速でGPU上でメッシュを生成する機能 ◦ 状況に応じて適切なメッシュを生成可能 • UE5 ◦ UE5は未サポートGPUのために ComputeShaderで代替の実装を行っている ◦ 実質同様かつフォールバックの実装なので上記機能を説明
  8. AmplificationShader, MeshShaderによるLoDカリング • 処理 ◦ GPU内で遮蔽を計算、隠れた部分を描画メッシュから除去 ◦ カメラ内のメッシュのみ描画 ◦ 距離に応じてメッシュ切り替え

    • 結果 ◦ GPU、CPUの転送量が減って高速化 ▪ 描画する、しないの判断をCPUが行っていた ▪ 今まではオクルージョンカリングは CPUで行う必要があった ◦ ポリゴン数をより細かく調節できて高精度化、高速化
  9. AmplificationShader, MeshShader • AmplificationShader, MeshShaderはGPUの機能 ◦ UE5特有の実装ではない ◦ DirectX12 Ultimate,

    Vulkanの拡張等に存在 ◦ 他ゲームエンジンでもいずれ採用されるかもしれない カリングされている DirectX12 サンプル
  10. Deferred Rendering • Deferred Rendering ◦ メリット ▪ 大量の光源を配置可能 ◦

    デメリット ▪ メモリの転送量が多い 計算用の情報のバッファを描画 情報のバッファを元に色を描画 メモリの転送量が多い!
  11. VisibilityBuffer Forward Rendering Deferred Rendering Visibility Buffer 複数光源 × 〇

    〇 メモリ転送量 〇 × 〇 The Visibility Buffer: A Cache-Friendly Approach to Deferred Shading
  12. 従来手法 • 手順 ◦ 間接光を事前に計算 ◦ テクスチャに結果を焼きこみ • 問題点 ◦

    動的物体に対応できない ◦ 環境の変化に対応できない リアルタイムに計算したい!
  13. 計算方法概要 • オフライン ◦ メッシュカード生成 ▪ 計算高速化用データ ◦ 他様々な高速化用データ生成 ▪

    本講演では説明せず • オンライン VoxelLighting 直接光 メッシュカード情報 VoxelLighting ScreenProbe GI Volume
  14. ScreenProbe • 複数の情報から生成 ◦ MeshCard ▪ 近距離 ◦ VoxelLighting ▪

    中距離~ ◦ SSGI ▪ 全体 ▪ スクリーン上の画像から簡易的な GIを行う • 今回は説明なし