オープニングトーク

高橋啓治郎氏(以下、高橋):2022年2月24日木曜日のUnity STATIONを始めます。今回はURP特集ということで、URPの識者をゲストにお呼びしています。

大下岳志氏(以下、大下):識者(笑)。

高橋:一応、自己紹介しておきましょう。僕は、Unityの高橋です。

大下:Unityの大下です。よろしくお願いします。

高橋:よろしくお願いします。確か大下さんは、前回のシェーダーグラフ特集の時に参加してもらいました。

大下:そうです。

高橋:今回も例のごとく、京都から遠隔で参加してもらっています。東京はまだ寒いですが京都はどうですか。

大下:京都も今日は寒いんですけど、だんだん主に花粉を中心に春の気配を感じます(笑)。

高橋:そろそろですよね(笑)。こちらも来週あたりからヤバいと言われていて、春が来るという感じになっています。いつもオープニングではUnityの最新ニュースを紹介していますが、今週はニュースのネタがなかったので、スライドのサムネ画像で使用している女性剣士のモデル、Kayaさんを紹介したいと思います。

今回は「Project Kaya」という、Unity KOREAでやっていたプロジェクトのアセットを使わせていただきました。これはもともとURPのセミナー用に作られたサンプルデータという位置付けのモデルです。今回はURPの特集なので都合がいいです。欧米勢の作ったアセットよりも、我々アジア勢にとってはなんだか親しみが持てる。実際のゲームの応用に近いモデルなので、ちょうどいいかなと思いました。

大下:ええ。

高橋:今回このサムネを大下さんに作ってもらって、実際にKayaさんを配置してもらいました。Kayaさんのモデルって、実際のところどうでしたか?

大下:やはりURP向けなので、軽量でもあり、現実的な作りという感じがしました。

高橋:確かに。デザイン自体も実際にゲームに出てきそうですしね。

大下:そうなんです。すごくバランスがよくて、超ハイエンドというよりもハイエンドモバイルくらいでうまく作られている印象がありました。

高橋:確かに。ということで、今後URPの技術検証やベンチマークなどを行う際には、みなさんもKayaさんを使ってみてはいかがでしょうか。

大量のアップデートで大きく変わったURP 12

高橋:では、本編のスタートです。最初に、今回の趣旨をお話ししましょうかね。今回のUnity STATIONは「URP総点検! Unity 2021.2(URP 12)における更新内容を総チェック!」です。

2021年末にリリースされた最新版のUnityである、Unity 2021.2におけるURPとして、URP 12というバージョンナンバーが付いていますが、この更新内容をすべてチェックします。予想以上に大量のアップデートになっていて、僕も内容を見て驚きました。大下さんも最初にアップデートを見た時にびっくりしたんじゃないですか。

大下:そうですね。今回特にURPは1段階、本当に大きくいろいろ加わった感じがします。

高橋:確かに2021年のバージョン2021.1に間に合わなかったアップデートを全部詰め込んだ感じです。2021年の総決算のようなアップデートになっていました。更新内容のリストはURPのマニュアルの「What's New」というページでチェックできます。(スライドを指して)ちょっと開いてみましょうか。

「What's New in URP 12」はこのようにチェンジログが網羅されていますが、スクロールしてもなかなか終わらない、すごく長いアップデートになっていて、ウォオオッて感じなんです。基本的には今日全部チェックしたいのですが、最初から最後まで順にやってくと、どれが重要なのかイマイチわからなくなってしまうので、今日はこの中から、特に重要なポイントや項目をいくつかピックアップして解説して、後半のコーナーでサラッと全体を流すという2段階の流れにしたいと思っています。

まずは、大下さんにアーティスト目線でピックアップしてもらった、注目のアップデートポイントをいくつか紹介してもらいます。

ワールド空間上でマテリアルを投影する「URP decal system」

大下:私から2、3紹介します。1つ目は、スライドに書かれている「URP decal system」についてです。

