Hero background image

PC およびコンソール ゲーム向けの Unity でのライティング入門

これは、開発者とテクニカルアーティストが Unity で High Definition Render Pipeline (HDRP) を設定して使用し、ハイエンドのグラフィックリアリズムを実現する方法を説明する一連の記事の最初の記事です。HDRP は Unity のリアルタイム レンダリングにおける技術的な飛躍を表しており、現実世界での振る舞いと同じように光を操作できます。

高級照明に関するハウツーシリーズの他の記事もぜひお読みください。

HDRP ライティングの概要

HDRP は、Unity の既存の照明システムをさまざまな機能で拡張し、シーンのレンダリングを現実世界の照明に近づけます。

  • 物理的な光の単位と露出:HDRP では、現実世界の光の強度と単位を使用します。既知の光源の基準に合わせて、物理カメラを使用して露出を設定します。
  • 高度な照明:スポットライトやエリアライトの新しい形状オプションを使用して、ライトの配置を制御できます。ライト レイヤーを使用して、特定のメッシュへのライトの影響を制限します。スクリーン スペース グローバル イルミネーション (SSGI) やスクリーン スペース屈折などのリアルタイム効果を適用します。
  • 空の景色:様々なテクニックで自然な空を創造することができます。物理ベースのスカイ システムを使用して惑星の大気を手順的にシミュレートし、ボリューム クラウド、クラウド レイヤーを追加したり、HDRI を適用して静的な空をシミュレートしたりします。
  • フォグ:フォグを使用して、シーンに奥行きや立体感を加えましょう。ボリュメトリックを有効にして、フォグエフェクトを前面のオブジェクトに組み込むことで、シネマティックな光の軌跡をレンダリングできます。ボリューム ライトとシャドウのライトごとの制御を維持し、ローカル ボリューム フォグ コンポーネントを使用して、3D マスク テクスチャでフォグの密度を細かく制御します。
  • ボリュームシステム:HDRP には直感的なシステムが採用されており、カメラの位置や優先度に応じて、様々なライティングエフェクトや設定の適用を調整できます。ボリュームをレイヤー化してブレンドすることで、シーンのあらゆる平方メートルを専門家レベルの制御で制御できます。
  • ポストプロセス:HDRP のポストプロセスは、既存のボリュームシステムからうまく処理を行い、Volume オーバーライドにてまとめて管理されています。アンチエイリアシング、トーンマッピング、カラーグレーディング、ブルーム、被写界深度、その他さまざまなエフェクトを追加します。
  • 高度なシャドウ:HDRP は、シャドウに対するビジュアル面とパフォーマンス面での高度な制御を提供しています。色合い、フィルタリング、解像度、メモリ予算、更新モードを変更します。コンタクト シャドウとマイクロ シャドウを使用して、細かい部分を強調し、深みを加えます。
  • 高度なリフレクション:さまざまな手法を使用して反射面をレンダリングできます。リフレクション プローブは従来の反射マッピング アプローチを提供し、平面反射プローブは平面サーフェスに対してより高度なオプションを提供します。スクリーン スペース反射 (SSR) は、深度バッファを使用したリアルタイム テクニックを追加します。
HDRP インターフェースを使い始める
HDRPのインストール

Unity 2022 LTS 以降では、常に検証済みの最新のグラフィックスコードを利用していただけるよう、インストールファイルに HDRP パッケージが含まれています。最新の Unity リリースをインストールすると、対応するバージョンの HDRP もインストールされます。

HDRP パッケージバージョン 互換性のある Unity バージョン 13.x 2022.1 12.x 2021 LTS (このガイドで使用)

HDRP グラフィック パッケージを特定の Unity リリースに結び付けると、互換性が維持されます。ただし、マニフェストファイルをオーバーライドすることで、HDRP のカスタムバージョンに切り替えることもできます。

システム要件

HRDP は現在、次のターゲット プラットフォームと互換性があります。

  • Windows および Windows ストア (DirectX 11 または DirectX 12 および Shader Model 5.0 搭載)
  • 最新のコンソール(最低でも Sony PlayStation 4 または Microsoft Xbox One)
  • Metal グラフィックスを使用する MacOS (最小バージョン 10.13)
  • Vulkan を搭載した Linux および Windows プラットフォーム

HDRP は、コンピュートシェーダー対応のコンソールおよびデスクトッププラットフォームでのみ機能します。OpenGL または OpenGL ES デバイスはサポートされていません。要件と互換性の詳細については、ドキュメントを参照してください。

対応している VR プラットフォームおよびデバイスについては、「HD レンダーパイプライン(HDRP)における VR」をご覧ください。

HDRP プロジェクトをセットアップするには、Unity Hubから始めます。

