レンダリングパイプラインを理解する: 従来のレンダリングとリアルタイムレンダリングの要点

レンダリングパイプラインを理解する: 従来のレンダリングとリアルタイムレンダリングの要点

レンダリングは、コンピュータグラフィックスを使って3D画像を作る際の最後のステップです。レンダリングは、基本的なモデル、テクスチャ、ライトを使用し、完全な画像に仕上げます。レンダリングには、従来のオフラインレンダリングと、ゲームやインタラクティブメディアで使用されるリアルタイムレンダリングの2種類があります。オフラインレンダリングは高品質の画像を生成することに重点を置き、リアルタイムレンダリングはビジュアル品質とパフォーマンスのバランスをとることを目的としています。両方のレンダリングの仕組みを知ることで、アーティスト、テクニカルディレクター、開発者は、3Dレンダリングを最大限に活用することができます。

レンダリングの流れについて

レンダリングのパイプラインとは?

レンダリングのパイプラインとは、モデル、テクスチャ、ライト、カメラ設定などの3Dデータを2D画像に変換するプロセスのことです。このプロセスは、オフラインレンダリングとリアルタイムレンダリングの両方で重要ですが、その目的は異なります。オフラインレンダリングは、映画、アニメーション、プリレンダリングが必要なシーンで使用され、時間はかかりますが、最高の品質を実現することに重点を置いています。ビデオゲームやVRのようなリアルタイムレンダリングでは、品質と高速パフォーマンスのバランスを取ることに重点を置いています。

オフラインレンダリングでもリアルタイムレンダリングでも、パイプラインは複雑なタスクをより小さなステップに分割するので、GPUやCPUは大量のデータをより効率的に処理できるようになります。このプロセスには、3Dモデルを変換、照明の適用、テクスチャの処理、そして最後に完成した画像を表示するなどがあります。
より技術的な解説は、Clickety Clackがの動画が非常にわかりやすいです:

レンダリングパイプラインのコンセプトと目的

レンダリングパイプラインは、レンダリングプロセスを整理し、シェイプからライティングまで、シーンのすべてを明確な順序で段階的に処理するようにします。この方法により、プロセスの各部分が最適化されるため、何百万ものポリゴンや テクスチャがある複雑なシーンも効率的にレンダリングできます。

速度よりも品質が重視されるオフラインレンダリングでは、パイプラインによってレイトレーシングのような高度なエフェクトを使用し、リアルな影や反射を作成できます。リアルタイムレンダリングでは、Zバファリング、バックフェイスカリング、LOD(レベルオブディテール)などの方法を使用して作業負荷を軽減しながら、ビジュアルクオリティを維持することで、スピードに最適化されています。

レンダリングパイプラインのステージ

レンダリングパイプラインの主要なステージについて

具体的な手順は、使用するレンダラーやゲームエンジンによって異なるかもしれませんが、主なステージは似ています:

  1. ジオメトリ処理: このステップでは、各頂点の位置を変換し、カリング(視界に入っていないオブジェクトを非表示にする)やクリッピング(カメラの視界外の部分を切り取る)などの方法を使用して、オブジェクトのどの部分が見えるかを把握します。
  2. ラスタライズ: 3Dモデルを2Dのピクセルや小さな断片(フラグメント)に変換して画面に表示します。
  3. シェーディングとライティング: テクスチャを追加し、各ピクセルの最終的な色を決定することで、光が表面にどのように影響するかを把握します。
  4. 最終画像の合成: 処理されたパーツをまとめ、後処理でエフェクトを加えて最終的な画像を作成します。

詳しい内訳:ジオメトリーから画像合成まで

ビデオゲームのようなリアルタイムでの使用でも、映画のようなオフラインのプロジェクトでも、レンダリングは、生の3Dデータを最終的な画像に変える一連のプロセスを踏みます。このプロセスの各段階では、レンダリングの品質と速度の両方を向上させることができます。これらの段階を分解し、リアルタイムレンダリングとオフラインレンダリングの主な違い、特にラスタライズとオフラインレンダリングで使用される手法の違いに注目してみましょう。

ジオメトリ処理

