コンパイル済みシェーダーがキャッシュを必要とする理由
シェーダーはGPUが頂点やピクセルごとに実行する小さなプログラムで、動く前にあなたのGPUとドライバーバージョン向けにコンパイルされる必要があります。このコンパイルは高くつき、シェーダー1つあたり数十〜数百ミリ秒、現代のゲームには数千個含まれています。新しいシェーダーがゲーム中に現れると、コンパイルはヒッチとして現れます。多くのゲームの最初の1時間に感じる、悪名高い初回プレイ時のカクつきです。
そこでドライバーはコンパイル結果をディスクに保存し、次回以降の起動で再利用します。シェーダーキャッシュの仕事はそれだけです。コンパイル時のカクつきを一回限りのコストに変えるのです。キャッシュが大きいほど良いというのもこのため——中身はすべて、あなたが体験していないカクつきなのです。
キャッシュはディスクのどこにあるのか
Windows自身が%LOCALAPPDATA%\D3DSCacheにDirect3Dキャッシュを保持し、各ドライバーベンダーが独自フォルダーを追加します。合わせるとゲーミングマシンでは数GBに達することも珍しくなく、人がそれに気づき始めるのはまさにその時です。
- %LOCALAPPDATA%\D3DSCache — アプリやゲームが使うWindowsのDirect3Dシェーダーキャッシュ
- %LOCALAPPDATA%\NVIDIA\DXCache — DirectXシェーダー用のNVIDIAキャッシュ
- %LOCALAPPDATA%\NVIDIA\GLCache — OpenGLタイトル用の同じもの
- %LOCALAPPDATA%\AMD\DxCache — AMDのDirectXシェーダーキャッシュ
- %LOCALAPPDATA%\AMD\DxcCache — DX12/DXILシェーダー用のAMDキャッシュ
- %LOCALAPPDATA%\Intel — Intelグラフィックスはこの下のサブフォルダーにシェーダーキャッシュを置く
削除が効くとき——そして時間の無駄なだけのとき
正当なケースはごく狭いものです。GPUドライバーの更新がキャッシュに壊れたエントリーを残した場合、ゲームは起動時にクラッシュしたり、描画の乱れが出たり、以前はカクつかなかった場所でカクついたりします。キャッシュを削除すればクリーンな再コンパイルが強制され、まさにこの種の問題が直ります。ディスク クリーンアップには「DirectX シェーダー キャッシュ」のチェックボックスがあり、設定 → システム → 記憶域 → 一時ファイルにも同じ項目が出ます。どちらもこれらのフォルダーの中身を安全に削除します。
削除でできないのはパフォーマンスの改善です。健全なキャッシュはゲームを滑らかにするもので、遅くするものではありません。消せばどのゲームも次の初回起動時にコンパイルコストを払い直します。儀式ではなく薬として扱ってください。ドライバー変更後に症状が出たときに消す、それ以外は放っておく。
よくある質問
DirectXシェーダーキャッシュを削除しても安全ですか?
安全です。ドライバーが自動で再構築します。唯一のコストはシェーダーの再コンパイルで、キャッシュが埋まるまでの間、少しの初回カクつきが戻るだけです。
初めて遊ぶときだけゲームがカクつくのはなぜですか?
ゲームの動作中、あなたのGPUとドライバーに合わせて新しいシェーダーがコンパイルされているためです。コンパイル済みのバージョンがキャッシュに置かれると、以降の起動ではヒッチなしにディスクから再生されます。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]