Search Unity

HD レンダーパイプラインのリアルタイムレイトレーシングがプレビューになりました

, 3月 6, 2020

HD レンダーパイプライン(HDRP)のバージョン 7.2.0 のパッケージとともに、リアルタイムレイトレーシングのプレビュー版をお届けします。

HDRP は、高精細でフォトリアリスティックなビジュアルを作成するために使用されます。HDRP は、2019.3 のパッケージバージョン 7.2.0 と Unity バージョン 2019.3.2f1(リアルタイムレイトレーシングに必要)からプレビュー版ではなくなります。HDRP についての詳細はこちらの記事で確認できますが、本記事では特に HDRP が提供するレイトレーシング機能に焦点を当てていきます。

HDRP は物理ベースのレンダリングルールに従いますが、ラスタライズパイプラインの性質上、ライティング処理には限界があります。リアルタイムのレイトレーシングは、HDRP で使用されているスクリーンスペース近似に関連した可視性の問題がないため、より高い視覚的忠実度を実現することができます。また、ライティングのための事前ベイキング手順への依存を避けることができるので、アーティストのワークフローが改善します。

HDRP では、レイトレーシングには 2 つの異なる用途があります。

  1. リアルタイムのレイトレーシング技術とラスタライズをミックスしたもの。「ハイブリッドパイプライン」と呼ばれます。
  2. プログレッシブパストレーサー

ハイブリッドパイプライン

ハイブリッドパイプラインはリアルタイムアプリケーションをターゲットにしています。これは標準的なラスタライズ技術、特に HDRP パイプラインに依存していますが、様々なエフェクトをレイトレーシングバージョンに置き換えることができます。レイトレーシングは、ラスタライズアプローチに伴うスクリーンスペースの近似問題やその他の解決が困難な問題に悩まされることがないため、最終的な画像品質が向上します。

レイトレーシングをサポートするエフェクトには、HDRP で対応するレイトレーシングエフェクトの設定があります。これは、既存のエフェクトのレイトレーシングフラグを使って制御するか、または専用の新しいボリューム設定を使って制御します。以下のセクションでは、HDRP で利用可能なレイトレーシングエフェクトの概要を説明します。これらのエフェクトは、Lit.shader、Unlit.shader、LayeredLit.shader、および Unlit、Lit、Fabric の Shader Graph バージョンと互換性があります。

レイトレースによる反射

HDRP は反射のためのいくつかのオプションを提供しています。スクリーン空間反射、リフレクションプローブ、平面反射、空の反射です。レイトレースによる反射は、より高いビジュアル忠実度を持つ新しい選択肢をこのリストに追加しました。これは、スクリーンスペース反射ボリュームコンポーネントからアクセスできます。

レイトレースによるグローバルイルミネーション

Unity のライトマッパーを使用すると、ライトマップまたはライトプローブを作成して、シーンがオブジェクトに作成した間接的な拡散照明を保存することができます。これにより生成されるビジュアルは非常に魅力的ですが、ベイキングステップが必要となり、静的な照明の作成にしか使用できません。レイトレースによるグローバルイルミネーションでは、グローバルイルミネーションのボリュームコンポーネントと一緒に使用することで、ベイクされたライティングを置き換える新しいオプションを提供しています。

レイトレースによるアンビエントオクルージョン

スクリーンスペースアンビエントオクルージョン(SSAO)は、シーン内の間接照明の複雑さをシミュレートするための素晴らしいトリックです。SSAO は強力な結果をもたらしますが、スクリーン上で利用可能なデータに完全に依存しているため、視覚的な制限があります。しかしそれは、レイトレーシングを導入したバージョン、すなわちレイトレースによるアンビエントオクルージョン(Ray Traced Ambient Occlusion)を使うことで改善することが可能です。この機能は、Ambient Occlusion ボリュームコンポーネントで利用できます。

レイトレースによるシャドウ

