診断マトリクス:シェーダーコンパイルによるスタッターと真因
DirectX 12およびVulkan対応タイトルにおいて、「GPUドライバーを更新した直後にゲームがひどくカクつく」「数週間ぶりに起動したゲームで再びスタッターが発生する」という現象は、シェーダーキャッシュの初期化または容量枯渇が原因です。
| カクつき(スタッター)の症状 | 内部ドライバー・API挙動 | 直接的な引き金 | 最適な対処法 |
|---|---|---|---|
| ドライバー更新後の初回プレイ10〜15分間が重い | ドライバー更新時に過去のバイナリキャッシュが一括削除 | パイプライン状態オブジェクト(PSO)の再構築 | 初期プレイを継続し、キャッシュ再生成を待つ |
| 複数のゲームをプレイ後、古いゲームでスタッター再発 | GPUドライバー規定の 1GBシェーダーキャッシュ上限 | 新規ゲームのデータに押し出され古いキャッシュが破棄 | コントロールパネルでキャッシュサイズを 10GB以上 に拡大 |
| アップデート後に画面が虹色に乱れる、またはクラッシュ | パッチ後のゲームバイナリと旧キャッシュの不整合 | 破損したDirectXシェーダーキャッシュの残存 | WindowsのディスククリーンアップでDirectXキャッシュを削除 |
なぜデフォルトの「1GB制限」が現代ゲームを破壊するのか
NVIDIAやAMDのドライバーは、初期状態でシェーダーキャッシュのディスク上限を保守的な 1GB に設定しています:
- 現代の大作ゲーム(『Cyberpunk 2077』等)は、1タイトルだけで 400MB〜800MB のシェーダーキャッシュを消費します。
- 3〜4本のゲームを並行して遊ぶと、ドライバーのLRU(最長未使用時間)アルゴリズムが古いタイトルのキャッシュを自動消去します。
- その結果、久々に起動したゲームで再びリアルタイム・コンパイルが発生し、激しいフレームレート低下が引き起こされます。
シェーダーキャッシュ最適化の3ステップ
ステップ1:シェーダーキャッシュサイズを10GB以上に拡張
- NVIDIAユーザーの場合:
- デスクトップを右クリック -> NVIDIA コントロール パネル を開く。
- 「3D 設定の管理」->「グローバル設定」タブを選択。
- 「シェーダー キャッシュ サイズ」の項目を探す。
- 初期値の「ドライバーのデフォルト」から
10 GB(SSD容量に余裕があれば100 GB)に変更して適用。
- AMDユーザーの場合:Adrenalin設定内の「グラフィックス」->「詳細」から必要に応じてシェーダーキャッシュをリセット。
ステップ2:破損したDirectXキャッシュの完全削除
Win + Rを押し、cleanmgrと入力して実行。- システムドライブ(C:)を選択。
- リスト内の DirectX シェーダー キャッシュ のみにチェックを入れて削除を実行。
- PCを再起動してゲームを再開し、正常なキャッシュを再構築させます。