unityでいってみよう!

unityがチョットワカル位の人のブログ

フレームレート・リフレッシュレート・スムージングディスプレイの関係性

概要

QualitySettings.vSyncCountが0以外(1or2)の場合、フレームレートがリフレッシュレートによって変動することを確認する。

 

お詫び

検証4のフレームレートの表記が60となっていましたが、正しくは90となります。

現在は修正済みです。

 

検証

検証端末:Pixel4XL

検証プロジェクト:Candy Rock Startに

UnityChoseKun(https://github.com/katsumasa/UnityChoseKun)及びUnityProfilerLiteKun( https://github.com/katsumasa/UnityProfilerLiteKun )を組み込んだカスタムバージョン。

 

検証内容

設定画面から90Hzリフレッシュレートの適用 を有効にしたケースとスムージングディスプレイを有効にしたケースでQualitySettings.vSyncCountApplication.targetFrameRateの値を変更してどのような結果になるか検証を行う。

 

備考

全ての検証においてpreferredRefreshRate(https://docs.unity3d.com/ja/current/ScriptReference/Screen.SetResolution.html)に60や30といった0以外の値を設定した検証も同時に行ったが、結果に差異はなかった。

 

スムージングディスプレイと90Hzリフレッシュレートの適用 に関してはこちらの記事を参照。

unityletsgo.hatenablog.com

 

 

検証1

 

90Hzリフレッシュレートの適用 ON

QualitySettings.vSyncCount = 1

Application.targetFrameRate = -1

f:id:kimukats:20210114153645p:plain

結果

リフレッシュレート 90[Hz]

フレームレート90[FPS]

 

検証2

90Hzリフレッシュレートの適用 ON

QualitySettings.vSyncCount = 0

Application.targetFrameRate = -1

 

f:id:kimukats:20210114153729p:plain

結果

リフレッシュレート 90[Hz]

フレームレート 30[Hz]

 

検証3

90Hzリフレッシュレートの適用 ON

QualitySettings.vSyncCount = 0

Application.targetFrameRate = 60

f:id:kimukats:20210114153705p:plain

結果

リフレッシュレート 90[Hz]

フレームレート 60[Hz]

 

検証4

スムーズ ディスプレイ ON

QualitySettings.vSyncCount = 1

Application.targetFrameRate = -1

f:id:kimukats:20210114161219p:plain

結果

リフレッシュレート 90[Hz]

フレームレート 90[Hz]

 

検証5

スムーズ ディスプレイ ON

QualitySettings.vSyncCount = 0

Application.targetFrameRate = -1

f:id:kimukats:20210114161600p:plain

結果

リフレッシュレート 90[Hz]

フレームレート 30[Hz]

 

検証6

スムーズ ディスプレイ ON

QualitySettings.vSyncCount = 0

Application.targetFrameRate = 60

f:id:kimukats:20210114161924p:plain

結果

リフレッシュレート 90[Hz]

フレームレート 60[Hz]

 

結論

  • QualitySettings.vSyncCountが0以外の場合、フレームレートはVSYNCの発生間隔に依存する為、リフレッシュレートによってフレームレートも変動する。
  • AndroidではpreferredRefreshRateを用いてリフレッシュレートを変更することは出来ない。

感想

フレームレートの設定方法として、

QualitySettings.vSyncCount及びApplication.targetFrameRateのいずれかで設定する方法はが一般的であるが、Androidではアプリ内からリフレッシュレートを制御する術が無い為、Application.targetFrameRateでフレームレートを制御する場合、スムーズ ディスプレイが有効になっていると、たとえ、30や60FPSでアプリを回していても、描画の書き換え自体は常に90Hzで実行される為、バッテリーの消耗という観点で言えばデメリットである。