Unity を検索

開発中のプログレッシブライトマッパーのご紹介

2016年9月28日 カテゴリ: テクノロジー | 4 分 で読めます
シェア

Is this article helpful for you?

Thank you for your feedback!

3 月の GDC で初めて皆さんにお見せしてから、プログレッシブライトマッパーの開発に尽力してきました。以下のビデオをぜひ、ご覧ください。現在クローズドアルファ版のプログレッシブライトマッパーを簡単にご紹介しています:

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

プログレッシブライトマッパーとは?

プログレッシブライトマッパーとは、モンテカルロ法を利用したアンバイアスなパストレーサーで、Unityエディター内のグローバルイルミネーション(GI)を使ってライトマップをベイクします。(エディター内でどのように見えるかデモがご覧いただけますので、この文章を読み進めていただく前に、ぜひ動画をご覧ください)

過去 40年間、リアルタイムのアプリケーションでリアルタイムのレイトレースが可能になるのは5年先だと言われ続けており、今でもそう言われています。今のところプログレッシブライトマッパーは、ベイクしたライトだけに使用できる代替の処理手法となります。

それでは、Enlightenはどうなるのかというと、それはそのまま残ります。EnlightenはリアルタイムGIを提供できます。これは現時点でパストレーサーではできません。

なぜプログレッシブライトマッパーなのか?

プログレッシブライトマッパーは、シーンでライトをベイクするワークフローを改善することを目的としています。現在のUnityリリースでは、シーンに変更があると新しいベイクが必要で、その結果はベイクが完了したときにしか表示されません。Enlightenによってリアルタイムでライトの変更ができるようになり、即座にその結果を見られることができるようになりましたが、パラメーター、マテリアル、ジオメトリは依然、再ベイクする必要があり、その間は結果を見ることができません。

開発中のイテレーションが進むと、例えば変更を加え、それを確認してさらに変更を加えていくような作業を繰り返し行っていく際に、影や反射した光をベイクして、変更を加え、それから数分以上待つ、となると、待ち時間が長いほどフラストレーションがたまる作業になります。そのため、繰り返しのイテレーション作業によって品質を上げられるはずなのに、ベイクしたライティングで作業を行うことでそれが思ったように品質を上げられない結果となってしまいます。

ここでプログレッシブライトマッパーを使うと、ほとんどその場でフィードバックを得ることができます。ノイズのある結果が最初に現れますが、シーンビューで直接、クイックに作業できることで品質が上がっていきます。

interactive

また、プログレッシブライトマッパーは、ビューポートに表示される部分が優先されてベイクされるという利点があります。その部分のベイクが終わると、ビューポート以外のシーンのベイクを続けて行います。

さらに、プログレッシブライトマッパーはより安定して動かすことができます。というのも、プログレッシブライトマッパーは反射光などの間接的なライティングをフルライトマップ解像度にベイクするため、そこでアーティファクトは生成されにくくなります。設定も簡単で、UVをアンラップで用意するか、Unityでそれを作成し、「Baked Resolution」を設定することですべて、今までと同じようにベイクのツールを使用できます。また、ベイクの予定終了時間(EST)がプログレスバーに表示され、いつ処理が終了するのかを簡単に予測することができるようになります。

ETA prediction

最後に、結果が良ければベイクを止めることができ、現在の状態からライトマップを作成できます。ですから、休憩中に走らせておきサンプル数を増やしてベイクの品質を上げておくこともできます。そして作業を再開する準備ができたら止める、などということもできるのです。

プログレッシブライトマッパーができないこと

プログレッシブライトマッパーはリアルタイムのGIに取って代わるものではなく、Unityエディターでのベイクにだけ有効で、ゲーム内からベイクすることはできません。そのため、ゲームのプロシージャルなシーンでGIをベイクすることや、ライティング設定を時刻に基づいて変更し、読み込み時にベイクすることはできません。私たちはリアルタイムのGIを目指して先へ進む前に、Unityエディターのベイクのワークフローを確立させたいと考えています。

また、プログレッシブライトマッパーは、Enlightenでベイクするより必ず早くなるというわけではありません。シーンの設定を上手くすれば、Enlightenはとても早くできるので、プログレッシブライトマッパーを使えばすべてのシーンがより早くベイクできるとは限りません。ただし、ベイクをし始めてから何らかの視覚的なフィードバックを得るまでの時間は、プログレッシブライトマッパーの方が飛躍的に早いと言えます。

最後に、プログレッシブライトマッパーは、PowerVR Ray Tracingが有効なGPUや一般的なGPUのようなハードウェアをまだサポートしていません。現在は、ベイクをするためにCPUコアだけを使用しています。繰り返しの強調になりますが、最初のリリースではワークフローの改善に注力します。

いつ、プログレッシブライトマッパーを使えるようになりますか?

準備でき次第リリースしたいと思っています。現在、クローズドなアルファ版で、限られたゲーム開発者によって性能をテストしているところです。納得いく結果が得られたら、オープンベータ版を配布します。
オープンベータ版の準備が整うまで、皆様のフィードバックを心からお待ちしています。ページ下のコメント欄にご意見ご感想をお寄せください。

[gallery link="file" ids="42432,42435,42437,42460,42441,42442"]

 

謝辞

プログレッシブライトマッパーはUnityとImagination Technologiesの協力によって開発されました。ご協力いただいた以下の方々に感謝の意を表します。

  • Jens Fursund
  • Luke Peterson
imagination_logo_primary_rgb
2016年9月28日 カテゴリ: テクノロジー | 4 分 で読めます

Is this article helpful for you?

Thank you for your feedback!