ジオメトリ処理では、主に3Dオブジェクトを元のモデル空間からカメラ空間に変更します。これは、モデルとビューのマトリクスや プロジェクションのマトリクスなど、3Dシーンを2Dスクリーン上に表示できるように準備する重要なマトリクス変換を使用して行われます。

  • リアルタイムレンダリング: リアルタイムレンダリング、特にゲームやインタラクティブアプリでは、処理をスムーズに行うことに重点を置いており、そのために様々な最適化技術が用いられています。LOD(Level of Detail:詳細レベル)は、カメラから遠いオブジェクトの形状を単純化し、重要な詳細部分のみが処理されるようにします。さらに、バックフェースカリングとしオクルージョンカリングは、カメラが見ることができないサーフェスを無視することで、不要な作業を減らします。
  • オフラインレンダリング: 逆に、オフラインレンダリングは、スピードよりも正確さを重視します。形状やサーフェスの細かなディテールまで保持し、時にはサブピクセルレベルまで精密に処理します。これにより、映画やアニメーションの高品質なビジュアルを作成するために重要なディテールが失われることはありません。処理に時間がかかっても、画像をできるだけリアルに見せることが最大の目標です。

リアルタイムレンダリングでもオフラインレンダリングでも、Zバッファリングは非常に重要です。この技術では、カメラからオブジェクトまでの距離をチェックして、最終画像でどのオブジェクトを表示するかを決定します。

ラスタライズ

ラスタライゼーションとは、幾何学図形(主に三角形)を2D画面上の断片(潜在的なピクセル)にするプロセスである。しかし、リアルタイムレンダリングでは、オフラインレンダリングと比べて、ラスタライゼーションの使われ方と依存度がかなり異なります。

  • リアルタイムレンダリング:リアルタイムレンダリングでは、ラスタライズが主に使用さ れます。3Dジオメトリが処理された後、シーンを構成する三角形は、視聴者の画面上のピクセルと一致するフラグメントに変換されます。リアルタイムレンダリングでは、数百万の三角形を管理し、アプリケーションにもよりますが、少なくとも毎秒30~60回(FPS)のフレームを生成する必要があるため、ラスタライズの速度は非常に重要です。この方法が高速なのは、各三角形が個別に処理され、画面に直接マッピングされるからです。形状を複雑にすることなく細部の見た目を改善するために、法線マッピングのようなテクニックが使用されます。
  • オフラインレンダリング: オフラインレンダリングでは、一部の段階でラスタライズが使用されることもありますが、レイトレーシングやパストレーシングのような、より正確な手法によって強化されたり、置き換えられることもよくあります。これらの手法は、光が現実世界でどのように振る舞うかを模倣するもので、反射、屈折、影などの複雑な効果を、ラスタライズよりもはるかに正確に計算することができます。例えば、レイトレーシングは、カメラからシーンを通して個々の光線を追い、それらがオブジェクトとどのように相互作用するかを決定し、リアルな照明や影を作成します。このアプローチは多くの計算能力を必要としますが、ラスタライゼーションに比べてはるかに正確で視覚的に美しいレンダリングが可能になります。オフラインレンダリングでは、ラスタライゼーションは初期段階や特定のタスクに使用されることはありますが、最終的な画像を作成するための主要な手法ではありません。代わりに、レイトレーシングや同様の技術によって提供される詳細な光の相互作用がより重要になります。レイトレーシングは現在、いくつかのリアルタイムレンダリングの技術で使われています。

    レイトレーシングとパストレーシングについては、Branch Educationのビデオで詳しく解説しています:

シェーディングとライティング

シェーディングとは、オブジェクトの表面特性とシーンの照明に基づいて、各フラグメントやピクセルの最終的な色を決定するプロセスです。ここでシェーダーが使用されます。シェーダーは、光がサーフェスとどのように相互作用するかを決定する小さなプログラムです。

  • リアルタイムレンダリング:リアルタイムレンダリングでは、より高速なパフォーマンスを確保するために、ライティングが単純化されることがよくあります。PhongやBlinn-Phongシェーディングのような基本的なライティングモデルは、多くのリアルタイムアプリケーションで一般的に使用されています。ライトマップが事前に計算され保存されるベイクドライティングや、隙間や角にソフトな影を作るアンビエントオクルージョンなどのテクニックは、各フレームごとに光を計算するために必要な重い計算をすることなく、リアルなライティングを作成するのに効果的です。リアルタイムレイトレーシング(RTXテクノロジー)の導入により、より正確なライティングが可能になりましたが、それでもオフラインレンダリングに比べるとディテールは劣ります。
  • オフラインレンダリング: オフラインレンダリングでは、グローバルイルミネーション、コースティクス、サブサーフェススキャッタリングなどの高度なライティングテクニックによってフォトリアリズムを実現することに重点が置かれます。これらのテクニックは、光がさまざまな表面でどのように跳ね返るか、透明なオブジェクトをどのように通過するかなど、光の複雑な相互作用を計算します。シェーダーがこれらの効果を単純化するリアルタイムレンダリングとは異なり、オフラインレンダリングでは、レイトレーシングを使用して、反射、屈折、影など、光が現実世界でどのように振る舞うかを正確にシミュレートします。この方法は、より多くのコンピューティングパワーを必要とし、複雑さによっては1フレームのレンダリングに数時間から数日かかることもありますが、その結果、リアルさでは他に並ぶものはありません。

