Unity を検索

Unity 2022.2 以降のグローバルイルミネーションのアップデート

2022年12月21日 カテゴリ: テクノロジー | 14 分 で読めます
Global Illumination updates in 2022.2 and beyond | Hero image
Global Illumination updates in 2022.2 and beyond | Hero image
取り上げているトピック
シェア

Unity 2022.2 TECH ストリームのリリースにより、Unity のプログレッシブライトマッパーを使ったライトのベイキングのパフォーマンスと安定性が向上し、さらにユーザー体験を向上させる開発体験周りの細かな改善が施されていることにお気づきになるかと思います。また、HD レンダーパイプライン(HDRP)のパストレーシングに関する変更点や、Adaptive Probe Volumes(APV)のプレビュー版リリースにおける機能追加も含まれています。さらに、Enlighten の非推奨化の計画についての詳細もご覧いただけます。記事の残りの部分ではこれらのアップデートのハイライトをお読みいただけます。また、最後のセクションでは、Unity が計画しているグローバルイルミネーション(GI)のロードマップの概要もお見逃しなく。

Enlighten Baked GI の非推奨化

フォーラム投稿「Update on Global Illumination 2021」では、グローバルイルミネーションのロードマップと Enlighten の非推奨化の計画について詳しい情報を提供しました。現時点では、Enlighten Realtime GI は影響を受けないことにご留意ください。

ベイク済みのグローバルイルミネーションについては、Unity の GPU ライトマッパーの安定性とリーチを向上させることに引き続き注力します。より多くのユーザーに高速で安定した、よりアクセスしやすいソリューションを提供するために、この取り組みを行っています。

その一環として、Enlighten は Enlighten Baked GI を手始めに非推奨化していく道のりを進んでいます。Unity のライトマッパーは Enlighten Baked GI の代替となるもので、多くのリリースで使用されています。現在 Enlighten Baked GI をご利用の方で、Unity 2022.2 以降にアップグレード予定の方は、Unity 2022.2 リリースから Unity のライトマッパーに移行し、これらのライトマッパーで新しいプロジェクトを開始することをおすすめいたします。

Unity 2022.2 リリースで、Enlighten Baked GI が API で非推奨となり、デフォルトで Unity エディター内の Lighting 設定の Baked GI 生成のオプションの中に表示されなくなったことにお気づきでしょう。Unity 2022.2 リリースにアップグレードし、既存のプロジェクトで Enlighten Baked GI を使用している方は、Lighting 設定が自動的に Progressive CPU ベイキングに変更されます(Apple シリコンデバイスの場合は Progressive GPU になります)。今後は、Unity の CPU プログレッシブライトマッパーまたは GPU プログレッシブライトマッパーのどちらを使用するか選択できます。

Enlighten Baked GI から Unity のライトマッパーへの移行期間中は、Enlighten Baked GI を使い続けたいという要望があることも理解しています。そのため、Enlighten Baked GI を使う必要がある場合は、Edit > Project Settings > Graphics の設定から Enlighten Baked GI を再度有効にすることができるようになっています。ただし、この設定は Unity 2023.1 リリースで削除される予定です。

私たちは、皆さんに Enlighten Baked GI から Unity のライトマッパーへの移行を成功裏に行っていただくことを望んでいます。何か問題が発生した場合は、Unity の Global Illumination フォーラムにフィードバックを投稿するか、Unity QA - バグレポーティング を使用してバグを報告してください。

Adaptive Probe Volumes

Unity 2022.2 リリースにおいては、Adaptive Probe Volumes のプレビュー機能の開発を継続しています。この取り組みは、光漏れの防止の初期実装から始まります。

光漏れの防止は、プローブで照らされた静的なジオメトリを実現するためのステップとなります。これにより、特定のシナリオにおいて、ライトプローブが静的オブジェクトの一部のライトマップを置き換えることが可能になります。

また、GPU メモリストリーミングをサポートしました。これにより、ライトプローブのデータが GPU メモリに完全に収まらないシーンを構築し、実行する上で活用することができます。

A debug view of Adaptive Probe Volumes demonstrating how probes’ density increases with the density of the area of the scene: This image uses the ArchVizPRO Interior Vol.8 assets from the Unity Asset Store.
Adaptive Probe Volumes のデバッグビューで、シーンの領域の密度に応じてプローブの密度が増加することをデモしているところ。この画像は、Unity Asset Store の ArchVizPRO Interior Vol.8 アセットを使用している。