decal systemは、HDRPでは以前からありましたが、ワールド空間のシーン上でマテリアルを特定のオブジェクトに投影して、上書きやブレンドなどができる仕組みです。decalは転写シールみたいな意味ですが、それに近い機能です。

URPは単純な図柄だけではなく、マテリアルで使うさまざまな要素を上書き・ブレンドできる仕組みになっているので、スライドのような汚しや質感を変えたり、ぜんぜん違う質感のものを一部だけ載せることもできます。

高橋:なるほど。

大下:(スライドを指して)わかりにくいかもしれませんが、壁と床のどちらにも1枚のテクスチャが貼られています。空間上で転写する、つまり投影です。オブジェクトをまたいで空間に絵を描くことができるのも特徴です。

高橋:ジオメトリの複雑度をさらに越えて、細かなディテールを転写できるイメージですね。

大下:まさに。すごくおもしろい機能だと思います。デカールを使いたい場合は、Renderer FeaturesにDecalという機能を追加すると、すぐに使えるようになります。

高橋:Renderer Featuresに入れるんですね。

大下:はい。URPにはこういう設定をする箇所がいろいろあります。実際に使う場合、オブジェクトはレンダリングからURPデカールプロジェクターを選び、独自のオブジェクトを作ります。これは、大きくバウンディングボックスとマテリアルのスロットという構成になっています。バウンディングボックスは(スライドを指して)シーン上に出ているような四角い空間を示す箱です。この中に入っているオブジェクトにデカールが投影されます。

投影するものは、マテリアルでセットするというかたちです。マテリアルは、今のところデカール専用のものとしてシェーダーグラフですべて設定するようになっています。これがデカール専用のマテリアルを持っているHDRPとの、ちょっとした違いです。

今のところ(シェーダーグラフは)これだけです。アルファという項目がいくつか加わって、要素ごとにマスクをかけるようになっているのがデカールシェーダーグラフの特徴です。ちょっと癖があるので、また別の機会にもう少し詳しく話せたらと思います。

高橋:そうですね。

ゲームシステム的で必要な表現の幅が広がる

大下:本当にいろいろな使い道がありますが、試しにスライドのようなどこかで見た感じのゲームを作ってみました。

高橋:何かを発射して、ビチャッてなっていますね(笑)。

大下:これらもデカールでやりやすい分野の1つです。これは、カメラからレイを飛ばしてヒットしたところに、デカールのプレハブのクローンをどんどん作るような使い方です。

高橋:まさにね。

大下:こういうやり方でダメージのあとや足跡を簡単につけられるので、インタラクティブな使い方がたくさんできます。

高橋:確かにゲームシステム的に必要な表現の幅がすごく広がるので、重要な更新ですね。

大下:そうですね。板ポリを置いていくよりもソートの心配が少なくなるのはすごくいいことだと思います。

高橋:「URPでのデカールの処理負荷はどのくらいでしょうか」という質問が来ています。

大下:あまり多用しないほうがいいというよりも、数と種類によると思います。

高橋:デカールについては別の機会にフィーチャーしたいと思っています。負荷についてもその時に言及できるかもしれないので、お楽しみということで。

さまざまな種類のレンズフレアを再現できる「Lens Flare system」

大下:(スライドを指して)2つ目は、「Lens Flare system」です。

ご存じの方も多いと思いますが、すごくまぶしいものをカメラで写した時に、その光がレンズの中で散乱して起こるエフェクトです。太陽のトゲトゲとか、手前に浮かぶ八角形の光がそうです。

今回追加されたURPのレンズフレアは、コンポーネントとして提供されているので、オブジェクトにインスペクタからLens Flare Data (SRP)を追加すれば使えるようになります。SRPとは書かれてない、レンズフレアというコンポーネントもあります。そちらを使うと出ないのでご注意ください。

このコンポーネントは、基本的にはLens Flare Dataというアセットを指定するスロットに任意のデータを入れることで、いろいろなレンズフレアのかたちができる仕組みになっています。また、Lens Flare Dataは自分で作れますが、独自形式でゼロから作るにはハードルが高そうです。