最終的な画像の構成

シーンのジオメトリが処理され、各フラグメントにシェーディングとライティングが施されると、最終的な画像が作成されます。この段階では、すべての情報を最終的な2D画像にまとめます。

  • リアルタイムレンダリング:リアルタイムアプリケーションでは、最後のコンポジションは非常に速く行われる必要があり、通常、60フレーム/秒(FPS)を達成するために16ミリ秒未満で行われます。リアルタイムパイプラインでは、レンダーパスと、モーションブラー、ブルーム、被写界深度などのポスト処理エフェクトを組み合わせて、最終的な出力を向上させます。しかし、時間制限が厳しいため、限られた数のパスしか行うことができず、ポストプロセッシングの処理の複雑さが限定されます。
  • オフラインレンダリング:オフラインレンダリングでは、厳格な時間制限がないため、複数のパスや非常に詳細な後処理が可能になります。最終的な画像は通常、ディフューズパス、スペキュラーパス、シャドウパス、リフレクションパスなど、複数のレイヤーまたはパスで構成さ れます。これらは、Adobe After EffectsやNukeのようなポストプロダクションソフトウェアを使って個別に編集することができます。このような柔軟性により、色、コントラスト、色収差のようなエフェクトの変更など、最終的な画像に対する幅広い調整が可能になります。

リアルタイム vs オフライン・レンダリング

リアルタイムレンダリングとオフラインレンダリングのパイプラインは、どちらも基本的なステージは同じですが、そのアプローチと重点は大きく異なります。リアルタイムレンダリングは、スピードと効率性を重視し、ラスタライズや光の近似などのテクニックを使用して、高いフレームレートで魅力的なビジュアルを作成します。これとは対照的に、オフラインレンダリングは正確さとディテールに重点を置き、多くの場合、スピードを犠牲にして、高いレベルのリアリズムを提供するレイトレーシングのようなテクニックを使用します。

技術の進歩に伴い、2つのパイプラインの差は徐々に小さくなっています。リアルタイム・レイトレーシングが一般的になり、リアルタイム・アプリケーションでより正確なライティングと反射が可能になりましたが、オフライン・レンダリングの品質にはまだ及びません。どちらの技術も発展を続けており、それぞれの分野で可能性の限界を広げています。

特別特集:OpenGLのレンダリングパイプラインの3つの主要ステージ

OpenGLはリアルタイムレンダリングパイプラインの良い例です:

  1. 頂点処理: このステップでは、頂点がモデル空間からスクリーン空間に変更されます。これには、マトリクスの乗算や法線ベクトルの変換などの操作が含まれます。
  2. ラスタライズ: このステップでは、ジオメトリをピクセルに変換します。各ピクセルは最終的な画像の一部となる可能性があります。
  3. フラグメント処理: このステップでは、テクスチャが追加され、各ピクセルの最終的な色と深度を把握するためのライティング計算が実行されます。

オフラインレンダリングでは、このパイプラインはレイトレーシングで強化することができますが、リアルタイム状況でのOpenGLは速度を優先します。

レンダリングパイプラインの技術的要素

レンダリング処理におけるシェーダーの役割

シェーダーは、頂点、フラグメント、ピクセルの処理方法を決定する小規模なプログラムです。オフラインとリアルタイムの両方のパイプラインで、シェーダーはアーティストや開発者が独自のカスタマイズされたエフェクトを作成することを可能にします。

オフラインレンダリングでは、シェーダは複雑なマテリアル、サブサーフェススキャッタリング、高度なライティングモデルを扱うことができます。リアルタイムアプリケーションでは、フラグメントシェーダは、テクスチャ、カラー、およびライティング効果をすばやくレンダリングするために非常に重要です。速度を維持するために、多くの場合、簡略化された近似値を使用して、パフォーマンスを低下させることなく優れた品質を実現します。

固定パイプラインと可変パイプラインの違い