最後に、ライトプローブで照らした複数のライティングシナリオをベイクするためのプレビューをご紹介します。これにより、オーサリング時や実行時に、複数のライティングデータセット間のオーサリング、ベイク、ブレンドが可能になります。

An example of Llight Pprobe-lit lighting scenarios, one scenario for daytime lighting and one scenario for nighttime lighting.  This image uses assets from ArchVizPro Interior Vol.7 HDRP from the Unity Asset Store.
ライトプローブで照らしたライティングシナリオのサンプル。昼間のライティングシナリオと夜間のライティングシナリオがそれぞれ 1 つずつある。この画像は、Unity Asset Store の ArchVizPro Interior Vol.7 HDRP アセットを使用している。

HDRP パストレーシングデノイジング

HDRP パストレーシングデノイジングは、これまで不可能でだった、あるいはフィルタリングなしのサンプル蓄積/コンバージェンスを使って多くの時間が必要とされていた状況において、ノイズのないパストレーシング画像を実現する能力を提供します。なお、これはオフラインまたはインタラクティブなレンダリングのためのデノイジングに関連するもので、ゲーム体験向けのリアルタイムでのパストレーシングはサポートしていません。

Part of the HDRP template scene demonstrating a comparison of path tracing with denoising off vs denoising on
HDRP テンプレートシーンの一部を使った、ノイズ除去オフとノイズ除去オンのパストレーシングの比較。

Optix 7 のアップデートとメモリ消費量の削減

Unity 2022.2 では、ライトマッパー用の Optix Denoiser がバージョン 7 に更新されました。同時に、ノイズ除去ではタイリングを使い、メモリ消費量を削減するようになっています。その結果、より高解像度のライトマップのベイクとノイズ除去を、メモリ不足になるリスクを抑えて行えるようになりました。

Unity Denoising パッケージと公開スクリプティング API

Unity 2022.2 リリースでは、内部の画像ノイズ除去インフラストラクチャをパッケージに移行し、その機能を公開 API を通じて C# スクリプトに公開しています。この共通 API を使用すると、プラットフォームやハードウェアの能力に応じて、OptixOIDN など、異なるノイズ除去バックエンドを選択することができます。

主な修正と改善点

ライトプローブの安定性向上

ライトプローブを使用している一部のユーザーから、シーンのロードとアンロードを追加で行うと、再生モードでエディターのクラッシュが発生するという報告を受け取りました。こうしたクラッシュの根本原因は複数ありますが、共通するテーマは、その時開いているシーンのライトプローブのセットがいつレンダリングできるようになるのかが明確でないこと、または明確に定義されていないことでした。そのため、ライトプローブのセットの背後にある状態が破損することがありました。

Unity 2022.2 ではコードが改善され、ライトプローブのセットがステージングされ、レンダリングの準備が整った時点で、明確に定義されるようになりました。これは、クラッシュを引き起こす可能性のある破損した状態の既知のケースを修正するものです。

ライトプローブのハル検索の改善

従来は、ライトプローブで照らされたオブジェクトを四面体ハルの外に移動させると、ライトプローブ四面体ハル全体を検索して最も近いライトプローブを見つけるために、非常に遅いパスが採用されるようになっていました。このコストは、ハルの外側にあるオブジェクトや四面体ハルの複雑さに応じて線形にスケールアップするため、大規模なプロジェクトでは特に大きな影響を与える可能性があります。

新しいプロジェクトのデフォルト動作を改善するため(およびレガシープロジェクトのオプトイン設定をユーザーに提供するため)、Graphics 設定 に追加されたプロパティで、ライトプローブ四面体ハルの境界の外に配置されたライトプローブで照らされたオブジェクトのサンプリング動作を定義するようになりました。また、ハルの外側にあるオブジェクトに対して、ハル全体を検索するのではなく、アンビエントプローブを使う高速なパスが追加されました。

SkyManager の不具合修正

チームは最近、特定のシナリオでプレイヤーのビルドから環境ライティングが欠落する問題を修正しました。これは例えば、シーンをベイクしていない場合などに発生することがあります。

OpenCL カーネルキャッシング

