【Unity】画素密度(DPI)を固定してパフォーマンス改善できるらしい!?実際のところどうなの?

fixedDpi.png

 ゲームをプレイしていて「解像度を落として省エネでプレイしたい」と思ったことはありませんか?高解像度で描画されるととても綺麗なのですが、CPUの処理負荷は解像度(画素数)に比例しますから、その分CPUが頑張りすぎてしまい発熱します。端末の温度が上昇すると処理速度が制限されてカクついたりして、とてもイラッとしますよね。

 Unityのビルド設定には解像度にまつわる設定があり、これをちょっと調整するだけで「無駄に高い解像度で描画してカックカクのホッカイロ状態」を防ぐことができます。そんな夢のような(?)設定はどこにあるのかというと、👇ここです。

PlayerSettingsにあります

fixedDpi1.png

PlayerSettings > Resolition and Presentation を開きます。
Resolution Scaling Mode を「Fixed DPI」に変更します。
そうすると「Target DPI」の設定が表示されますので、この数値を適切な設定に変更します。

実際どうなるの?

まっさらなプロジェクトでは 30 になっているので、これを 326 にしてみます。この値は古い機種にも対応した一般的な数値です。
こうすることで、326DPIのiPhone8なら元の解像度(1334x750)で表示されます。458DPIのiPhoneXの場合は、元の解像度(2436x1125)から326/458倍され、1734x800で表示されます。少し画素数が減りますので、その分処理が軽くなるということです。
処理が軽くなればフレームレートが上がり、元々60FPS出ている端末では電池消耗が軽減します。

一部のAndroid端末ではフルHD(1920x1080)でありながらそれに耐えうるCPUを持たない狂気じみた機種があります。(京○ラとかね)
そういう端末ではFixed DPIを設定して画素数を固定することで、大幅なパフォーマンス改善が見込めます。

ダイナミックフォントは解像度が高ければ高いほど綺麗に描画されます。3Dポリゴンの輪郭も同様です。
しかし、テクスチャは元の解像度以上には綺麗になりません。テクスチャの見え方で画素数を判断するのがよいかもしれません。

代表的な端末のDPI

機種インチ解像度DPI
iPhone 5, 5C, 5S, SE41136x640326
iPhone 6, 6S, 7, 8, SE(2020)4.71334x750326
iPhone 6Plus, 6S Plus, 7Plus, 8Plus5.51920x1080406
iPhoneX, XS, 11Pro5.852436x1125458
iPhoneXR, 116.061792x828326
iPhoneXS Max, 11Pro Max6.462688x1242458
iPad 3G, 4G, Air, Air2, Pro, 5, 6, iPad mini(第二世代以降)9.7 (miniは7.9)2048x1536264 (miniは326)
iPad 710.22160x1620264
iPad Pro, Air310.52224x1668264
iPad Pro112388x1668264
iPad Pro12.92732x2048264
Xperia J1 Compact, A4, Z5 Compact4.31280x720320
Xperia Z4, Z5, Z5 Premium5.21920x1080480
Xperia Z4 Tablet
10.12560x1600320
Xperia XZs5.21920x1080424
Xperia XZ2 Premium5.83840x2160760
Xperia XZ36.02880x1440537
Xperia Ace5.02160x1080482
Xperia 56.12520x1080449
Xperia 8, 10 II6.02520x1080457
Xperia 1, 1 II6.53840x1644643
Galaxy Active neo4.5800x480240
Galaxy S6, S6 edge
5.12560x1440640
Galaxy A8
5.71920x1080480
Galaxy S8, S9, S9+5.8 (S8+,S9+は6.2)2960x1440570 (S8+,S9+は529)
Galaxy Note96.42960x1440514
Galaxy S10, S10+6.1 (S10+は6.4)3040x1440540 (S10+は514)
Galaxy A206.41560x720268
Galaxy A606.32340x1080409
Galaxy Note106.32280x1080401
Galaxy Note10+6.83040x1440498
Galaxy Z Flip6.72636x1080425
Galaxy S20, S20+6.2 (S20+は6.7)3200x1440563 (S20+は525)
Galaxy A416.12400x1080431
Pixel 35.52160x1080440
Pixel 3 XL6.32960x1440523
Pixel 3a5.62220x1080441
Pixel 3a XL6.02160x1080402
Pixel 45.72280x1080444
Pixel 4 XL6.33040x1440537
AQUOS sense3
5.52160x1080439
Android One S75.52160x1080439
Huawei nova 5T6.262340x1080412
P40 lite 5G
6.52400x1080405
OPPO Reno3 5G6.52400x1080405
Find X2 Pro6.73168x1440513
ASUS ZenFone Live
5.51440x720293
Zenfone 6 ZS630KL
6.42340x1080403
ROG Phone II6.592340x1080391
LG G8X ThinQ
6.42340x1080403
Xiami Mi 10 Lite 5G
6.572340x1080392
Nintendo Switch6.21280x720238
Nintendo Switch Lite5.51280x720268

android端末は多すぎるので比較的最新且つ、メジャーな機種の中から掻い摘んで掲載しました。

ご覧の通りDPI設定は見事にバラバラです。特にandroid端末の自由っぷりが際立ちます。これらのじゃじゃ馬スマホをおとなしくさせる設定が「Fixed DPI」なのです。個人的には 300 以下で設定しておいても良いんじゃないかなと思います。


ゲームのアンテナ