2017年12月28日

いろんなゲームのFPSを低下させる"全画面表示の最適化"とは?&一括で無効化する方法

「PUBGのFPSを劇的に改善する方法」などで語られる"全画面表示の最適化を無効にする"ですが、何も知らずにチェックを入れてる人は多いんじゃないでしょうか。調べても的外れな事しか書いてません。少なくとも日本のサイトには。

Redditにこの機能の説明が投稿されていました
https://www.reddit.com/r/pcgaming/comments/6ukc1z/tip_disable_full_screen_optimizations/
It's a new presentation mode that is intended to combine the best of both Windowed and Fullscreen Exclusive Mode.
Before the Windows 10 Creator's Update, it was exclusive to DX12 UWP apps.

Standard Fullscreen Windowed Mode passes everything through the desktop compositor which forces triple-buffered V-Sync to be used, and adds a frame of latency.

This new presentation mode can bypass the compositor, reducing latency and allowing you to disable V-Sync. At the same time, it enables fast alt-tabbing if there's no display mode switching.

Fullscreen Windowed Mode games are also handled slightly differently with this enabled. So long as there are no other windows overlaying the game, they can also bypass the compositor and disable V-Sync.


説明を加えて訳しました
フルスクリーンモード:トリプルバッファリングを使用するV-Syncを使い、排他的な処理を行うことでフレームの遅延を軽減するモード。最前面に描画されるので他のウィンドウを描画する必要が無く、比較的軽い。
トリプルバッファリングについては以下のサイトを参照してください
http://skmod.hatenablog.com/entry/PC/nVIDIA-Control-Panel#%E3%83%88%E3%83%AA%E3%83%97%E3%83%AB%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%AA%E3%83%B3%E3%82%B0

ボーダーレスモード(フルスクリーンウィンドウモード):別名仮想スクリーンモード。フルスクリーンが最前面に描画されるのに対し、ボーダーレスではウィンドウと同じ位置に描画される。そのためゲーム画面から離れた時(Alt+Tabなど)に他のウィンドウを再描画する必要が無く、ゲーム中の他ウィンドウへの画面転換が安易。

そして一番重要な全画面表示の最適化が有効化になっている場合、ゲーム画面はどのように描画されるのでしょう。windowsのパッチノートを見ていないので詳細は分りませんが、書いてある通りに訳すると

コンポジター(ボーダーレスのように他ウィンドウを描画すること?)を回避することでFPSの低下を防ぎ、かつV-Syncを無効化。そしてディスプレイモードへの移動が無い場合(ウィンドウを再描画すること?)Alt+Tabでの転換を軽量化する。
ということらしいです。

この機能は2017年4月のCreators Updateで追加されたものですが、これによってWindows備え付けのゲームバーが使えるようになっています(https://forums.xbox.com/en-us/thread/8d058178-2329-4513-bc0a-1506c2942dad)
以前はDirectX12製のゲームはゲームバーのサポート対象外だったので、DirectX12上でも動作するように"全画面表示の最適化"という機能を備え付けたのでしょう。
つまりこの機能は「microsoftが自前のゲームバーをDirectX12で使えるようにするための機能」だと言ってよいでしょう。
最初に述べたように、この機能が原因のさまざまなゲームのパフォーマンス低下が報告されています。microsoft公式はこの問題を認識している(https://mspoweruser.com/tip-fullscreen-optimizations-might-hurting-game-performance-windows-10/)ようですが、おそらくまだ改善していないでしょう。なぜならDestiny 2では"OBSでウィンドウが認識されない"という不具合がこの機能が原因で未だに起こっているから。(というかこれがこの記事を書くきっかけになってます...)

"全画面表示の最適化"ですが、スタート>設定>ゲーム>ゲームバー の"Microsoftが検証した全画面ゲームをプレイするときにゲームバーを表示"のチェックを外すことで一括で無効化した状態になります。各実行ファイルの該当箇所にチェックは入っていませんが大丈夫です。

Microsoftのゲームバーを使ってなければこの機能は無効化してしまって構わないでしょう。

実態のわからないものをいじるというのは嫌なので調べましたが、まあやる事はチェック入れるか外すかくらいなので別に知らなくてもいい情報です。
そして最後まで読んだ方は分るかもしれませんが、はっきりと「こうこうこういう機能で...こういう描画の方式を取ってるから問題が起こるんですよ!」とは書けていない&分かっていないのです。僕には描画に関する専門知識が無いので、それこそあの英文が言ってるコンポジットの意味するものとか分かりません。その辺の専門知識をお持ちの方がいらっしゃれば情報提供お願いします。
探せばパッチノートに書いてありそうですが今日は疲れたので今度にします。
最後まで読んでくれた方、ありがとうございました。

つかれた
posted by ごまドレ at 12:59| Comment(0) | ゲーム | このブログの読者になる | 更新情報をチェックする