まず、新しいプロジェクトを作成し、リストされている利用可能なテンプレート (Hub の古いバージョンでは High Definition RP と呼ばれていました) から、3D (HDRP) の空のテンプレートまたは 3D サンプル シーン (HDRP) を選択します。いくつかのサンプルプリセットを含む HDRP パッケージをインポートするには、最新のテンプレートを選択します。

HDRP Wizard
Package Manager のインストール

3D Core template」を使用してプロジェクトを作成した場合は、以前までのビルトインレンダーパイプラインが使用されることになります。パッケージ マネージャー (ウィンドウ > レンダリング > HDRP ウィザード) からプロジェクトを手動で HDRP に移行できます。

Unity レジストリ High Definition RP パッケージを見つけるか、 検索 フィールドを使用して検索してインストールします。

現行のプロジェクト設定で競合が発生した場合には、トラブルシューティングに対応した「HDRP Render Pipeline Wizard」が表示されます(「Window > Rendering > HDRP Wizard」で開くこともできます)。なお、Unity 2021.2/HDRP 12 では、Window > Rendering > HDRP Wizardの下にあります。

「構成チェック」 に移動して 「すべて修正」をクリックするか、問題ごとに 「修正」 をクリックして個別に修復します。このチェックリストは、スクリプタブル レンダリング パイプライン (SRP) 以外のプロジェクトからの移行に役立ちます。

ウィザードが終了すると、新しいパイプライン アセットを作成するように求めるプロンプトが表示されます。これは、特定のパイプラインの設定を保持するディスク上のファイルです。「Create One」を選択して、新しいレンダーパイプラインアセットを追加し、ファイルを割り当てます。

HDRP が正常に機能したら、 構成チェック のすべてのチェックボックスが緑色になっていることを確認します。背景環境の色が変わることに気づくかもしれません。

空のプロジェクトから手動でインストールすると、3D サンプル シーン (HDRP) が自動的にインポートされないことに注意してください。このガイドに示されているサンプル アセットにアクセスする場合は、3D サンプル シーン テンプレートを使用します。

3Dサンプルシーン
HDRP サンプルシーン

Unity Hub の 3D サンプルシーンは、HDRP と物理ベースライティングを始めるのに役立つテンプレート プロジェクトです。この軽量プロジェクトは 100 MB 未満で、参照用にすぐにロードできる HDRP の優れた実用的な例を提供します。

小さな部屋がいくつも繋がった構成になっており、ライティングの設定が異なる 3 種類のエリアがあります。太陽を表す指向性ライトは現実世界の 100,000 ルクスの強度を持ち、各位置では照明環境に合わせてカメラの露出が補正されます。

WASD キーとマウスを使用して、レベル内で FPS コントローラーを操作します。

  • 部屋1は頭上の太陽光で照らされた円形のプラットフォームです。デカールによって、コンクリートの床に埃や水たまりが追加されています。
  • 部屋 2 では、天窓からの立体的な光の柱と、ガラスケース内の木に高度な素材が追加されています。
  • 部屋 3 では、室内の人工照明と発光材料を展示します。

さらに詳しく知りたい場合は、Unity テクニカルアーティストの Pierre Yves Donzallaz による このブログ投稿 をご覧ください。HDRP 3D サンプルシーンについてさらに詳しく説明しています。

その他の HDRP のサンプルコンテンツ

HDRP 3D サンプルシーンの探索が終わったら、他のプロジェクトが役立つかもしれません。

もともとゲーム用ではなかったものの、Auto Showroom プロジェクトは、 リアルな照明を備えた非常に詳細な車両をデモンストレーションします。Unity Hub から入手できるこのインタラクティブなデモで、ステージの照明、車の塗装、テクスチャ、背景を変更します。

一方、Spaceship デモでは 、SF 環境での Visual Effect Graph やその他の HDRP 機能を紹介しています。Unity の GitHub リポジトリ からダウンロードするか、Steamでアクセスできます。

HDRP を VR で使用している場合は、「VR Alchemist Lab」が参考になります。このプロジェクトでは、中世の小さな実験室でインタラクティブな効果を表現します。

映画のようなコンテンツやアニメーション映画を作成する方法を学ぶには、Unity Hub から Cinematic Studio テンプレートをインストールしてください。このテンプレートは、様式化されたレンダリングとフォトリアルなレンダリングを組み合わせて、Mich-Lという面白い短編映画の ショットを設定および照明する 方法を示しています。

プロジェクト設定インターフェース
Project 設定

プロジェクト設定 (編集 > プロジェクト設定) には、 グラフィックスHDRP グローバル設定品質など、いくつかの重要な設定があります。

なお、Unity 2021.2/HDRP 12 以降では、「HDRP デフォルト設定」は「HDRP グローバル設定」と呼ばれるようになりました。

