新しいNVIDIA RTXハードウェアがレイトレーシングに与える影響をVlado氏が解説

[オリジナルの記事はこちら]

新しいGPUレイトレーシングハードウェアの発表を受け、このブレイクスルーがレンダリングの将来について何を意味するのか Chaos Groupの CTO [最高技術責任者] Vladimir Koylazov (Vlado)氏が語ります。


私達は20年近くに渡り、レイトレーシングレンダラーである「V-Ray」で世界最高品質のフォトリアリスティックレンダリングを研究し実装して来ました。レイトレーシングは光の物理的挙動に基づいているため、真のフォトリアリズムを実現するには最も自然な方法です。この理由から米国の映画芸術科学アカデミーでは、アカデミー科学技術賞にてレイトレーシングによるレンダリング技術が映像の向上に大きく貢献した事を認めています。しかしレイトレーシングの課題の1つに、フォトリアリズム(物理現象)を追求する程により多くの計算能力が必要となるという事があります。私たちは常にレイトレーシングをより速くするために努力してきました。私たちは10年前にV-RayでGPUの力を活用し始めました。そして今回ついにレイトレーシングの計算用に特別に設計された新しいGPUハードウェアを活用できる時代がやってきました。つまり、リアルタイム(秒間 24~30フレーム)でレイトレーシングの描画を行う事ががきるのです。

NVIDIAの次期Turing GPUとそれを使用するRTX製品ラインの発表は、特にコンピュータグラフィックスとレイトレーシングの歴史において重要なマイルストーンです。SIGGRAPH 2018でプロ用のQuadro RTXシリーズがアナウンスされ、一般向けの GeForce RTX シリーズが Gamescom 2018 でアナウンスされました。これらの新しいGPUには、レイトレーシングソリューションを高速化するとともに、可用性を大幅に向上させるための専用ハードウェア(RT Coreと呼ばれます)が含まれています。さらに NVLinkを使って簡単に複数のGPUを連結しメモリ空間を倍増させる事に対応しています。この新しいGPUデバイスが将来のレンダリングにどのような影響を及ぼすのでしょうか。

RTXシリーズのグラフィックスカードに含まれる RT Core

RT Coreの話をする前にレイトレーシングに関するいくつかの重要なことについて簡単に説明しましょう。シーンを横断するレイ(光)をトレースするプロセスは、レイ・キャスティングとシェーディングの2つの異なる部分に分ける事ができます。


レイ・キャスティング

「レイキャスティング」とは、シーン内のすべてのオブジェクトとレイを交差させるプロセスです。オブジェクトは、幾何学的プリミティブ(三角形、カーブ[毛髪の場合]、パーティクルなど)で構成されます。オブジェクトが複数にインスタンス化されている事もあります。一般的なプロダクションシーンでは、何億ものユニークなジオメトリック・プリミティブが存在することがあります。これら全てのプリミティブとRayの交差判定を高速に計算するにはシーンの構造をBVH(境界ボリューム階層)に分解してから処理する等の効率化が必要になります。

 

シェーディング

シェーディングとはオブジェクトの「見た目」を決定するプロセスです。これにはテクスチャマップとマテリアルプロパティの計算、オブジェクトが光にどのように反応するのかを計算します。シェーディングプロセスはオブジェクトの外観を計算するためにトレースするレイを決定する役目も果たします。いわゆる光源からのShadow Ray、反射Ray、グローバルイルミネーションRayです。実際のプロダクションシーンでは、シェーディングネットワークは非常に複雑なものになる可能性があり、手続きテクスチャの計算、ビットマップ、またDiffuseカラー、反射強度、粗さ、ノーマル(バンプマッピング)などのマテリアルプロパティの計算があります。ライティング計算もここに含まれています。