古いレンダリングシステムは固定機能パイプラインを使用しており、ステップ(頂点変換やライティングなど)はあらかじめ設定されており、変更することはできませんでした。VulkanやDirect3Dのような最新のAPIはプログラマブルなパイプラインを提供し、開発者はレンダリングプロセスの各段階を制御するカスタムシェーダーを記述できるため、より柔軟で優れたビジュアル品質が実現します。

従来のオフラインレンダリングでは、可変パイプラインにより、皮膚やガラスなどのマテリアルをシミュレートできる、詳細なカスタムシェーダーを作成できます。リアルタイムパイプラインでは、パフォーマンスとビジュアルクオリティのバランスをよりコントロールできます。

レンダリングパイプラインの仕組み

レンダリングパイプラインは、3Dシーンをスクリーン上の2D画像に変換するための連続したステップです。ハイエンドのビジュアルエフェクトや アニメーションのオフラインレンダリングでも、ビデオゲームのリアルタイムレンダリングでも、基本的なプロセスはほぼ同じです。しかし、最高のリアリズムを目指すか、スムーズな操作のために最短でフレームを生成するかなど、目的によってアプローチは変わります。

このプロセスは、テクスチャ、照明、カメラの位置とともに、頂点、エッジ、面で構成されるモデルを含む、未加工の3Dデータから始めます。これらの3Dモデルはそれぞれのオブジェクトの位置関係を定義するモデル空間に存在します。この3Dデータを平らな2D画面に表示するには、一連の変換が必要です。これには、3D空間内の各頂点の位置を、行列演算を使用して2D画面座標に変換します。この変換には、カメラの位置に基づいてシーンを調整するビューイング変換や、遠くの物体を小さく見せることで遠近感を作り出すプロジェクション変換などがあります。

3Dモデルが2D座標に変換された後、次の重要なステップはライティングとシェーディングで、表面と光の影響を計算します。このステップでは、表面が光をどのように反射するか、影がどのように形成されるか、シーンの照明に基づいてテクスチャやマテリアルがどのように表示されるかを決定します。オフラインレンダリングでは、このプロセスは非常に正確に行われます。パストレーシングのような技術は、オブジェクトから跳ね返る光線を追跡し、反射、屈折、ソフトライティングのような詳細をキャプチャすることで、リアルな照明をシミュレートするためによく使用されます。この手法には多くの計算能力が必要で、1フレームのレンダリングに数時間から数日かかることもありますが、リアルな画像を作成できます。一方、リアルタイムレンダリングでは、スピードが最優先されます。ビデオゲームなどに必要なパフォーマンスを維持するために、ライティング計算ではさまざまなショートカットや近似値が使用されます。

スクリーンに表示されているものに基づいて反射を作成するスクリーン空間反射や、ライティングを事前に計算して保存するベイクしたライティングなどの技術は、処理の高速化につながります。これらの方法は、オフラインレンダリングと比較してリアリズムは多少低下するものの、システムが高いフレームレートを維持することができます。最近のリアルタイムレイトレーシングのようなGPU技術の向上は、オフラインレンダリングほど詳細ではないものの、フレームレートを滑らかに保ちながら、よりリアルなライティング効果が可能になりつつあります。

パイプラインの次のステップはラスタライズで、2Dスクリーン座標を実際のピクセルに変換します。このプロセスでは、シーンの幾何学的形状(主に三角形)が、断片またはピクセルデータに変換されます。画面上の各ピクセルは、3Dオブジェクトのテクスチャ、色、反射率などのマテリアル・プロパティと、光がそれとどのように影響し合うかに基づいて、その色が付けられます。簡単に言うと、この段階では、オブジェクトの表面上のどこにあるか、照明がその表面にどのように影響するかによって、最終画像の各ピクセルの見え方が決まります。

オフラインレンダリングでは、シーンがラスタライズされた後、複数のレンダーパスが使用されることがよくあります。各パスは画像を別々のレイヤーに分割し、反射、影、照明などの異なる要素に焦点を当てます。これらのレイヤーは、後にポスプロ用ソフトウェアで個別に微調整します。このレイヤーを重ねる方法は、高度なコントロールが可能で、アーティストは驚くほどのディテールとリアリズムを達成することができます。例えば、あるパスでは直接光をキャプチャし、別のパスでは表面から跳ね返る光を処理することで、柔らかい影や微妙な照明効果まで正確に表現することができます。

