VMT TECH BLOG

CEDEC 2020参加レポート Vol.1

こんにちはMonacaソムリエです。

今回の内容は先日のCEDEC 2020オンラインの参加レポートです。
解説しながらの記事の為、かなり、専門用語が多いので予めご了承ください。

CEDEC 2020とは?

CEDEC(Computer Entertainment Developers Conference)は
ゲームを中心とするコンピュータエンターテインメントの開発、
ビジネス、関連する技術、機器の研究開発などに携わる人々の
技術力向上と知識や情報の交流を促進するためのカンファレンスです。

今年はこの情勢下もあり、オンライン開催となりました。

3日間と非常に長く、コンテンツも非常に多いので、
私の業務でもかかわりが深い二つのテーマに絞らせていただきます。
今回はその一つ目です。

Unityの次の標準レンダリングパイプライン ”Universal Render Pipeline” は何がどう変わるのか

セッション概要

Universal Render Pipeline(URP)はUnityにおける次のUnity標準レンダリングパイプラインです。
URPは現行ビルトインのレンダリングパイプラインと比較してパフォーマンスや拡張性といった点
で優れていますが、移行するにあたり幾つかの落とし穴もあります。
このセッションでは、URPの機能概要からメリットやデメリット、そして拡張方法について紹介します。

URPとは?

もう少し解説しますと、もともとはモバイル用に設計された軽量レンダリングパイプライン
として以前はLight Weight Render Pipeline(以下LWRP)として、リリースされていましたが、
ビルトイン(もともとUnityに入っている標準)に変わる標準のレンダリングパイプライン
として、LWRPの後継としてURPがリリースされました。

モバイル用とは言いましたが、モバイルはもちろんクロスプラットフォーム設計に
なっていますので、様々なプラットフォーム、デバイスで活用できる
拡張性のある、レンダリングパイプラインといっていいでしょう。

レンダリングパイプラインとは?

この概念が非常に難しいのですが、この図を見てください。
01.レンダリングパイプラインとは

簡単に言うと、オブジェクトを描画する為の通り道です。
簡単すぎましたか??

要するに、描画したいオブジェクトを渡して、いろんな効果(光源、色、影やその他効果)
を行う処理(PASS)を条件によっていろんな分岐をして、通すことによって最終的に結果(絵)となります。

そしてこの処理(PASS)部分をカスタマイズすることができるのです。

URPの特徴は?

05.URP4つの特徴
・綺麗なグラフィックス
・最適化されたパフォーマンス
・ローエンドからハイエンドまで
・高い拡張性

例えば
新しい効果追加
処理(PASS)の順番を入れ替え
既存処理(PASS)の改変

自由にユーザーがカスタマイズできるというところがURPのメリットです。
簡単に言いますが、実際に触るのはかなり熟練度が必要です。。。
02.SRP
画像にはSRPとありますが、後程お話しするHigh Definition Render Pipeline(HDRP)
と合わせて、Scriptable Definition Render(以下SRPといいます)

LWRPとの違いは?

後継といっても、同じではありません。
06.LWRPとURPの違い
もともとテンプレートという扱いでしたので、LWRPは改造しやすいパイプラインでした。
URPは拡張しやすいパイプラインとなり、よりリッチな表現が可能というのが主な違いです。

URPの将来性は?

Unity 2021を目標にビルトインパイプラインの上位互換としてURPを定義するとのことです。
要は改造できないもともとある、パイプラインが改造できるURPにとって代わる(移行)というものです。
まだ、移行するにはサポートしていない機能があるので、難しいとは言っていますが、
正直早くやってほしい(ものすごく期待しているという意味です)ものです。。。
(2020年9月時点でUnityの最新バージョンはUnity2020.1です。)

特にURPでできなくなることが私にとっては致命的なことが多いというのが主観です。
08.URPでできなくなること
Shadow MaskとかPoint Light Shadowができないとかやめてほしいんですけどね。。。

あと、GI(Global Illumination)、SSR(Screen Space Refrection)、
SSAO(Screen-Space Ambient Occlusion)です。

綺麗なグラフィックスには欠かせないものばかりなので、何とかしてほしい。
っというのが、いちUnityユーザーとしての意見です。

Universal Render Pipelineで何が変わるか?

まずはパフォーマンスです。
09.Built-inとURPの違い-パフォーマンス
を見てください。

比較しほしい数値は下記です。
・FPS
・Batches
・SetPass calls

見方はFPSは数値が大きいほど、パフォーマンスが良いということです。
FPSに関しては以前の記事でも書きましたが、
Frame Per Secondといって、1秒間に呼ばれる描画回数なので、
その回数が多ければ多いほど、スムーズに動く=パフォーマンスが良いということです。

Batches、SetPass callsに関しては数値が少ないほどパフォーマンスが良いです。
厳密には違いますが、1フレーム描画する上での処理の回数なので、単純に
回数が少ないほどFPSが上がると思ってください。

プラグラムで例えたら、For文が10回より、1回のほうが処理早いよね?
っと言った方が良いかもしれません。

なんでそんなに早いのか?

SRP Batcherというものがありまして、要はバッチ処理をしてくれて大幅に
Draw Call(描画処理)を削減してくれます。
10.SRPBatcher
メカニズムとしてはマテリアルのあまり変化しない情報を永続化して、GPUメモリに転送
トランスフォームやオブジェクトの情報を大きなバッファに詰め込んでGPUに転送し
それを一気に描画する為、効率化されるというものです。

実際のSRP Batcherメリットは?

11.SRPBatcher-メリット
例えば、従来は一つのメッシュにマテリアルを複数持つとパフォーマンスが著しく下がるので
なるべくマテリアルの数は減らしていくというのが常識でしたが、SRP Batcherを使うと
複数あったとしても、それほどパフォーマンスに影響がない為、無理やりマテリアルを
一つに集約しなくても、効率よく描画してくれるので、質感表現の幅が広がります。

シングルパスレンダリング

もう一つの特徴としてライティングで、シングルパスレンダリングというものがあります。
12.シングルパスレンダリング
ビルトインパイプラインはマルチパスレンダリングを採用しています。
一見、マルチパスレンダリングのほうが早そうに思えますが、
ビルトインパイプラインはライトが複数あると、そのライトの数だけ
処理が走りますが、URPは複数あっても描画1回で済みます。
つまりDraw Callが減るということです。

最後に

URPとは?

拡張性に優れて、高速でそこそこ綺麗な表現ができる

URPで何が変わるか?

パフォーマンスが若干上がる。
カスタマイズ性があがり、変わった表現がやりやすくなる。

URPを拡張するには?

頑張って自作する。

個人的には将来性があり、様々プラットフォームで動くというところに
非常に魅力を感じています。

ただ、「そこそこ綺麗」とは書いていますが、ライトマップ(光源の事前計算)
が前提のところがあり、そこが私にとってはネックになっています。
要はそのような手法はやりたくないということです。

ランタイムでそこそこ綺麗を目指したいところなので、今後のバージョンアップに期待です。

次回は「クオリティを引き上げる!Unity HDRPのライティング、カメラ、ポストプロセス設定」
についての記事を書きます。
お楽しみに!!

Unityを使った3Dシステムの開発実績はこちら

3D/VR/ARのシステム開発のお問合せはこちら

新着記事一覧

バルテス株式会社
VALTES Advanced Technology, Inc.