皆さんは実際に、レイ トレーシングを利用した映画を以前に見たことがあるはずです。
コンピューター グラフィックス分野外で、レイ トレーシングの意味を知っている人は少ないかもしれません。しかし、レイ トレーシングを見たことのない人は地球上にあまりいません。
近くの映画館に行ってチケットとポップコーンを買うだけで、レイ トレーシングを体験できます。
レイ トレーシングとは、特殊効果を生成または強化するために最近の映画で利用されている技法です。リアルな光の反射、屈折、陰影を想像してみてください。これらを正しく表現することにより、SF 映画の戦闘機が風を切って飛行し、自動車が猛烈なスピードで走っているように見えます。また、戦争映画の炎、煙、爆発がリアルに表現されます。
レイ トレーシングによって、カメラで撮影されたシーンと区別できないような映像が生成されます。実写映画では、コンピューターで生成される効果と現実世界で撮影された映像が継ぎ目なくミックスされます。一方、アニメ映画には、カメラマンによって撮影された映像のように表現豊かな、デジタル生成された光と影のシーンが含まれています。
レイ トレーシングについて考えるために最も簡単な方法は、今すぐに自分の周囲を見回すことです。今見ている物体は、光線に照らされています。次に、自分の目から光が当たっている物体へと、反対向きに光線の経路をたどってください。これが、レイ トレーシングです。
しかし、従来、コンピューター ハードウェアは、ゲームなどでリアルタイムにこの技法を使用できるほど十分に高速ではありませんでした。映画制作者は、1 枚のフレームをレンダリングするために、必要なだけの時間をかけることができるため、レンダー ファームにおいてオフラインでこれを実行します。ゲームでは、1 秒の数十分の 1 の時間しか与えられません。このため、ほとんどのリアルタイム グラフィックスでは、ラスタライズと呼ばれる別の技法が利用されます。
ラスタライズについて
リアルタイムのコンピューター グラフィックスでは、平面の画面に立体の物体を表示するために、「ラスタライズ」と呼ばれる技法が長い間利用されてきました。その処理結果は、まだ必ずしもレイ トレーシングほどではないにしても、大きく向上しました。
ラスタライズにおいて、画面上の物体は、その 3D モデルを構成する仮想的な三角形や多角形 (ポリゴン) の組み合わせ (メッシュ) で生成されます。この仮想的なメッシュでは、各三角形の頂点が、サイズや形状の異なる他の三角形の頂点と交わります。各頂点には、空間内の位置、色、テクスチャ、その「法線」に関する情報など、多数の情報が関連付けられます。法線は、物体の面が向いている方向を決定するために使用されます。
次に、コンピューターによって 3D モデルの各三角形は 2D 画面上のピクセル (ドット) に変換されます。各ピクセルには、三角形の頂点に格納されたデータから色の初期値を割り当てることができます。
さらに、シーン内の光がピクセルにどのように当たるかに基づくピクセルの色の変更、ピクセルに対する 1 枚以上のテクスチャの適用などのピクセル処理 (シェーディング) の組み合わせによって、ピクセルに適用する最終的な色が生成されます。
これは、コンピューターに高い負荷がかかる処理です。シーン内のすべての物体モデルでは数百万のポリゴンが使用されることがあり、4K ディスプレイには約 800 万のピクセルがあります。さらに、画面に表示される各フレーム (画像) は、一般にディスプレイ上で毎秒 30~90 回書き換えられます。
また、画面に表示する前に次のフレームをレンダリングするため、メモリー バッファ (処理の高速化のために確保されている少量の一時的な容量) が使用されます。ピクセルの x-y 画面の各位置で、最も前面の物体が画面に確実に表示されるよう、ピクセルの深度 (奥行き) 情報を格納するために深度バッファ (z バッファ) も使用されます。
これが、グラフィックスの美しい最近のコンピューター ゲームでは強力な GPU が不可欠な理由です。
レイ トレーシングについて
レイ トレーシングは、ラスタライズとは異なります。現実世界で、私たちが見る 3D の物体は光源に照らされ、光は視聴者の目に届くまでに複数の物体間でバウンドすることがあります。
光が物体に遮られて、影が生じる場合もあります。また、ある物体が別の物体の表面に映っているのが見える場合のように、光は物体間で反射することがあります。さらに、光がガラスや水などの透明または半透明な物体を透過するときに、光の方向が変わる屈折があります。
レイ トレーシングでは、私たちの目 (またはカメラ) から逆方向にこのような効果を捉えます。これは、1969 年に IBM のアーサー アペル (Arthur Appel) 氏が『Some Techniques for Shading Machine Renderings of Solids』で最初に説明した技法です。レイ トレーシングでは、2D 画面の各ピクセルからシーンの 3D モデルへと光線の経路が追跡されます。
次の主要なブレイクスルーは、10 年後に起こりました。1979 年の論文「An Improved Illumination Model for Shaded Display」で、現在 NVIDIA Research に所属しているターナー ウィッテッド (Turner Whitted) は、反射、陰影、屈折を捉える方法を示しました。
ウィッテッドの技法では、光線がシーン内の物体に当たったときに、その影響を受ける物体の表面にある点の色と照明の情報によって、ピクセルの色と照度が変化します。光線が、光源に達する前に、異なる物体の表面で反射するか、通過した場合、これらの物体すべての色と照明の情報が、最終的なピクセルの色に影響を及ぼすことがあります。
1980 年代のもう 1 組の論文によって、映画の制作方法を覆したコンピューター グラフィックス革命の残りの知的基盤が確立されました。
1984 年に、Lucasfilm のロバート クック (Robert Cook)、トマス ポーター (Thomas Porter)、ローレン カーペンター (Loren Carpenter) は、それまでカメラのみで撮影できた多数の一般的な映画制作技法 (モーション ブラー、被写界深度、半影、透光性、不明瞭な反射) をレイトレーシングに組み込む方法を詳述しました。
2 年後に CalTech のジム カジヤ (Jim Kajiya) 教授の論文「The Rendering Equation」によって、シーン全体における光の散乱の表現を改善するため、コンピューター グラフィックスの生成方法と物理学を対応付ける作業が完了しました。
この研究と最新の GPU を組み合わせると、現実世界の写真や動画と区別できなくなるよう陰影、反射、屈折を捉えたコンピューター生成画像が生じます。このリアリズムは、最近の映画制作で主にレイトレーシングが利用されるようになった理由です。
こちらは Enrico Cerica が OctaneRender を使って作り出したコンピューターで生成された画像です。レイ トレーシングによる照明器具のガラスの歪み、窓と床に置かれたランタンのすりガラスの光の拡散、額縁への映り込みが表されています。
これも、コンピューターに非常に高い負荷がかかる処理です。このため映画制作者は、多数のサーバーやレンダー ファームを利用しています。また、複雑な特殊効果をレンダリングするには、数日、さらには数週間かかることがあります。
レイ トレーシングの全体的なグラフィックス品質とパフォーマンスには、明らかに多くの要因が関わっています。実際、レイ トレーシングではコンピューターに非常に高い負荷がかかるため、多くの場合、レイ トレーシングは、この技法から視覚的な品質とリアリズムに関して最もメリットが得られるシーン内の領域や物体のレンダリングに使用され、シーンの残りの部分はラスタライズを使用してレンダリングされます。ラスタライズでも、良好なグラフィックス品質を実現することは可能です。
レイ トレーシングの次のステップ
GPU のパワーを増大し続け、もっと多くの人々がレイ トレーシングを利用できるようにすることが、必然的に次のステップとなります。たとえば、Autodesk の Arnold、Chaos Group の V-Ray、Pixar の Renderman などのツールと強力な GPU により、製品デザイナーや建築家は、レイ トレーシングを使用して、数秒間で写真のようにリアルな製品の実物大模型を生成して、コラボレーションを改善し、コストの高い試作品の作成を省略できるようになります。
GPU のコンピューティング パワーがさらに増大しているため、ゲームがこのテクノロジの次の目標となります。3 月 19 日に NVIDIA は、リアルタイムに映画品質のレンダリングをゲーム開発者に提供するレイ トレーシング テクノロジ、NVIDIA RTX を発表しました。これは、コンピューター グラフィックス アルゴリズムと GPU アーキテクチャに関する 10 年間の取り組みの成果です。
これは、NVIDIA Volta アーキテクチャ GPU 上で動作するレイ トレーシング エンジンから構成され、さまざまなインターフェイスを通じてレイ トレーシングをサポートするよう設計されています。NVIDIA は、Microsoft の新しい DirectX Raytracing (DXR) API を通じて、RTX を全面的にサポートできるよう Microsoft と協力しました。
また、ゲーム開発者によるこれらの機能の活用を支援するため、NVIDIA は、GameWorks SDK にレイ トレーシング ノイズ除去モジュールが追加されることも発表しました。近日中に更新される GameWorks SDK には、レイ トレーシングによるエリア シャドウと光沢反射が含まれます。
上記のすべてによって、ゲーム開発者やその他の専門家は、よりリアルな反射、陰影、屈折を生成するため、業務にレイ トレーシング技法を導入できるようになります。この結果、家庭で楽しむゲームは、ハリウッド大作映画のような品質に近づきます。
マイナス面は、自分でポップコーンを作らなければならなくなることです。
- マット ファー (Matt Phar)、ウェンツェル ジェーコブ (Wenzel Jakob)、グレッグ ハンフリーズ (Greg Humphreys) 著『Physically Based Rendering: From Theory to Implementation』を参照ください。この著書では、写真のようにリアルな最新のレンダリングを実行するための数学理論と実際的な技法の両方が解説されています。
- ゲームに対する影響については、GeForce.com の「NVIDIA RTX Technology: Making Real-Time Ray Tracing A Reality for Games」を参照ください。