教育事業部の事業内容 演劇、音楽のタレント並びに作詞家、作曲家、編曲家等アーティストの育成及びマネージメント、コンピュータ教室の経営等を行っています。
教育事業 パルテア

〜Unity Graphics 動的解像度〜 #ゲームプログラミング #ゲーム制作 #unity3d #unity3dgames #unity2d

動的解像度

動的解像度は、GPU のワークロードを軽減するために、個々のレンダー ターゲットを動的にスケールできるようにするカメラ設定です。アプリケーションのフレーム レートが低下した場合は、代わりに解像度を徐々に下げて一貫したフレーム レートを維持できます。アプリケーションが GPU 依存になっているためにフレーム レートが低下しそうであることがパフォーマンス データから示唆されている場合、Unity はこのスケーリングをトリガーします。また、アプリケーションの特に GPU を集中的に使用するセクションをプリエンプトし、スクリプト経由でスケーリングを制御することで、スケーリングを手動でトリガーすることもできます。徐々にスケーリングすると、動的解像度はほとんど目立たなくなる可能性があります。

レンダーパイプラインの互換性

動的解像度のサポートは、プロジェクトが使用するレンダー パイプラインによって異なります。

このドキュメントで説明されているように、組み込みレンダー パイプラインとユニバーサル レンダー パイプライン (URP) はどちらも動的解像度をサポートしています。

高解像度レンダー パイプライン (HDRP) は動的解像度をサポートしていますが、それを有効にして使用する方法は異なります。 HDRP の動的解像度については、「HDRP の動的解像度」を参照してください。

サポートされているプラ​​ットフォーム

Unity は、iOS、macOS、tvOS (Metal のみ)、Android (Vulkan のみ)、Windows スタンドアロン (DirectX 12 のみ)、および UWP (DirectX 12 のみ) で動的解像度をサポートします。

レンダーターゲットへの影響

動的解像度を使用すると、Unity はレンダー ターゲットを再割り当てしません。概念的には、Unity はレンダー ターゲットをスケールします。ただし、実際には、Unity はエイリアシングを使用し、縮小されたレンダー ターゲットは元のレンダー ターゲットのごく一部のみを使用します。 Unity はレンダー ターゲットを最大解像度で割り当てます。その後、動的解像度システムがレンダー ターゲットをスケールダウンし、新しいターゲットを再割り当てする代わりに元のターゲットの一部を使用して再度スケールアップします。

レンダーターゲットのスケーリング

動的解像度では、レンダー ターゲットに DynamicallyScalable フラグが設定されます。これを設定して、Unity が動的解像度プロセスの一部としてこのレンダー テクスチャをスケーリングするかどうかを指定できます。カメラには、allowDynamicResolution フラグもあります。これを使用して動的解像度を設定できるため、より単純なシーンに動的解像度を適用したい場合にレンダー ターゲットをオーバーライドする必要がなくなります。

MRT バッファー

カメラで動的解像度を許可を有効にすると、Unity はそのカメラのすべてのターゲットをスケーリングします。

スケーリングの制御

ScalableBufferManager を通じてスケールを制御できます。 ScalableBufferManager を使用すると、動的解像度システムのスケールをマークしたすべてのレンダー ターゲットの動的幅と高さのスケールを制御できます。

例として、アプリケーションが望ましいフレーム レートで実行されているが、状況によっては、パーティクルの増加、ポストエフェクト、画面の複雑さの組み合わせにより GPU パフォーマンスが低下すると仮定します。 Unity FrameTimingManager を使用すると、CPU または GPU のパフォーマンスが低下し始める時期を検出できます。そのため、FrameTimingManager を使用して、新しい希望の幅と高さのスケールを計算して、フレーム レートを希望の範囲内に保ち、そのスケールをその値まで下げてパ​​フォーマンスを安定させることができます (瞬時に、または設定されたフレーム数にわたって徐々に)。画面の複雑さが軽減され、GPU のパフォーマンスが安定している場合は、幅と高さのスケールを GPU が処理できると計算された値に戻すことができます。



このサンプル スクリプトは、API の基本的な使用法を示しています。これをシーンのカメラに追加し、カメラ設定で [動的解像度を許可] をオンにします。また、プレーヤー設定を開き (メニュー: [編集] / [プロジェクト設定] を選択し、プレーヤー カテゴリを選択)、[フレーム タイミング統計を有効にする] チェックボックスをオンにする必要もあります。

マウスをクリックするか、1 本の指で画面をタップすると、高さと幅の解像度がそれぞれ、scaleWidthIncrement 変数とscaleHeightIncrement 変数の量だけ低くなります。 2 本の指でタップすると、同じ増分で解像度が上がります。

    unity

  • 日時:// ~ //
  • 名称:
  • 場所:
  • 料金:¥0 (消費税込)