グラフィックス設定

画像の上部にある スクリプタブル レンダー パイプライン設定は、 すべての HDRP 設定を保存するディスク上のファイルを参照します。プロジェクトごとにこのようなパイプラインアセットを複数使用できます。

それぞれを個別の構成ファイルとして考えてください。たとえば、異なるターゲット プラットフォーム (Xbox、PlayStation など) の特殊な設定を保存するために使用したり、実行時にプレーヤーが切り替えることができるさまざまな視覚品質レベルを表すために使用したりすることもできます。

この 3D サンプルシーンは、「Settings」フォルダーにあるいくつかのパイプラインアセットから始まります。「HDRPHighQuality」、「HDRPLowQuality」、そして「HDRPMediumQuality」です。さらに、「HDRPDefaultResources」フォルダーには「DefaultHDRPAsset」があります。

品質設定インターフェース
品質設定

品質設定を使用すると、 パイプライン アセットの 1 つを定義済みの品質レベルに関連付けることができます。

レンダリングオプションから特定の レンダリング パイプライン アセット をアクティブにするには、上部の 品質レベル を選択します。デフォルトをカスタマイズしたり、追加の品質レベルを作成して、それぞれ追加のパイプライン アセットと組み合わせたりすることができます。

品質レベルは、パイプラインでアクティブな特定の視覚機能のセットを表します。たとえば、アプリケーション内でグラフィック用の複数の層を作成できます。実行時に、プレーヤーはハードウェアに応じてアクティブな品質レベルを選択できます。

実際の パイプライン設定を編集するには、Quality/HDRPサブセクション に移動します。それ以外の場合は、 プロジェクト ビュー に移動して パイプライン アセット を選択し、 インスペクターでその設定を編集します。

HDRP の最適化

パイプライン アセットでさらに多くの機能を有効にすると、消費されるリソースが増えることに注意してください。一般的に、意図した効果を達成するために本当に必要なものだけを使用するようにプロジェクトを最適化します。特定の機能が必要ない場合は、その機能をオフにしてリソースを節約し、パフォーマンスを向上させることができます。

使用する必要がない場合は無効にできる機能は次のとおりです。

  • HDRP Asset」内:デカール、低解像度透明度、透明バックフェイス/デプスプリパス/デプスポストパス、SSAO、SSR、コンタクトシャドウ、ボリュメトリック、サブサーフェススキャタリング、歪曲
  • カメラの「Frame Settings」(メインカメラ、リフレクションなどの統合エフェクトに使われるカメラ、またはカスタムエフェクトに使われる追加のカメラ)内 :屈折、後処理、後処理後、透過、反射プローブ、平面反射プローブ、およびビッグタイル事前パス

パフォーマンスを向上させる HDRP 機能について詳しく知るには、 このブログ投稿を お読みください。

HDRP デフォルト設定

HDRP グローバル設定

HDRP グローバル設定 セクション (HDRP デフォルト設定 とも呼ばれます (HDRP バージョン 12 より前)) では、プロジェクトのベースライン構成を決定します。カメラの位置に応じて、ローカル ボリューム コンポーネントまたはグローバル ボリューム コンポーネントを介してシーン内のこれらの設定を上書きできます。

グローバル設定は、上部のフィールドで定義された独自のパイプライン アセットに保存され、デフォルトのレンダリングと後処理のオプションを設定できます。

HDRP機能検索
HDRP 機能の有効化

プロジェクトを開発する際に、特定の機能のオン/オフを切り替えるために HDRP グローバル設定に戻る必要がある場合があります。一部の機能は、グローバル設定で対応するチェックボックスが有効になっていないとレンダリングされません。

レンダリングのパフォーマンスやメモリ使用量に悪影響を与える可能性があるため、必要な機能のみを有効にするようにしてください。一部の設定は ボリューム プロファイルに表示されますが、その他の機能は フレーム設定 にあります (使用状況によって異なります)。

HDRP の機能セットに慣れる際には、 プロジェクト設定の右上にある 検索 フィールドを活用してください。これにより、検索用語が強調表示された関連するパネルのみが表示されます。

HDRP グローバル設定で機能を有効にしても、いつでもどのカメラでもレンダリングできることが保証されるわけではありません。プロジェクト設定 > 品質で品質レベルが指定されているレンダリング パイプライン アセットもその機能をサポートしていることを確認する必要があります。例えば、カメラがボリュメトリッククラウドをレンダリングできるようにするには、「HDRP Global Settings > Frame Settings > Camera > Lighting」と、アクティブなレンダーパイプラインアセットの「Lighting > Volumetrics」で切り替える必要があります。

動的解像度