シーンのジオメトリの量とシェーダの複雑さによっては、レイキャスティングとシェーディングのバランスが大きく変わることがあります。典型的に非常にシンプルなシーンではレイキャスティング時間が80%を占めますが、重いプロダクションシーンではレイキャスティング時間が全体の20%にしかならない事があります。RTXグラフィックスカードには、レイキャスティングプロセスをアクセラレートする特殊な「RT Core」が搭載されています。レイキャスティングは膨大な処理を必要とするアルゴリズムなのでハードウェアに直接実装することで速度が大幅に向上します。ただし、レイキャスティングの計算が全くのゼロ時間だとしても、レイトレーシングではシェーディングの計算が存在するためRT Coreを使用する事によるスピードの増加はシーン内容によって異なります。一般的に、シンプルなシェーダで大量のジオメトリが存在するシーンではレイキャスティングに時間がかかりシェーディングに要する時間が短いので、RT Coreのアクセラレーションが最大限に影響します。対照的に複雑なシェーディングネットワークと多数の手続きテクスチャがあり、少ないジオメトリ量のシーンでは、RT Coreによるアクセラレーション効果が少ないでしょう。

この点を実証するために、NVIDIA RTXサポートを実装した実験版のV-Ray GPUで同じシーンをレンダリングしてみました。シーンは同じで、一方はグレーのシンプルマテリアルで全マテリアルをオーバーライドた物と、オリジナルの複雑なマテリアルでレンダリングした物です。シーンには合計で 95,668,638,333 のトライアングルがあり、1ピクセルあたり512サンプルの固定サンプリングレートでレンダリングされました。

シンプルなマテリアルでオーバーライドしたシーン。この場合、全時間の約76%の時間がレイ・キャスティングに費やさます。

複雑なマテリアルで計算されたシーン。この場合、全時間の約59%がレイ・キャスティングに費やされます。


まだリリースされていないNVIDIAハードウェアで実験している為、実際のパフォーマンス結果を掲載する事ができませんが、RT Coreのメリットを示唆することができます。上記のシーンは、Turingハードウェアのプレリリース版+リリース前のドライバーと、レイ・キャスティング量を追跡できるV-Ray GPUの実験バージョンでレンダリングされました。よりシンプルなシェーディングシーンでは、レンダリング時間の大部分がレイキャスティングに費やされるため、RT Coreのメリットが大きくなります。Chaos Groupでは新しいハードウェアから最大限のパフォーマンスを引き出すためにV-Ray GPUの動作方法自体を変更する方法も検討しています。なおTuringハードウェア自体でRT Core非対応のV-Ray GPUを実行しても、以前のPascal世代よりも大幅に高速である点にも注目してください。

アプリケーションがRT Coreを利用するように明示的にプログラムされていなければならない事にも注意が必要です。つまり、既存のレイトレーシングアプリケーションが自動的にメリットを享受できる訳ではありません。RT Coreは、公開されている3つのAPI(NVIDIA OptiX、Microsoft DirectX(DXR拡張機能経由)、Vulkan)を通じてプログラミングする必要があります。DirectXとVulkanはゲームやリアルタイムレンダーエンジンでの使用を意図していますが、OptiXはオフラインレンダラーでよく見られるようなプロダクションレイトレーシングに最適です。

Chaos Groupでは、製品内でRT Coreのパワーを活用する方法を研究するために、NNVIDIA社とおよそ1年に渡って協力してきました。 V-Ray GPUはこの技術をサポートする公認のアプリケーションであり、RT CoreをサポートするV-Ray GPUの実験的なビルドは既に存在しています。しかしV-Ray GPUのすべての機能で RT Coreを完全にサポートするにはまだ時間がかかります。現行の V-Ray GPUはどんなRTX GPUでも正常に動作しますが、RT Coreをまだ利用しない点注意してください。公式に RT Core のサポートを追加したバージョンでも、V-Ray GPUは従来のGPUカード(RT Core非対応GPU)を引き続きサポートします。

以下のビデオでは、RT Coreを利用できるように改良されたV-Ray GPUの実験バージョンを使用しています。マテリアルとジオメトリの更新が正常に動作することを示します。以下のビデオは動作を検証した物で、パフォーマンス(速度)のベンチマークではありません。正式なハードウェアがリリースされた後、パフォーマンス(速度)のベンチマークを別のブログ記事で公開します。

 

 

