そもそもカクつきはなぜ起きるのか
ゲームはシェーダーを移植可能な中間コード — DXILのようなバイトコード — として届けます。特定GPUの機械語ではなく、PCの世界は3ベンダー・10世代分のアーキテクチャの動物園だからです。ゲームが特定のパイプラインステート — 頂点・ピクセル・ジオメトリシェーダー、ブレンドモード、レンダーターゲット形式の特定の組み合わせ — を初めて要求したとき、グラフィックスドライバーはまさにその組み合わせを、あなたのカードが理解できるネイティブコードへコンパイルします。コンパイルはCPU上、通常は1スレッドで行われ、それを必要とするフレームは待たされます。目に見える結果が、プレイヤーがシェーダーカクつきと呼ぶコンマ数秒のフリーズです。
コンシューマ機は「プラットフォームが1つに固定」であることでこの問題を回避します。開発者はすべてのシェーダーをそのGPU向けにコンパイルし、結果をディスクに収録します。PCの開発者は代わりにプリコンパイル画面 — 「シェーダーをコンパイル中 18,207本中の4,312本」のプログレスバー — に頼り、最悪の作業をまとめて前倒しで行い、さらにコンパイル済みパイプラインをディスクに保存するパイプラインステートオブジェクト(PSO)キャッシュに頼ります。どちらの仕組みもなく発売されるゲームこそ、何時間もカクつくゲームです。
あなたを救うキャッシュ — と、それを壊すクリーンアップ
痛みを吸収するのは2層のキャッシュです。ゲーム自身のPSOキャッシュと、ドライバーのシェーダーキャッシュ — NVIDIA・AMD・Intelはそれぞれ、コンパイル済みシェーダーをAppData内のDXCacheやGLCacheといったフォルダーに保持しています。これらのフォルダーを消し去るアグレッシブなシステムクリーンアップは、あなたが忍耐で払い済みだったカクつきを、全部、静かに返品してきます。
- プリコンパイル画面は最後まで待つ:あのプログレスバーは、開発者があなたの代わりに、まとめて・ゲーム開始前に「カクついて」くれる処理そのものです
- ドライバーのシェーダーキャッシュには手を出さない — %LOCALAPPDATA%配下のNVIDIA DXCache、AMD DxCache、Intelフォルダーは、2回目以降を瞬時に読み込むためのものです。消せば初回遭遇のカクつきが全部戻ります
- GPUドライバーは大型発売の前に更新し、発売中ではない:新しいドライバーは新しいコンパイラー版を連れてくることが多く、既存のキャッシュ全体を無効化します
- 最初の1時間が最悪だと心得る:新しいレベル、武器、天候エフェクトは、まだ誰もコンパイルしていないパイプラインを起動します。キャッシュが埋まるにつれ、カクつきは消えていきます
- ここでゲームブースターやプロセス強制終了ツールを信じない — コンパイルはシングルスレッドのCPU作業で、RAMを空けても何も変わりません
- プリコンパイルもPSOキャッシュもないゲームなら、それは開発者の判断であってあなたのPCのせいではありません — 必要なのはWindowsの再インストールではなくバグ報告です
効かないもの
シェーダーカクつきに関する定番アドバイスの大半は、違う病気を治療しています。設定を下げても意味がありません。同じパイプラインのコンパイルは必要で、変わるのはその後の描画コストだけです。シェーダーキャッシュの削除を「対策」として行うのは、ローカルキャッシュを持つすべてのタイトルで事態を確実に悪化させます。唯一正当なケースは、起動時にゲームをクラッシュさせる破損キャッシュ — そのためにゲーム自身のキャッシュクリア機能が存在します。フレーム生成もコンパイルのカクつきは隠せません。補間フレームは止まったフレームから作られるからです。正直な答えは、忍耐と無傷のキャッシュです。一度ゲームを暖機運転させ、ドライバーのキャッシュをそのままにしておけば、2周目には問題はほぼ存在しなくなります。
よくある質問
発売直後のゲームがハイエンドPCでもカクつくのはなぜ?
初回遭遇時のシェーダーコンパイルです。フレームが待つあいだ、ドライバーはシェーダーをあなたのGPU用に変換しています。ゲームとドライバーのキャッシュが埋まるにつれて消えていきます。
シェーダーキャッシュを削除するとFPSは上がる?
上がりません — 一度我慢したコンパイルカクつきが戻ってくるだけです。削除するのは、破損キャッシュがゲームをクラッシュさせるときだけ。その際もゲーム自身のオプションを使うのが最善です。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]