レイトレースによるシャドウは、HDRP で通常のシャドウを置き換えることができます。この設定にはいくつかの利点があります:シャドウマップの解像度やバイアスに関連する問題を回避できることに加えて、レイトレースによるシャドウではシャドウの半影(ポイント、スポット、ディレクショナル)をコントロールでき、色付き(ディレクショナル)や半透明のシャドウ(ポイントとスポット)をサポートすることもできます。また、長方形のライトによるビューに依存したシャドウもサポートされています。これらのオプションはライト自体で利用できます。

レイトレースによるコンタクトシャドウ

シャドウマップでは、低解像度のレンダリングターゲットや様々なバイアスの問題により、オブジェクトと遮蔽物の接触などの詳細を捉えることが難しい場合があります。HDRP は、シャドウマップの解像度を上げずにこの状況を改善するオプションとして、コンタクトシャドウを提供しています。コンタクトシャドウは、デプスバッファのレイマーチングに依存しているため、スクリーンスペースのアーティファクトが表示されることがあります。代わりにレイトレースによるコンタクトシャドウを使用することで、これらのアーティファクトの出現を回避することができます。このオプションはライト自体で利用できます。

再帰レンダリング

何層にも重なった屈折性のある透明なマテリアルのレンダリングは、ラスタライズパイプラインで行うにはトリッキーです。HDRP は、単一の屈折インターフェースのオプションしか提供しておらず、レイトレーシングはそれを行う正確な方法を提供しています。再帰レンダリングボリュームコンポーネントは、透明なオブジェクトに対して複数の反射と屈折を実行することを可能にします。これには、オブジェクトのマテリアルがレンダリングパスの レイトレーシング設定を使用している必要があります

レイトレースによるサブサーフェススキャッタリング

半透明のサーフェスレンダリングは非常に複雑な問題ですが、HDRP では部分的にしか解決されていません。ボリュームコンポーネントのサブサーフェススキャッタリングでは、この効果をシミュレートするためにレイトレーシングを有効にすることができます。

パフォーマンス

リアルタイムのレイトレーシングでは GPU の使用量が非常に多くなります。各レイには、アプリケーションの最終的なフレームレートへの影響を考慮すべきレベルのコストがかかります。現在のハードウェアの状態では、これらすべてのレイトレーシング効果を同時に有効にすると、フレームレートが遅くなります。どのエフェクトを有効にするかは慎重に選択することをお勧めします。特にゲームでは、極端に長いフレーム時間を避けるために、一度に 1 つまたは 2 つのエフェクトのみを有効にすることをお勧めします。

HDRP では、多くのレイトレーシングエフェクトに 2 つのモードがあります。Quality と Performance です。

選択したモードに応じて、追加のオプションがあります。Quality は通常、照明効果(反射やグローバルイルミネーションなど)のための複数のバウンスオプションを可能にし、シェーディングモデルでの近似の使用も控えます。これらの理由から、この設定はゲームにはお勧めできません。Performance は、ゲームのフレームレートをターゲットにして、複雑な最適化を目に見えない形で適用する場合に使用するモードです。パフォーマンス最適化の詳細については、SIGGRAPH 2019 での講演「Leveraging Real-time Ray Tracing To Build A Hybrid Game Engine」を参照してください。エフェクトの中には、再帰レンダリングエフェクトのように Quality モードしかサポートしていないため、モード設定の選択肢がないものもあります。

レイトレースによるグローバルイルミネーションや再帰レンダリングはかなり処理が重いので、高フレームレートをターゲットにする場合にはお勧めできません。リファレンスのためのスクリーンショットを生成するのに向いています。また、レイトレースによるサブサーフェススキャッタリング機能はコストがすぐに上昇するので、無駄の無いように使用する必要があります。

ゲームでは、Performance モードを使い、レイトレースによるエフェクトをシャドウ、コンタクトシャドウ、アンビエントオクルージョン、反射に限定することをお勧めします。その他のエフェクトは、使用可能な場合、Performance モードでゲーム以外のインタラクティブなアプリケー ションに使用できますが、パフォーマンスモードの設定がないエフェクトは、リアルタイム性を維持するために、 控えめに使用するべきでしょう。

パフォーマンスを向上させるためのもう 1 つのオプションは、レイトレーシングエフェクトの実行中に発生する作業量を減らすことです。シェーダーグラフには、レイトレーシング専用のノードが用意されており、レイトレーシングでレンダリングする際にマテリアルのコストを下げることができます。

