Windows の DirectX シェーダーキャッシュは削除しても安全?
DirectX Shader Cache には、グラフィックスカードが実行する小さなプログラムであるシェーダーが、Windows でコンパイルされた状態で保存されており、ゲームやアプリが毎回コンパイルし直さずに済みます。削除しても安全で、Windows 自身のクリーンアップツールにも項目があります。注意点は、次の起動で再構築が必要になるため、しばらくゲームの読み込みが遅くなったり、カクついたりすることがある点です。実際に容量を使っているときや、壊れていると疑うときに消し、日常のメンテナンスとしては行わないでください。
保存場所
システムのキャッシュは %LOCALAPPDATA%\D3DSCache で、その中にキャッシュごとのフォルダがあります。グラフィックスドライバーやゲームも、それぞれ独自のキャッシュを持っています。
| ユーザーフォルダー下のパス | 所有者 |
|---|---|
AppData\Local\D3DSCache |
Windows DirectX |
AppData\Local\Microsoft\DirectX Shader Cache |
Windows DirectX パイプラインキャッシュ |
AppData\Local\NVIDIA\DXCache, AppData\Local\NVIDIA\GLCache |
NVIDIA |
AppData\LocalLow\NVIDIA\PerDriverVersion\DXCache |
NVIDIA |
AppData\Local\AMD\DXCache, AppData\Local\AMD\VkCache |
AMD |
AppData\Local\Intel\ShaderCache, AppData\LocalLow\Intel\ShaderCache (現行のドライバー) |
Intel |
AppData\Local\VulkanCache |
Vulkan |
どれがあるかは、お使いのグラフィックスハードウェアによります。Steam はゲームごとのキャッシュを自分のライブラリに持っています。Steam のシェーダーキャッシュを見てください。システムのキャッシュを測るには次のようにします。
$p = "$env:LOCALAPPDATA\D3DSCache"
[math]::Round((Get-ChildItem $p -Recurse -Force -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1MB, 1)
単位は MB です。
消すと役に立つとき
| 見えるもの | 消すか | 理由 |
|---|---|---|
| ドライバー更新後に始まった不具合、クラッシュ、カクつき | 試す価値あり | 古い、または壊れたエントリが原因のことがあり、再構築で置き換わる |
| キャッシュが数 GB に増え、容量が必要 | 消す | 再生成される。ただし再びプレイするゲームの分だけ |
| ゲームが各エリアの初回だけカクつく | 消さない | キャッシュが作られている最中で、消すとまた同じことが起きる |
| PC 全体の動作が遅い | 消さない | これとは無関係 |
| 定期的なクリーンアップ | 不要 | 再構築のコストを払うだけで得るものが少ない |
消す方法
システムのキャッシュについて、組み込みの方法は次のとおりです。
- 設定 › システム › 記憶域 › 一時ファイル を開きます。
- DirectX シェーダー キャッシュ にチェックを入れ、ほかは好みのままにします。
- ファイルの削除 を選びます。
ディスク クリーンアップ(cleanmgr)にも同じ項目があります。Windows はこれをクリーンアップハンドラー D3D Shader Cache として登録しており、テスト用 ThinkPad にもありました。
手作業なら、ゲームとグラフィックス関連のツールを閉じ、Win + R で %LOCALAPPDATA%\D3DSCache を開き、中身を削除します。使用中のものは飛ばしてください。ドライバーのキャッシュは、ゲームを閉じた状態で、上のフォルダの中身を削除します。NVIDIA コントロール パネルの シェーダー キャッシュ サイズ は、大きくなる上限を決めるだけです。
消した後に起きること
各ゲームの最初の起動で、シェーダーが再びコンパイルされます。進行状況バーを出すゲームもあれば、キャッシュがいっぱいになるまで、新しいエリアに進むたびにカクつくゲームもあります。かかる時間はゲームとハードウェアによって異なり、数分になることもあります。最初のプレイだけで結果を判断しないでください。
やってはいけないこと
- ゲームのプレイやベンチマークの前に消さないでください。最も遅い状態になります。
- スケジュールで消さないでください。害になるほど溜まるゴミではなく、常に空のキャッシュは常にコンパイルし続けることを意味します。
- 上のパス以外のドライバーのフォルダを削除しないでください。
C:\Windows\System32\DriverStoreやドライバーのインストールフォルダはキャッシュではありません。 - ファイルが壊れたゲームが直ることを期待しないでください。それにはランチャーの検証オプションを使います。
Mole でできること
Mole for Windows の クリーン は、これらのキャッシュを名前つきで一覧します。DirectX Shader Cache、DirectX Pipeline Cache、上の NVIDIA、AMD、Vulkan のフォルダに加え、Intel の古い Local フォルダも含め、それぞれにサイズが付きます。現行の Intel ドライバーが使う LocalLow フォルダは、Mole は一覧しません。これらは未選択で始まり、推奨からは外されています。消すと各ゲームがシェーダーを再びコンパイルする必要があるからです。そのコストに見合うと判断したときに選択してください。Steam のゲームごとのキャッシュも同じように表示され、ProgramData にある NVIDIA のキャッシュには管理者権限が必要です。それらが置かれているフォルダのほかの部分については、AppData で削除できるものを見てください。
よくある質問
DirectX Shader Cache を削除しても安全ですか?
はい。Windows が再構築します。代償は、次にゲームを実行したとき、読み込みが遅くなったり、少しカクついたりすることです。
シェーダーキャッシュを削除するとパフォーマンスは上がりますか?
たいていは上がらず、短期的にはむしろ悪くなります。壊れたキャッシュが不具合を起こしているときや、ディスク容量が必要なときに役立ちます。
DirectX Shader Cache はどこに保存されていますか?
%LOCALAPPDATA%\D3DSCache です。NVIDIA、AMD、Intel、Steam は、別のフォルダに独自のキャッシュを持っています。
シェーダーキャッシュがまた作られるのはなぜですか?
ゲームやアプリが動作中に再びシェーダーをコンパイルするからです。それがキャッシュの役目なので、クリーンアップが失敗した兆候ではありません。
ドライバー更新後にシェーダーキャッシュを消すべきですか?
更新後に何かおかしいときだけです。ドライバーは必要なものを再構築するのが普通で、不具合やクラッシュが出たときに消すのは妥当な手順です。