複数のカメラを同じレンダーターゲットにレンダリングする
Universal Render Pipeline (ユニバーサルレンダーパイプライン、URP) では、複数の ベースカメラ または カメラスタック が同じレンダーターゲットにレンダリングできます。これにより、画面分割レンダリングなどのエフェクトを作成できます。
複数のベースカメラまたはカメラスタックが同じレンダーターゲットの同じ領域にレンダリングする場合、重なっている領域内の各ピクセルが複数回描画されます。最も優先度の高いベースカメラまたはカメラスタックは、先に描画されたピクセルの上に最後に描画されます。オーバードローの詳細については、詳細情報 を参照してください。
ベースカメラの Output Target プロパティを使用してレンダーターゲットを定義し、Viewport Rect プロパティを使用してレンダリング先のレンダーターゲットの領域を定義します。ビューポート座標の詳細については、Unity マニュアル および API ドキュメント を参照してください。
分割画面レンダリングの設定
- シーンにカメラを作成します。Render Mode のデフォルトは Base であるため、カメラはベースカメラになります。
- カメラを選択します。Inspector で、Output セクションまでスクロールします。Output Target が Camera に設定されていることを確認し、Viewport rect の値を以下のように変更します。
- X: 0
- Y: 0
- W: 0.5
- H: 1
- シーンにカメラをもう 1 つ作成します。Render Mode のデフォルトは Base であるため、カメラはベースカメラになります。
- カメラを選択します。Inspector で、Output セクションまでスクロールします。Output Target が Camera に設定されていることを確認し、Viewport rect の値を以下のように変更します。
- X: 0.5
- Y: 0
- W: 0.5
- H: 1
Unity では、メインカメラは画面の左側にレンダリングされ、サブカメラは画面の右側にレンダリングされます。
カメラの Viewport rect をスクリプトで変更するには、rect
プロパティを以下のように設定します。
myUniversalAdditionalCameraData.rect = new Rect(0.5f, 0f, 0.5f, 0f);