プログレッシブパストレーサー

プログレッシブパストレーサーパイプラインは、高品質の画像レンダリングをターゲットにしており、多くの場合、インタラクティブなアプリケーションで使用されます。ハイブリッドパイプラインとは異なり、シェーディングのためにラスタライズパイプラインに依存しませんが、ポストプロセッシングではラスタライズパイプラインに依存します。このモードでのライティングは非常に正確で、映画業界で製作される水準に近い絵を作ることができますが、処理にはある程度の時間が必要です。そのため、この方法では、画像が最終的な結果に収束するまでの数フレームの間、ノイズの多い画像を生成します。

パストレーシングボリュームコンポーネントが利用可能で、有効にすると、HDRP 内の他のレイトレーシングや通常のパイプライン効果を置き換えることができます。これは、比較用のリファレンスを作成するのにも便利です。

パストレーシングを使ったフレームのプログレッシブレンダリング

画像が完全に収束した後の最終結果

「プレビュー版」とはどういう意味ですか?

HDRP 7.2.0 のレイトレーシングはプレビュー版です。これは、Unity 2019.3.2f1 のプレビュー版にある DX12 と DXR の低レベル API に依存しているため、いくつかの機能が欠けています。プレビュー版のレイトレーシングは、一部の機能、ユーザーインターフェース、パフォーマンス、ツール、データフォーマットが新しいバージョンで変更される可能性があり、データの移行が保証されていないことを意味します。本番環境でプレビュー機能を使用することはお勧めできません。

Unity 2019.3 の HDRP レイトレーシングには以下の制限があります。

  • DX12 以外のプラットフォームでのレイトレーシングはサポートされておらず、また、D3D12_RAYTRACING_TIER 1.0 のみがサポートされています。
  • デフォーマー(スキン、頂点アニメーション)には対応していません。
  • VFX、Terrain には対応していません。
  • HDRP のマテリアル(Hair、StackLit、Eye、AxF マテリアルを含む)のいくつかをサポートしていません。
  • シャドウの正しいカリングが行われません。代わりに視錐台カリングを使用します。

ハードウェア要件

完全なレイトレーシングハードウェアアクセラレーションは、以下のGPUで利用可能です。

  • NVIDIA GeForce RTX 2060、RTX 2080 Super、RTX 2070、RTX 2070 Super、RTX 2080、RTX 2080 Super、RTX 2080 Ti
  • NVIDIA TITAN RTX
  • NVIDIA Quadro RTX 3000(ラップトップのみ)、RTX 4000、RTX 5000、RTX 6000、RTX 8000

NVIDIA は、一部の前世代のグラフィックスカードにもレイトレーシングフォールバックを提供しています。

  • NVIDIA GeForce GTX
    • Turing 世代:GTX 1650、GTX 1660 Super、GTX 1660 Ti
    • Pascal 世代:GTX 1060、GTX 1070、GTX 1080、GTX 1080 Ti
  • NVIDIA TITAN V
  • NVIDIA Quadro:P4000、P5000、P6000、V100

お使いのコンピューターが上記のグラフィックカードを搭載している場合、Unity でレイトレーシングを実行することができます。Unity を開く前に、NVIDIA ドライバを最新バージョンにアップデートしてください。最適な作成体験のためにNVIDIA Quadro または Studio ドライバーを使用し、Windows のバージョンが 1809 以上であることを確認してください。

HDRPレイトレーシングで自分の道を見つける

HDRPレイトレーシングを始めるにあたっては、こちらの入門用ドキュメンテーションをご覧ください。このドキュメントには、この記事で触れたすべてのレイトレーシング機能の詳細な説明が含まれています。

HDRP でレイトレーシングを始めるには、SmallOfficeRayTracing というサンプルプロジェクトに触れてみるのが一番簡単で良い方法です。レイトレーシング向けの設定がすでに完了しており、エフェクトも適切に設定された状態で有効化されています。プロジェクトはこのレポジトリで入手できます。