しかし、リアルタイムレンダリングでは、パイプライン全体を1秒のわずかな時間で完了させる必要があり、通常、毎秒60フレームのスムーズなフレームレートを維持するためには16ミリ秒以下でなければなりません。この時間制限のため、リアルタイムエンジンには、マルチパスを贅沢に使用する余裕はありません。その代わり、モーションブラーやブルームのようなエフェクトは、良好なパフォーマンスを維持しながらビジュアル品質を向上させるために、シングルパスで素早く適用されます。

最終的に、レンダリングパイプラインは未加工の3Dデータを、スクリーンに表示するための最終的な画像を生成します。オフラインレンダリングとリアルタイムレンダリングの主な違いは、精度と速度のバランスです。オフラインレンダリングでは、レイトレーシングやパストレーシングのようなテクニックを使用して、非常にリアルな画像を実現します。一方、リアルタイムレンダリングでは、最適化やショートカットを使用して、インタラクティブな使用に十分な速さで画像を作成します。技術の向上、特にGPUベースのリアルタイムレイトレーシングの進歩に伴い、この2つの手法の差は縮まりつつあり、リアルタイムアプリケーションによりリアルさをもたらしています。

実例紹介: 最新のゲームエンジンで活躍するレンダリングパイプライン

例えばUnityでは、開発者はパフォーマンス向上のために設計されたUniversal Render Pipeline(URP)と、高度なシェーダーとレンダリング技術で最高の品質を提供することを目的としたHigh Definition Render Pipeline(HDRP)のいずれかを選択できます。HDRPには、ボリューメトリック・ライティングやレイトレーシングなどの機能が含まれ、オフライン・レンダラーの品質に近づいています。しかし、映画やアニメーションで使用されるプリレンダリングシーンと同じレベルのディテールにはまだ到達できていません。Unityユーザーや Unityに興味がある人のために、Brendan Dickinsonが動画で、Unityが提供するさまざまなレンダーパイプラインを紹介しています:

レンダリングにおける高度なトピック

高度なグラフィックス・レンダリング技術の探求

レイトレーシング、グローバルイルミネーション、物理ベースレンダリング(PBR)のような高度な技術は、オフラインレンダリングで使用される主な手法であり、まるで現実のような画像を作成します。リアルタイムレンダリングは、ディファードシェーディングやリアルタイムレイトレーシングなどの手法によって追いつきつつありますが、これらの手法はまだ新しく、オフラインレンダリングに見られる詳細レベルには及びません。

レンダリングパイプラインがグラフィックス品質とパフォーマンスに与える影響

オフラインレンダリングでは、所要時間をあまり気にすることなく品質に重点を置いた処理が行われるため、グローバルイルミネーションやコースティクス、複雑なシェーダー計算など、計算に何時間もかかるようなエフェクトも可能になります。対照的に、リアルタイムレンダリングは速度を優先して最適化され、よりシンプルなライティングモデルとショートカットを使用して、より高速なパフォーマンスを実現します。

レンダリング技術の革新と今後の動向

機械学習とAIを活用したレンダリングの発展に伴い、オフラインとリアルタイムのレンダリングプロセスの両方で、ノイズの低減と最適化が改善されています。さらに、リアルタイムレイトレーシングは、リアルタイムレンダリングの能力を向上させ、オフライン手法との差を徐々に縮めています。

実践的な応用と設定

最適なパフォーマンスを実現するレンダリングパイプラインの設定

オフラインレンダリングでもリアルタイムレンダリングでも、複雑なシーンを効果的に処理するには最適化が不可欠です。クリッピング、LOD(Level of Detail)、シェーダの詳細設定などのテクニックはリアルタイムレンダリングのパフォーマンス向上に役立ち、サンプリングやアダプティブサブディビジョンなどの手法はオフラインレンダリングの最適化に重要です。

実際の使用例: 企業はレンダリングパイプラインをどのように活用しているか

Pixarのような映画スタジオからEpic Gamesのようなゲーム開発者まで、さまざまな業界が印象的なビジュアルを作成するために高度なレンダリングパイプラインを使用しています。映画スタジオでは、詳細で高品質な画像を作成するために、主にオフラインレンダリングに頼っていますが、ゲーム開発では、高速で応答性の高いパフォーマンスに最適化されたリアルタイムレンダリングパイプラインを使用しています。

従来のオフラインレンダリングとリアルタイムレンダリングのパイプラインの詳細を理解することで、3Dアーティストと開発者は、プロジェクトのビジュアルとパフォーマンスの目標を達成するために最適なツールとテクニックを選択できます。

>ガレージファームのTOPへ

関連記事

live chat