我々はまた、ハードウェアの能力を確かめる為に、Project Lavina のリアルタイム・レイトレーシングエンジンでRT Coreをテストしました。このプロジェクトでは主にリアルタイム描画に使用されているラスタライズレンダリングを完全なレイトレーシングで置き換えることができるかどうかに焦点を当てています。 DXR が RT Coreを公的にサポートする最初のリアルタイムAPIであったため、Project Lavinaは DXR をベースに記述されています。(Dirext XはWindowsでのみ動作します。)Chaos Groupでは Linuxオペレーティングシステムで RT Core をサポートするためにVulkanでの実装も検討しています。初期の実験結果は非常に有望であり、私たちはこの技術の開発と改善を継続したいと考えています。この技術はまだ登場したばかりです。リアルタイムパストレースに関しては現在世界中で活発に研究が行われており、今後数ヶ月のスパンで表示技術が向上するでしょう。完全なリアルタイムレイトレーシングの実現は、現在主流のラスタライズエンジン用にそれらを変換する退屈なプロセスなしにユーザーがリアルタイムででシーンを表示する新しい方法を提供するでしょう。

 

 

注意して欲しいのが、既存のゲームエンジンを使ったリアルタイムレイトレーシングのデモはラスタライズエンジンで描画されているという事です。レイトレーシングは反射や屈折で部分的に使われてるだけで、全体の描画はこれまでと同じラスタライズレンダリングです。Chaos Groupが研究・開発している物 (Project Lavina)は「完全なリアルタイム・レイトレーシング描画」です。

しかし、RT Coreは今回の新GPUの一部分に過ぎません。 RTXグラフィックスカードはNVLinkと呼ばれるものもサポートしており、パフォーマンスに与える影響を最小限に使用できるメモリ量を2倍にする事ができます。


NVLink

NVLinkは、2つ以上のGPUをブリッジで接続しGPU間のデータを非常に高速に共有できる技術です。これは、各GPUが他のGPUのメモリにアクセスできることを意味し、これを使用するとGPU枚数分にメモリが増加する事を意味します。この技術を活用するとV-Ray GPUのようなプログラムでは1枚のGPUカードに収まらないほど大きなシーンをレンダリングすることができます。NVLink登場前は複数のグラフィックスカードがある場合も、V-Ray GPUは各GPUのメモリにデータを複製する必要がありました。しかしNVLinkを使用するとVRAMをプールできます。たとえば、11GBのVRAMを搭載したGPUが2つありNVLinkに接続されている場合、V-Ray GPUを使用して22 GBまでのシーンをレンダリングできます。非常にシンプルで解りややすいです。 現在のV-Ray GPUは、NVLinkが使用可能な場合に自動的に検出して使用します。NVLink登場前でもGPUを2倍にしてもスピードだけが倍増されましたが、NVLink対応のGPUの場合、VRAMの容量も2倍にする事ができます。

NVLinkは2016年に導入され、V-Ray GPUがNVLinkを正式にサポートした世界初のレンダラでした(V-Ray 3.6以降のバージョンでサポート)これまで NVLinkは Quadro, Tesla等のプロフェッショナル向けカードでしか利用できませんでしたが、今回新しく発表された GeForce RTX 2080とGeForce RTX 2080 Tiのゲーミング用GPUでもNVLinkが利用できます。(2枚のカードをNVLinkに接続するには、別売のNVLinkコネクタが必要です)

 

 

まとめ

レイキャスティングだけをアクセラレーションするハードウェアは以前にも存在しましたが、大部分は成功しませんでした。シェーディングとレイキャスティングの計算は密接に関連しており、それぞれを異なるハードウェアデバイス上で実行することが効率的ではないためです。両方のプロセスを同一GPUの中で動作できるRTXアーキテクチャの登場は非常に興味深い出来事と言えるでしょう。ここ数年でRTXシリーズのGPUはレンダリングソフトウェアに大きな影響を与え、GPUレイトレーシングはオフラインとリアルタイムレンダリングの両方のコンピュータ生成イメージを作成するテクニックとして確立する事が期待されます。Chaos Groupでは、この新しいハードウェアの進歩をユーザーが簡単に利用出来る様に懸命に働いています。

The following two tabs change content below.