新しいプロジェクトでの OpenCL シェーダーのロード時間が著しく長くなる問題を解決するために、GICache にキャッシュされたバイナリを通して OpenCL シェーダーのロード段階を高速化することで、リグレッションを修正しました。私たちのテストでは、OpenCL シェーダーを GICache から読み込むと、GPU ライトマップのパフォーマンスが著しく向上しました(以下の画像にも示されています)。

ただし、エディターの初回起動時には、まだキャッシュが蓄積していないため、この場合の実行だけは以前と同様に遅くなることに注意してください。

Measurable performance improvements for compile times of bakes in our test environment
テスト環境におけるベイクのコンパイル時間について、目に見えるパフォーマンスの向上が見られた

開発体験の向上

グローバルイルミネーションに関連して、Unity 2022.2 リリースで提供される全体的なユーザー体験に影響を与える、小さいながら注目すべき改善をいくつかご紹介します。

  • Lighting ウィンドウのフィールドとプロパティのアラインメントの改善
  • New ボタンと Clone ボタンを UI の同じ行に配置し、Lighting Settings Assets の作成を効率化
  • Min and Max Bounces フィールドを 1 つの Max Bounces プロパティに統合
  • ガウシアンフィルターの精度を 0.1 テクセル刻みに改善(従来は 1 テクセル刻み固定)。
  • 可読性の向上を狙った Lightmap Parameters Asset UI の再構成

今後の方針

いつも通り、最新の計画が反映されたグローバルイルミネーションロードマップは、Productboard でご覧いただけます。さらにいくつかのハイライトがあります。

Adaptive Probe Volumes

Unity 2023.1 リリースでは、Adaptive Probe Volumes のコア機能とユーザー体験が改善され、それに伴ってこの機能から「実験的機能/プレビュー版」のラベルが削除されます。また、ユニバーサルレンダーパイプライン(URP)への Adaptive Probe Volumes のサポートの実装を進めています。最初のイテレーションは、Lighting Scenario Blending をサポートしておらず、特にローエンドなプラットフォームで実行する場合、まだパフォーマンスが最適化されていない可能性があることに注意してください。

事前計算済みリアルタイムグローバルイルミネーション

事前計算済みリアルタイムグローバルイルミネーション(GI)と共に、レイトレースによるグローバルイルミネーション(RTGI)やスクリーン空間グローバルイルミネーション(SSGI)と比較して、より幅広いプラットフォームでスケールするリアルタイムなグローバルイルミネーションのためのソリューションを提供します。この事前計算済みリアルタイム GI ソリューションは、事前ベイク済みのライトプローブデータに基づくもので、実行時にプローブで照らされたオブジェクトの間接ライティングを動的に更新し、壁、天井、地形などの静的な物体からやってくる動的な光によるリアルタイムなグローバルイルミネーションのオーサリング、構築、実行を可能にするものです。

エディター内のベイク済み GI のリアルタイムプレビュー

ベイク済みライティングのプレビューを素早く行うために、専用のプレビューパスを用意し、ベイク済みライティングデータに対する高速なイテレーションを実現しています。カメラを起点に光路を生成する「バックワード」パストレースパイプラインを用いてシーンの可視部分のみのライティングを計算することで、瞬時にライティングのプレビューを行うことができます。この機能は、ハードウェアでアクセラレーションされたレイトレーシングが利用可能な場合、これを利用し、また、ハードウェアでレイトレーシングを行わない GPU では、コンピュートシェーダーのフォールバックを使用して動作します。

GPU ライトマッパーの改良

GPU ライトマッパーの基礎的な作業に取り組み続けた結果、より多くのユーザーに GPU ライトマッパーをお使いいただけるようになり、より安定した予測可能なライトのベイキングを基礎として、開発速度を向上していただくことができます。

Light Baking C# API

Light Baking Public C# API によって、堅牢で副作用がなく、サポートのついた C# API を提供したいと考えています。この API では、GI ベイクに影響を与える入力(例:メッシュトランスフォームマテリアルライトなど)や、生成のための出力を定義できます。出力としては、ライトマップやライトプローブ、およびその個別のコンポーネント、irradiancedirectionalityocclusionoctahedral depth のようなものを考えてください。

Enlighten Baked GI の非推奨化

Enlighten Realtime GI の非推奨となったパスの詳細は、フォーラム投稿「Update on Global Illumination 2021」をご覧ください。

追加情報

2022年12月21日 カテゴリ: テクノロジー | 14 分 で読めます
取り上げているトピック
フォーラムでディスカッションに参加する
関連する投稿