ゲームを起動しようとすると「シェーダーを処理しています」で数分待たされる。しかも遊びたいときに限って始まる。この処理は設定から止められます。ただし止めていい人とそうでない人がはっきり分かれるので、手順の前に判断材料から書きます。

止めるかどうかを決める順番
  1. 何をしている処理か 主にVulkan/OpenGLのゲーム
  2. 自分が何GB使っているか調べる GPU+ドライバに紐づく
  3. 止めていい人か判定 止めない方がいい人もいる
  4. 止める手順 容量が足りないときの次の手も

何をしている処理なのか

シェーダーは、GPUが画面を描くための小さなプログラムです。本来はゲーム中に必要になった時点でGPUドライバがコンパイルしますが、それをプレイ中にやると一瞬固まる——いわゆるスタッタリングの原因になります。

Steamのシェーダー事前キャッシュは、この作業を遊ぶ前に先回りして済ませておく機能です。あなたのGPUとドライバに合わせてコンパイル済みのデータをダウンロードし、必要なぶんをローカルで処理しておきます。待たされているあの時間は、その先払いです。

大前提:主な対象はVulkanとOpenGLのゲームです

ここが判断の分かれ目で、日本語の解説ではほとんど触れられていません。

Steamのこの機能が本来ターゲットにしているのは、VulkanとOpenGLを使うゲームです。設定項目のもう一方が「Vulkanシェーダーのバックグラウンド処理」という名前になっているのも同じ理由です。

つまり、あなたが遊んでいるのがDirectXのタイトルばかりなら、この機能から受けている恩恵は想像より小さい可能性があります。逆に、Vulkan対応タイトルやProton/Steam Deck環境をよく使うなら、切ると体感に響きます。まず自分がどちら側かを考えてください。

キャッシュは「GPU+ドライバ」に紐づいています

もう一つ、待ち時間が突然発生する理由の答えになる仕様があります。

Steamクライアントの設定ファイル config\config.vdf を開くと、ShaderCacheManager という項目の中に CurrentBucketGPU と CurrentBucketDriver という値が入っています。キャッシュはGPUの機種とドライバのバージョンごとに束ねて管理されている、ということです。

ここから分かるのは、GPUドライバを更新すると、それまで貯めたキャッシュの前提が変わるという点です。「昨日まで一瞬で起動していたのに、今日は急に待たされる」という現象の多くはこれが原因です。設定を疑う前に、直前にドライバを更新していないかを思い出してください。この場合は一度処理させれば元に戻るので、機能を切る必要はありません。

自分の環境が何GB使っているかを調べる

「容量を食っている」と言われても、実際の数字を見ないと判断できません。Windowsなら次のコマンドで確認できます。PowerShellを開いて貼り付けてください。

Get-ChildItem "C:\Program Files (x86)\Steam\steamapps\shadercache" -Directory |
  ForEach-Object {
    $mb = [math]::Round((Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue |
      Measure-Object Length -Sum).Sum / 1MB, 1)
    [PSCustomObject]@{ AppID = $_.Name; MB = $mb }
  } | Sort-Object MB -Descending

フォルダ名はAppIDなので、store.steampowered.com/app/<AppID>/ を開けばどのゲームか分かります。

ゲームを別ドライブのライブラリに入れている場合は、そのライブラリ側にも steamapps\shadercache があります。登録済みライブラリの一覧は C:\Program Files (x86)\Steam\config\libraryfolders.vdf の path 行で確認できるので、そちらも同じ手順で測ってください。1箇所だけ見て「大した容量じゃない」と判断すると読み違えます。

数字を見たうえで、機能を止めるほどの容量なのかを決めるのが順番です。筆者の確認した環境では合計1MB未満でしたが、これは大作をほとんど入れていない環境での値なので、参考にはなりません。自分の数字を見てください。

止める手順

Steamクライアントの「設定 → ダウンロード」を開き、シェーダー事前キャッシュの項目にある2つのチェックを操作します。

  • 「シェーダーの事前キャッシュを有効にする」 — これがメインのスイッチです。オフにすると事前処理そのものが行われなくなります
  • 「Vulkanシェーダーのバックグラウンド処理を許可する」 — こちらはオンにすると、PCが完全にアイドルでなくても処理を進めます。「遊びたい瞬間に待たされる」のが不満なら、メインを切るのではなく、まずこちらをオンにするほうが筋がいい対処です。ダウンロード中などの空き時間に処理を済ませてくれます

つまり選択肢は「全部切る」だけではありません。待つタイミングをずらすという中間の解があります。ここを知らずに機能ごと切ってしまう人が多いところです。

すでに溜まったキャッシュを消したい場合は、上で調べた shadercache フォルダの中身を削除します。ただし削除しても、次回起動時に必要な分は再取得されます。容量対策としては一時しのぎである点に注意してください。

止めていい人・止めない方がいい人

止めていい人

  • 遊ぶのがDirectXタイトル中心で、Vulkan/OpenGLのゲームをほとんど起動しない
  • 回線が遅く従量制で、ダウンロード量そのものを減らしたい
  • 上のコマンドで測った結果、実際に無視できない容量を占めていた
  • ゲーム中のわずかなカクつきより、起動までの時間を優先したい

止めない方がいい人

  • Vulkan対応タイトルやSteam Deck、Proton環境をよく使う
  • プレイ中に一瞬固まるのが我慢できない(特に対戦ゲーム)
  • ストレージにも回線にも余裕がある

判断に迷うなら、まず「Vulkanシェーダーのバックグラウンド処理」をオンにして数日使ってみてください。 それで待ち時間が気にならなくなるなら、機能を切る必要はありません。多くの人はここで解決します。

それでも容量が足りないなら

シェーダーキャッシュを消して確保できる容量には限りがあります。UE5世代のタイトルは本体だけで100GBを超えるものも珍しくないので、根本的に足りていない場合は、Steamのライブラリフォルダを別ドライブに追加してゲーム本体を移すか、ストレージ自体を増やすほうが早い解決になります。

低スペック環境でのゲーム選びについては非力なPCでも本当に動く、面白いSteamゲームに、ゲームがカクつく・つながらない系のトラブル全般は協力プレイ環境の作り方にまとめています。

よくある質問

Q. 事前キャッシュを切るとゲームが起動しなくなりますか

いいえ。シェーダーのコンパイルがゲーム実行中にGPUドライバ側で行われるようになるだけで、起動できなくなることはありません。

Q. 切ったあと、後から戻せますか

戻せます。同じ「設定 → ダウンロード」でチェックを入れ直すだけです。以降のゲームから再び事前処理が行われます。

Q. shadercacheフォルダを消しても大丈夫ですか

消してもゲームのデータは壊れません。ただし次回以降、必要なぶんは再び取得・生成されるため、容量対策としては一時的です。

Q. ドライバを更新したら急に処理が長くなりました

Steamはキャッシュを「GPUの機種+ドライバのバージョン」の組み合わせで管理しているため、ドライバを更新すると前提が変わります。一度処理が終われば元の速さに戻るので、設定を変える必要はありません。

Q. 「Vulkanシェーダーのバックグラウンド処理」はオンとオフどちらがいいですか

「遊びたいときに待たされる」のが不満ならオンです。PCが完全にアイドルでなくても処理を進めるため、ダウンロード中や別の作業中に済ませてくれます。逆に、他の作業中にPCが重くなるのが嫌ならオフのままにしてください。