RTHandle システムの基礎
このドキュメントでは、RTHandle (RTHandle) システムの主要原理について説明します。
Unity の RenderTexture API の最上位に位置するのが RTHandle システムです。このシステムにより、さまざまな解像度を使用するカメラ間でレンダーテクスチャを再利用することが容易になります。RTHandle システムは、以下の基本原理に従って動作します。
- 開発者自身が固定解像度のレンダーテクスチャを割り当てる必要がなくなりました。代わりに、与えられた解像度で全画面に関連したスケールを使用してレンダーテクスチャを宣言します。RTHandle システムは、テクスチャをレンダーパイプライン全体で一度だけ割り当て、それを異なるカメラでも再利用することができます。
- 参照サイズの概念が導入されました。これは、アプリケーションがレンダリングに使用する解像度を表します。開発者は、レンダーパイプラインが各カメラを特定の解像度でレンダリングする前に、参照サイズを宣言する必要があります。その方法については、RTHandle システムの更新 のセクションを参照してください。
- 内部的に、RTHandle システムは宣言した最大参照サイズを追跡します。これがレンダーテクスチャの実際のサイズとして使用されます。最大参照サイズが最大サイズになります。
- レンダリング用に新しい参照サイズを宣言するたびに、RTHandle システムは、そのサイズが現在記録されている最大参照サイズよりも大きいかどうかを確認します。大きい場合、RTHandle システムは、新しいサイズに合わせてすべてのレンダーテクスチャの再割り当てが行われ、最大参照サイズが新しいサイズに置き換えられます。
この処理の例として、メインカラーバッファを割り当てる場合について考えましょう。これは全画面のテクスチャなので、スケール 1 を使用します。このバッファは画面の解像度でレンダリングする必要があります。解像度が 4 分の 1 の透明度パス用の縮小されたバッファでは、X 軸と Y 軸の両方にスケール 0.5 を使用します。RTHandle システムの内部では、最大参照サイズにレンダーテクスチャ用に宣言したスケールを掛けたサイズで、レンダーテクスチャを割り当てます。その後、開発者はカメラでレンダリングが行われる前に、現在の参照サイズをシステムに通知します。RTHandle システムは、そのサイズとすべてのテクスチャのスケールファクターに基づいて、レンダーテクスチャの再割り当てが必要かどうかを判断します。前述のように、新しい参照サイズが現在の最大参照サイズよりも大きい場合、RTHandle システムはすべてのレンダーテクスチャの再割り当てを行います。これにより、RTHandle システムでは、すべてのレンダーテクスチャに対して一定の最大解像度になります。ほとんどの場合、これはメインカメラの解像度です。
ここからわかる重要な点は、レンダーテクスチャの実際の解像度が、必ずしも現在のビューポートと一致するとは限らないということです。実際の解像度はもっと大きい可能性があります。これは RTHandle を使用してレンダラーを記述する場合に影響します。詳しくは RTHandle システムの使用 のドキュメントを参照してください。
RTHandleSystem では、固定サイズのテクスチャを割り当てることもできます。この場合、RTHandle システムがテクスチャを再割り当てすることはありません。このため、RTHandle システムが管理する自動でサイズ変更されるテクスチャと、自身で管理する通常の固定サイズのテクスチャの両方に対して、同じように RTHandleAPI を使用できます。