UIなどの2Dのレンダリング解像度はそのままに、3Dのレンダリング解像度を下げることで、見た目のクオリティを維持したまま、処理負荷を軽減することが期待できます。 本コンポーネントは特定のカメラのレンダリング解像度を動的に変更する事が可能です。
Unity2018以降のバージョンではDynamic Resolutionが実装されています。 Dynamic Resolutionはプラットフォーム及びグラフィックAPIに依存しますが、Dynamic Resolutionを使用出来る場合、そちらを使用した方が解像度切り替え時のオーバーヘッドが低いと思われます。 Dynamic Resolutionの使用サンプルはこちらになります。
- Unity2017.4以降
- Android端末で確認を行っていますが、基本全てのプラットフォームで動作する筈です。問題のあるプラットフォームやグラフィックAPIがありましたら、フィードバックをお待ちしております。
- レンダリング解像度を変更する為のCameraを生成します。(既に描画対象毎にCameraが別れている場合は、新たに生成する必要はありません。)
- このCameraが何をレンダリングするかを明示的に指定する為にcullingMaskを設定します。
- このCamera ObjectへRenderTextureCamera ComponentをにADDして下さい。
- RenderTextureCamer Componentの
renderTextureCamera
プロパティへ1で生成したCamera Objectを設定します。 - 同じく
blitCamera
プロパティへRenderTexure Cameraでレンダリングした内容を描画したいCameraを設定します。 blitCamera
プロパティへ設定したCamera ComponentのcullingMask
から2で設定したレイヤーを除外して下さい。shift
プロパティやfilterMode
プロパティで解像度やフィルターモードを必要に応じて指定します。
既に3Dオブジェクトと2DオブジェクトでCameraが分かれているプロジェクトで3Dのレンダリング解像度を下げたい場合、3Dオブジェクト用のCameraにRenderTextureCamera ComponentをADDし、renderTextureCamera
プロパティへ3Dオブジェクトのレンダリング用Camera、blitCamera
プロパティへ2Dオブジェクトレンダリング用のCameraを設定します。
レンダリング解像度を下げたいカメラを指定します。 3Dをレンダリングするカメラを想定しています。
renderTextureCameraの上にそのままのレンダリング解像度で描画したいカメラを指定します。 UIなど2Dをレンダリングするカメラを想定しています。
renderTextureCameraでレンダリングした内容をmasterCameraへBlitするタイミングを指定します。
基本的にBefore Forward Opaque
から変更する必要はありません。
RenderTextureのサイズを指定する為に使用します。 0の場合、ScreenSizeのままとなります。
RenderTextureのサイズ = Screenサイズ >> shift
RenderTextureのフィルターモードを指定します。
※下記のサンプル表示は全てレンダリング解像度はshift=5
に設定しています、
フィードバックをお待ちしております。
以上❣