ライティングされた 2D シーンを作成するためのツールとランタイムコンポーネントを紹介します。
これらのツールは、スプライトレンダラー、タイルマップレンダラー、スプライトシェイプレンダラーなどの 2D レンダラーとシームレスに統合できるように設計されています。このツールとコンポーネントのシステムは、モバイルシステムや、複数のプラットフォームでの実行に最適化されています。
2D ライトと 3D ライトの実装と動作には、以下のような重要な違いがいくつかあります。
2D ライティングシステムには、2D ライティングと 2D レンダリング向けに特別に設計された独自の 2D ライトコンポーネント、シェーダーグラフサブターゲット、カスタム 2D レンダーパスのセットが含まれています。また、2D ライトとパス設定用のエディターツールも含まれています。
2D ライティングモデルは同一平面上にあるマルチレイヤーの 2D 世界で動作するように特別に設計されています。2D ライトでは、ライトとライティングされるオブジェクトの間で深度を分離する必要はありません。2D シャドウシステムも同一平面上で動作し、深度を分離する必要はありません。
2D ライトのライティング計算は、3D ライトのような物理演算ベースの計算ではありません。ライティングモデルの計算の詳細については、以下で説明します。
3D ライトと 2D ライトは、それぞれ 3D レンダラーと 2D レンダラーにのみ影響を与えることができます。2D ライティングはメッシュレンダラーなどの 3D レンダラーには作用や影響を与えません。同様に、3D ライティングもスプライトレンダラーなどの 2D レンダラーには影響を与えません。現在、1 つのシーンで 2D ライトと 3D ライト、2D レンダラーと 3D レンダラーを組み合わせるには、複数のカメラを使用し、そのうち 1 つのカメラでレンダーテクスチャにレンダリングし、そのテクスチャを別のカメラでレンダリングしたマテリアルによってサンプリングします。
2D ライティングのグラフィックスパイプラインのレンダリングプロセスは、次の 2 つのフェーズに分けることができます。 1) ライトレンダーテクスチャの描画 2) レンダラーの描画
ライトレンダーテクスチャは、スクリーンスペースでのライトの色と形状に関する情報があるレンダーテクスチャです。
この 2 つのフェーズは、ライティングが他と異なるライトレイヤーのセットに対してのみ繰り返されます。つまり、ソートレイヤー 1 から 4 のライトのセットがまったく同じものである場合、上記の一連の処理は 1 回だけ実行されます。
デフォルトの設定を使用すると、レンダラーを描画する前に複数のバッチを先に描画し、ターゲットの切り替えを減らすことができます。最適な設定は、パイプラインですべてのバッチのライトレンダーテクスチャをレンダリングしてから、レンダラーの描画に進むことです。これにより、カラーターゲットのロードとアンロードを避けることができます。詳細については、最適化を参照してください。
レンダリングフェーズに進む前に、2D ライティングのグラフィックスパイプラインは、まずシーンを分析し、どのレイヤーを 1 回の描画処理でバッチ処理できるかを評価します。以下は、レイヤーをバッチ処理するかどうかを判断する基準です。 1. 連続したレイヤーである。 2. まったく同じライトのセットを共有しているレイヤーである。
ライトレンダーテクスチャの描画処理の回数を最小限に抑え、パフォーマンスを高めるために、できるだけ多くのレイヤーをバッチ処理することを強くお勧めします。
準備フェーズでバッチングを行った後、パイプラインはそのバッチのライトテクスチャを描画します。ここでは基本的にライトの形状をレンダーテクスチャに描画します。ライトの色と形状は、ライトの設定に応じて、加算ブレンドやアルファブレンドを使用してターゲットのライトレンダーテクスチャにブレンドできます。
ライトレンダーテクスチャは、少なくとも 1 つの 2D ライトがターゲットにしている場合にのみ作成されることに留意してください。例えば、レイヤーのすべてのライトが Blendstyle #1 のみを使用している場合、ライトレンダーテクスチャは 1 つだけ作成されます。
すべてのライトレンダーテクスチャが描画されると、パイプラインはレンダラーの描画に進みます。システムは、どのライトレンダーテクスチャセットによってどのレンダラーセットが描画されたかを追跡します。これらは、準備フェーズのバッチ処理で関連付けられたものです。
レンダラーの描画中、パイプラインは利用できるすべての (各ブレンドスタイルに 1 つの) ライトレンダーテクスチャにアクセスできます。シェーダーでは、入力色とライトレンダーテクスチャの色を、指定された処理を使用して組み合わせ、最終的な色を計算します。
4 つのアクティブなブレンドスタイルの設定例です。複数のブレンドスタイルがどのように組み合わせられるかを示しています。ほとんどの場合、2 つのブレンドスタイルがあれば、目的の効果が得られます。