T.TAO
Back to Blog
/6 min read/Others

CG論文 #1 RenderMan: Advanced Path Tracing for Movie Rendering

CG論文 #1 RenderMan: Advanced Path Tracing for Movie Rendering

CG論文 #1 RenderMan: An Advanced Path Tracing Architecture for Movie Rendering

  • Lingheng Tao
  • 2024年10月26日
  • 読了時間 14 分

Algorithms & Data Structure Content List C++ Programming Content List Unity Shader Content Table

#CGPapers#ComputerGraphics#ComputerScience#Research

本稿はピクサーの『RenderMan: An Advanced Path Tracing Architecture for Movie Rendering』の論文共有です。

概要

RenderMan はピクサーが視覚効果レンダリング用に開発したレンダリングエンジン。最初の RenderMan は Reyes のスキャンラインアルゴリズムに基づき、その後レイトレーシング、サブサーフェススキャッタリング、ラジオシティキャッシュなどを追加。現代の RenderMan はパストレーサーとして書き直され、双方向パストレーシングとリアルタイムレイトレーシングをサポート。パストレーシングは Reyes とほぼ同時期(1986年頃)に登場したが、当時レイトレーシングは映画レンダリングには非現実的と考えられていた。しかし過去20年の技術発展により、多くの課題が克服され、リアルタイムレイトレーシングが実現した。

初期の RenderMan

Reyes アルゴリズム

初期 Reyes の核心ステップ:

  1. タイルベースレンダリング:画像を小さなブロック(バケット)に分割し、順次レンダリング。各ブロックのレンダリング時に必要なジオメトリとテクスチャのみをロードし、メモリ要件を大幅に削減。
  2. マイクロポリゴン生成:可視面を細分化し、各グリッドをマイクロポリゴンに分割。マイクロポリゴンは通常ピクセル相当のサイズ。ディスプレースメントマップの適用にも適する。
  3. シェーディングとアンチエイリアシング:各マイクロポリゴンの頂点でサーフェスシェーダーにより色と透明度を計算。アンチエイリアシングは分布サンプリングで実現。
  4. モーションブラーと被写界深度:Reyes は効率的でノイズが少ない。

Reyes は優れたメモリ管理を持つが、反射のシャドウには不向き。従来通りシャドウマップとリフレクションマップが必要だった。

反射によるレイトレーシング導入

より高品質な反射のため、RenderMan はレイトレーシング [Whitted 1980] を導入。シャドウマップの維持や解像度を気にせず高品質なシャドウと環境光オクルージョンを提供。

現代の RenderMan

RenderMan の近代化はパストレーシングに焦点。パストレーシングの利点:

  • プログレッシブ・インタラクティブレンダリング:編集時に低品質画像を素早く生成し、徐々に品質向上。
  • ジオメトリ複雑度の処理:オブジェクトインスタンシングなどの技術で効率的に管理。
  • 効率的なデノイジングとサンプリング最適化
  • 統一されたライティングモデル:追加の前処理なしで、単一パスで直接・間接照明を処理。

アーキテクチャは pbrt を参考にした産物。主要コンポーネント:

  • マテリアルインターフェース(bxdfs):カスタムマテリアル定義可能。EvaluateSample()、GenerateSample() などの API。
  • ライトトランスポートインターフェース(integrators):カスタムアルゴリズム定義可能。双方向パストレーシング、ボリュームライティングなど。
  • その他プラグイン:サーフェスディスプレースメント、光源、ライトフィルター、カメラ投影、サンプルフィルターなど。

この部分は pbrt の実装思路とほぼ同じ。pbrt は産業界と学界の両方の教科書。すべてのグラフィックスプログラマーが最初から最後まで読むべき。

マテリアルインターフェース bxdf

主なインターフェース:EvaluateSample()、GenerateSample()。RenderMan は既存の bxdf(ランバート拡散、理想鏡面、皮膚・毛髪のサブサーフェススキャッタリングなど)を提供。ユーザーもカスタム bxdf を定義可能。

積分器

積分器は放射輝度(radiance)を数値計算。主なインターフェース:GetNearestHits()、GetTransmission()。

シーン処理

映画の複雑化に伴い、1フレームで数十 GB のデータを処理する必要が。RenderMan は以下の対策を採用。

ジオメトリ処理

  • 大規模メッシュを分割し、より小さな葉ノードを持つ階層的バウンディングボリューム(BVH)を構築。
  • パス差異に応じて適切なジオメトリ細分化レベルを自動選択。
  • インスタンシングで同一オブジェクトの大量複製を効率的に管理(『Piper』の砂粒など)。

テクスチャ処理

  • テクスチャキャッシュの改良、マルチスレッド検索、MIP マッピングサポート。
  • Ptex フォーマットサポート。
  • 3D ブリックマップ [Christensen and Batali 2004] でボリューム効果(雲、煙など)。

ライティング処理

『リメンバー・ミー』では800万個の点光源。RenderMan はサブセットサンプリングでライティング計算を最適化。多重重要度サンプリング(MIS)[Veach and Guibas 1995] と組み合わせてノイズを低減。

プログレッシブレンダリング

サンプルシーケンス

RenderMan はプログレッシブマルチジッタード(pmj02)サンプルシーケンスを採用。高次元サンプリングでも高品質を保証。

適応的ピクセルサンプリング

画像の複雑度に応じてサンプリング密度を自動調整。平坦領域は早く収束、高周波領域はより多くのサンプルが必要。

チェックポイント

レンダリング中に定期的に EXR 形式の中間画像を生成。中断時はチェックポイントから再開可能。時間制限の設定も可能。

リアルタイムレンダリング

パス選択

光路の選択がライティング計算の効率と画質を決定。RenderMan はパス選択と操作でパス生成とサンプリング重み分布を制御。

インタラクティブレンダリング

軽量シーングラフ(lightweight scene graph)を導入。局所的な変更を迅速に反映。Riley という低レベルレンダリングインターフェースを提供。

参考文献:

  1. Paper 原文:https://graphics.pixar.com/library/RendermanTog2018/paper.pdf