高橋:難しいですね。僕もやってみましたが、すごく大変でした。

大下:大変ですよね。今スライドに映っているように、すべての要素をどんどん追加して項目を作っていくんですが、項目ごとにたくさんの設定があって、本当に全部コントロールするの? という感じなんですよね。ここはぜひサンプルに触ってもらうとこから始めてほしいと思っていますが、そのサンプルがある場所が少しわかりにくいので説明しておきます。

パッケージマネージャーからUniversal RPのパッケージを開くと、中に「サンプル」という項目があります。そこを開くと、URP向けに作られたサンプルの一覧が出てきます。今はこの1つだけです。

これをインポートするとプロジェクトの中にSamplesというフォルダができて、レンズフレアに限らずいろいろなサンプルがこの中に入っています。これを入れるだけで10個以上のLens Flare Dataが手に入るので、それを使ってもらうだけでスライドのようないろいろな種類のレンズフレアを再現できます。

高橋:僕もやってみました。自分で作るのは無理なので。サンプルから持ってくることを強くお勧めします。

大下:そうですね。このサンプルで、太陽のレンズフレアだけではなく、アナモルフィックレンズフレアなどいろいろできることがわかると思うので、ぜひ見てください。

1つ補足というか裏技ではありませんが、先ほどコンポーネントで提供されていると話したじゃないですか。このコンポーネントはライトオブジェクト以外にもつけられるんです。それを使うと(スライドを指して)このように、何もないところに空のオブジェクトでレンズフレアだけを置くこともできます。こういうキャラクターにつけると、いわゆる謎の光みたいな。

高橋:センシティブな表現があった時に光るみたいな。これは発明ですね。

大下:もしかするとレーティングにも有利になるお役立ち情報かなと。

高橋:そうかもしれませんね。これはおもしろいな。

レンダリングの各要素を個別に確認できる「Scene Debug View Modes」

大下:最後の3つ目は、「Scene Debug View Modes」です。

これはすでにビルトインやHDRPにもありますが、レンダリングのいろいろな要素を個別に確認できる機能です。レンダリングの工程が複雑な絵作りの時や、ガッツリゲームを作った時の最適化には必須の機能だと思うのですが、URPにも搭載されました。

(スライドを指して)今はマテリアルの各要素をビジュアライズして見ていますが、確認できる項目は本当にたくさんあります。大きくマテリアル、ライティング、レンダリングの3つに分けられ、その中にたくさん要素が入っています。本格的な開発ではどれも重要といえば重要ですが、今のURPで私が特に大事だと思う項目だけに色をつけてみました。

Lighting Complexityは、スクリーンをタイル状に区切って、そのタイルの中で何個のライトを使っているかという情報を可視化できます。ライトの数ってURPではけっこう重要なので。

高橋:そうですね。

大下:これはあってよかったです。次のAdditional Lightは、先ほどと同じ。Main LightとAdditional LightはURPの扱いが違います。Additionalだけでの確認もしたくなるかなと。ほかに、Pixel Validationは不正な値の入っているピクセルを検出してくれる機能です。URPは従来と比べてシェーダーグラフを使うことがすごく多くなると思うので、その分ザックリ作るとマイナスの値が入っていたりします。

高橋:変なシェーダーを作るとそういった事故が起こり得るわけですね。

大下:従来よりも起こりやすいと思うので、これでチェックするのはけっこう大事だと思います。さらに大事なこととして、Scene Debug Modesはエディタとプレイモードでも動くのですが、デベロップメントビルド、つまり実機確認できるのが大きな特徴です。実機で確認する方法もマニュアルに詳しく書かれているので、ぜひ活用してほしいと思います。私からは以上です。

高橋:ありがとうございました。大下さんにアーティスト目線のポイントをピックアップしてもらいました。コメント欄に「これは便利」という喜びの声が届いています。

(次回へつづく)