CPU に依存していない場合、解像度はパフォーマンスに大きな影響を与える可能性があります。動的解像度は、レンダリングの解像度を下げ、結果を出力画面の解像度にスケーリングします。このアップスケールを実行するフィルターは 2021 LTS で大幅に改善され、品質の低下を最小限に抑えながら 70% 以下の解像度でレンダリングできるようになりました。

Unity 2021 LTS では、HDRP は最新のスーパーサンプリング技術のいくつかを活用した複数のソリューションを提供します。

  • NVIDIA DLSS (ディープラーニング スーパーサンプリング) をサポートする GPU
  • プラットフォーム間のAMD FSR(FidelityX Super Resolution)
  • プラットフォーム間の TAA アップスケール (テンポラル アンチエイリアシング)

HDRP アセットでスケーリングを強制するか、独自のロジックをコーディングしてスケールを調整することができます。

プロジェクトで動的解像度を設定し、ニーズに最適なアルゴリズムを選択するためのガイダンスを得るには、ドキュメントの このページを 参照してください。

HDRP のデフォルト設定の変更
フォワードレンダリングとディファードレンダリング

パイプラインアセットで HDRP 設定を構成するときは、通常、 レンダリングの下の Lit シェーダーモード から開始し、DeferredForward、または Bothから選択できます。これらは選択可能なレンダリング パスを表し、それぞれにパイプラインがジオメトリをレンダリングおよび照明する方法を指示する一連の特定の操作が含まれます。レンダリング パスをカスタマイズする方法については、上記を参照してください。

カスタムカメラフレーム設定
レンダリングパスのカスタマイズ

デフォルトのレンダリング パスを設定するには、Lit Shader Mode に移動し、Forward または Deferred を選択します。HDRP は柔軟性が高いので「Both」を選択することもできます。このオプションを使用すると、ほとんどのレンダリングに 1 つのレンダリング パスを使用し、各カメラに対してそれをオーバーライドできます。ただし、より多くの GPU メモリが必要になるため、通常は Forward または Deferred のいずれかを選択することをお勧めします。

デフォルトですべてのカメラを対象にするには、「HDRP Default Settings」に移動し、「Default Frame Settings」を確認します。レンダリング パスは、 カメラベイク済み または カスタム反射リアルタイム反射に適用できます。「Rendering」グループの「Lit Shader Mode」でレンダリングパスを設定します。

特定のカメラに影響を与えるには、そのカメラの カスタム フレーム設定を確認します。その後「Rendering」グループで、「Lit Shader Mode」のレンダリングパスをオーバーライドし変更します。

フォワードレンダリングパス図
フォワードレンダリングの詳細

フォワード レンダリングでは、グラフィック カードが画面上のジオメトリを頂点に分割します。これらの頂点はさらにフラグメント、つまりピクセルに分割され、画面にレンダリングされて最終的な画像が作成されます。

各オブジェクトは、一度に 1 つずつグラフィックス API に渡されます。フォワード レンダリングでは、ライトごとにコストがかかります。シーン内のライトの数が増えるほど、レンダリングにかかる​​時間は長くなります。

フォワードレンダリングでは、別々のパスでライトを描画します。複数のライトが同じゲームオブジェクトに当たると、多くのライトとオブジェクトが存在する場合に大幅なオーバードローが発生し、速度が低下する可能性があります。

従来のフォワード レンダリングとは異なり、HDRP では、オブジェクト マテリアルごとに 1 回のパスで複数のライトをまとめてカリングしてレンダリングするなどの新しい機能が追加されています。しかし、それはまだ比較的高価なプロセスです。パフォーマンスが問題になる場合は、代わりに Deferred シェーディングを使用することをお勧めします。

遅延レンダリングの詳細

HDRP では、オブジェクトごとに照明が計算されないディファード シェーディングも活用できます。代わりに、ディファード シェーディングでは負荷の高いレンダリングを後の段階に延期し、2 つのパスを使用します。

最初のパス、つまり G バッファ ジオメトリ パスでは、Unity は GameObject をレンダリングします。このパスは、複数のタイプのジオメトリプロパティーを取得し、テクスチャーのセットに保管します(ディフューズ色およびスペキュラー色、サーフェスのスムースネス、オクルージョン、法線など)。

2 番目のパス、つまりライティング パスでは、Unity は G バッファが完了した後にシーンのライティングをレンダリングし、シェーディングを延期します。Deferred シェーディング パスは各ピクセルを反復処理し、個々のオブジェクトではなくバッファーに基づいて照明情報を計算します。

レンダリング パス間の技術的な違いの詳細については、HDRP ドキュメントの 「フォワード レンダリングとディファード レンダリング」 を参照してください。

このコンテンツは役に立ちましたか?