サンプルプロジェクトには 3 つのシーンがあり、これらのシーンはリアルタイムレイトレーシングの 3 つの異なるユースケースを示しています。

RayTracingPerformance シーン

このシーンでは、パフォーマンスの良さ(Nvidia 2080 で約 60fps)を念頭に置いて、数個のレイトレーシングエフェクトが有効にされています。以下のエフェクトが有効になっています。

  • レイトレースによる反射
  • レイトレースによるグローバルイルミネーション
  • レイトレースによるディレクショナルシャドウ
  • レイトレースによるエリアライトの確率的シャドウ
  • レイトレースによるアンビエントオクルージョン

RayTracingQuality シーン

このシーンには、RayTracingPerformance シーンと同じエフェクトに、1 つだけ追加のエフェクトとして、再帰レンダリングが含まれています。これらのエフェクトは Quality モード(このモードが使用可能な場合)で設定されており、これにより反射のためのバウンス数が増加します。

RayTracingPathTracing シーン

このシーンは、プログレッシブパストレーサーを使ってレンダリングされるように設定されています。

新しいプロジェクトの開始

新しいプロジェクトをゼロから始める手助けとなるよう、レイトレーシングの設定を正しく行うためのHDRP ウィザードを提供しています。このウィザードは、HDRP + DXRタブの設定を検証し、正しくない場合は修正することができます。

ウィザードを使わず、レイトレーシングプロジェクトを手動で設定する場合は、Unity のドキュメンテーションを参照してください。

今後に向けて

リアルタイムレイトレーシングについては、以下の機能をサポートするための開発を進めています。

  • HDRP マテリアル(StackLit、Hair など)
  • ジオメトリ(地形、パーティクルなど)
  • バーチャルリアリティ
  • さまざまな状況設定にわたってスケーラビリティを向上させるためのフォールバックの改善

Unity 2020.1 では、スキニング、ブレンドシェイプ、Alembic 変形がサポートされる予定です。

HDRPレイトレーシングを始めよう

今日からプロジェクトで HDRP レイトレーシングを利用することができます。しかし、この機能はまだ本番環境での利用には対応していないことを覚えておいてください。また、Unite、SIGGRAPH、GDC などのイベントでの Unity チームによるプレゼンテーションや、Unity ブログの記事「現実 vs イリュージョン」や、「 レイトレーシングがユーザーにもたらす価値」からも有益な情報が得られます。SIGGRAPH で発表された初心者向けのプレゼンテーションも利用できますし、もっと深く掘り下げて HDRP レイトレーシングのアーキテクチャについて学びたい場合は、講演「Leveraging Ray Tracing Hardware Acceleration In The Unity Game Engine」が良い情報源となると思います。

私たちのチームはまだ立ち上がったばかりで、開発はこれからも続いていきます。HDRP RayTracing フォーラムで、あなたの経験についてフィードバックを共有してください!

7 replies on “HD レンダーパイプラインのリアルタイムレイトレーシングがプレビューになりました”

Great post. Personally I was wishing that Unity would wait for a while for Raytracing as a technology to mature enough and be widely adopted across multiple hardware and graphics libraries before Unity jumps on board. But I get that it’s got to compete with Unreal so sometimes, vanity features like this are a necessary evil. Nonetheless the results are pretty stunning.

Sadly, vanity features such as these are often the differentiator about what engine to use even when it makes no sense whatsoever. Your artists demand it, your designers demand it, sometimes even your investors demand it. So it is important not only to be current, but also be the one on top of the vanity feature list.

Thanks. That would be great news… Last year. In the mean time competitors using other engines are providing more advanced visualization solutions today. Please enable Raytrace in VR for 2020.1 and what would be great news today, would be that you are working on URP support too. I look forward to it!

Normally yes. That is one of the huge benefits Quadro cards had since their invention. If I am not mistaken, at least up to 4 Quadros can be used simultaneously. Whether DXR takes advantage of that or how you should structure your project in order to take advantage of them is a different matter.

I know Unity is vey big on multi-platform support. Are you planning on adding ray-tracing support to other platforms? (Metal, Vulcan, etc.)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です