経験豊富な Unity 開発者やテクニカルアーティストが、ユニバーサルレンダーパイプライン(URP)に取り組む際に役立つ無料の e ブックが新しく公開されました。
20 以上のプラットフォームに対応することで、より多くのプレイヤーに楽しんでいただけるよう、また、ビルトイン・レンダー・パイプラインにより、様々なハードウェアに対応したグラフィックス機能を提供できるよう努力しています。しかし、Unityが対応するプラットフォームが大幅に増えたため、時間の経過とともにある種の限界が見えてきました。
Unity の 2 つのスクリプタブルレンダーパイプライン(SRP)、HD レンダーパイプライン(HDRP)、ユニバーサルレンダーパイプライン(URP)は、マルチプラットフォーム開発で進化し続けるレンダリング要件に対応する堅牢で長期にわたり開発が続けられているソリューションです。これらの SRP を使えば、C++ のような低レベルのプログラミング言語を使わなくても、オブジェクトのカリングやその描画、フレームのポストプロセッシングを効率的にカスタマイズすることができます。また、Visual Effects Graph やシェーダーグラフのようなオーサリングツールもサポートしています。
新しい e ブック「Introduction to Universal Render Pipeline for advanced Unity creators」は、URP の設定と機能に関する基礎知識を深いところまで解説した 125 ページを超えるガイドです。このガイドでは、皆さんのプロジェクトをビルトインレンダーパイプラインから URP へ移行する方法を学ぶことができます。このガイドは、Unity のドキュメンテーションを補足することを目的としており、他の教育リソースと一緒に利用することができます。経験豊富な社内外の Unity 開発者とテクニカルアーティストによって作成され、Unity 2021 LTS で利用できる最新の機能が反映されています。
ここでは、URP が提供する主な利点をまとめてみました。
この URP に関するガイドは、前から後ろまで読んでも、興味のある特定のセクションだけ拾い読んでも、新しいユーザーを含めすべての人に非常に大きな価値を提供してくれます。ここでは、e ブックからハイライトをいくつかご紹介します。
この記事の最後には、このガイドを補完するために作られた動画チュートリアルへのリンクもまとめて掲載していますので、ぜひご覧ください。
既存のプロジェクトをビルトインレンダーパイプラインから URP に切り替えると、ビルトインレンダーパイプラインの品質オプションと一致するように URP アセットのセットが作成されます。場合によっては、ビルトインレンダーパイプラインと比較して、URP 設定がより高い忠実度を実現することがあります。
こう言うと URP は性能が低いと誤解されるかもしれませんが、設定の仕組みを理解することでビルトインと URP の両方でパフォーマンスとビジュアルの質を向上させることができます。このガイドでは、2 つのパイプライン間で Low と High の設定を比較した詳細な表に加え、URP の品質設定の各項目の場所を示す 3 つ目の表を示すなどして、プロジェクトの変換方法を徹底的に解説しています。
プロジェクトでビルトインレンダーパイプラインから URP に移行した場合、ライティングの結果が違うことに気づくかもしれません。これは、ビルトインレンダーパイプラインがデフォルトでガンマ照明モデルを使うのに対し、URP がリニアモデルを使うためです。また、エディター設定のコントロールの場所や、ハードウェアのスペックが大きく異なる場合の対処方法にも違いがあります。
e ブックでこのテーマについて書いたセクションでは、グラフィックの忠実度とパフォーマンスのバランスを取るためのヒントなど、URP でのライティング設定のあらゆる側面を掘り下げ、2 つのレンダリングパイプラインのワークフローの違いについて説明します。カバーする分野は以下の通りです。
皆さんが使うシェーダーを URP に移植する作業が困難でなければならない理由はありません。e ブックを読んだ方は、基本的なシェーダーと高度なシェーダーの両方をビルトインレンダーパイプラインから URP に移植する方法、およびビルトインレンダーパイプラインと URP のシェーダー間の詳細なマッピングに関する多くの情報を得ることができます。既存のカスタムシェーダーを URP で動作するように変換する方法と、シェーダーグラフを使用せずにコードでカスタムシェーダーを記述する方法についても説明しています。
シェーダーのセクションに収録した表には、利用可能な HLSL シェーダー関数、マクロなどのサンプルを示しています。それぞれのケースで、他の多くの便利な機能を含む関連する #include へのリンクが提供されます。
このパートでは、URP フレームワークのセットアップをステップバイステップでご案内しています。
なお、ビルトイン版の Post-Processing Stack v2パッケージは、URPには対応していません。URP ではポストプロセッシングエフェクトのための追加パッケージが必要ありません。Volume フレームワークを使用しています。シーンにボリュームを追加する際、どのポストプロセッシングエフェクトをボリュームに適用するかを選択することができます。
ボリュームは、グローバルまたはローカルにすることができます。グローバルの場合、ボリュームはシーン内のすべてのカメラに影響します。モードがローカルに設定されている場合、ボリュームはコライダーの境界内にあるカメラに影響を与えます。
レンダーオブジェクト、レンダラー機能、カメラスタッキング、および最適化テクニックの使用方法についても解説しています。無料のガイドをダウンロードし、そこに収録されたすべてのヒントをご覧ください。
これらの動画チュートリアルでは、e ブックと同じ手順を Unity プロジェクトで 1 つずつ進めていく様子をご覧いただけます。
「Converting custom shaders to URP」では、アップグレードのプロセスの一環として、レガシーシェーダーに対して実行する方法について解説します。実際の Unity プロジェクト内で、カスタムの Unlit ビルトインシェーダーを URP 版に変換する方法をご覧ください。
「Three ways to use URP Renderer Features」では、URP のレンダラー機能を使った 3 つの実践的な演習を紹介しています。カスタムのポストプロセッシングエフェクト、ステンシルエフェクト、環境に隠れたキャラクターを作成する方法について解説します。
効率的なマルチプラットフォーム展開は、多くのゲームの成功に欠かせない要素です。URP のアーキテクチャの狙いは、できるだけ手順の多さと複雑さを抑えつつ深い柔軟性とカスタマイズ性を提供し、サポートされているプラットフォームに加え、将来のプラットフォームにおいても強化されたパフォーマンスを提供することです。
この e ブックがお役に立てば幸いです。ダウンロードしてご一読をいただき、フォーラムでぜひご感想をお聞かせください。