シェーダー コンパイルのカクつき: 最初の数分が最も悪い理由

初めて表示するものすべてでゲームが引っかかる理由、ドライバーの更新でそれがすべて戻ってくる理由、そしてシェーダー キャッシュの削除が、もう一度その代償を払うことを確実にする唯一の「対処」である理由を説明します。

しばらくプレイしていなかったゲームを始めると、最初の 10 分がひどい状態です。新しい武器、新しいエフェクト、特定の敵が初めて現れるたびに、引っかかりが起きます。やがて落ち着き、2 日目の夜にはゲームはなめらかになっています。自分が変えたものは何もそれに関わっていません。時間がそうしたのです。

あるいは別のパターン: ゲームは問題なかったのに、グラフィックス ドライバーを更新したら、最初の 1 時間がまたぎこちなくなりました。

どちらも同じ仕組みで、本当に 正常 な数少ないカクつきの原因の 1 つです。健全なマシンが正しいソフトウェアを動かしていても起きる、という意味でです。

その作業を自分のマシンで行わなければならない理由

シェーダーは、GPU 上で動く小さなプログラムです。ゲームの開発者はそれを高水準の言語で書いてコンパイルしますが、それは途中まで、つまりプログラムが何をするかを記述する中間形式までです。特定のグラフィックス チップがそれをどう実行すべきかまでではありません。

GPU が実際に実行するマシン コードは、事前に作ることができません。開発者が持っていない 2 つのもの、つまり正確な GPU のアーキテクチャと正確なドライバーのバージョンに依存するからです。中間形式をマシンのシリコン向けの命令に変えるのはドライバー自身のコンパイラーで、そのコンパイルは、ゲームがシェーダーを必要とした瞬間に CPU 上で行われます。

そのため、ある場面でシェーダー、レンダー ステート、頂点レイアウトの特定の組み合わせが初めて必要になったとき、何かをコンパイルしなければなりません。ゲームがフレームの途中でそれを求めて待つと、そのフレームは遅れます。その遅れたフレームが、感じた引っかかりです。

結果は、ディスク上の シェーダー キャッシュ に書き込まれます。同じものが 2 回目に現れたときは、作り直す代わりに、コンパイル済みのコードがキャッシュから読み込まれます。プレイするにつれてゲームがよくなり、2 回目のセッションが問題ないのは、まさにそのためです。

振り出しに戻すもの

キャッシュが有効なのは、それを作ったドライバーとハードウェアに対してだけです。次の一覧のどれかがあると、キャッシュの全体か一部が無効になり、プレイの最初の 1 時間がまたぎこちなくなります:

どれも故障ではありません。キャッシュが古いままではなく正しいことの代償です。

これが原因だと見分ける方法

シェーダー コンパイルには独特の特徴があり、カクつきの一覧のほかのどれとも似ていません:

  1. だんだん消えます。 これが決め手になる兆候です。3 時間目のカクつきが 3 分目と同じなら、これではありません。
  2. 新しいものと結び付いています。 武器、エリア、天候のエフェクト、特定の敵を初めて見たとき。同じ通路を 2 回目に歩くと問題ありません。
  3. 温度やセッションの長さとは無関係です。 熱の問題は長くプレイするほど悪くなりますが、これはよくなります。
  4. 名前を挙げられるタイミングで戻ってきます。ランダムではなく、ドライバーの更新の後、パッチの後、クリーンアップの後です。
  5. 忙しいのは GPU ではありません。 コンパイルは CPU の作業です。こうした引っかかりの間に GPU の使用率が満杯よりかなり下にとどまるのはここでは想定どおりで、ゲーム中の急な FPS 低下 で説明している別の問題の証拠ではありません。

この 5 つが症状に当てはまらない場合は、Windows 11 でゲームがカクつく理由 の一般的な一覧に戻ってください。そこにある原因は、自然に消えることはありません。

どうすればよいか

ほとんどの場合: 起きるに任せます。ただし、その周辺には本当の選択肢があります。

対処としてシェーダー キャッシュを削除しないでください。 このページで 2 回読む価値があるのはこの助言だけです。キャッシュの削除はカクつきの治療法として絶えず勧められていますが、実際にそれがするのは、コンパイルの代償全体を 0 からもう一度払うことを確実にすることです。ドライバーを変更した後の 表示の破損 に対しては正当なトラブルシューティングの手順です。性能の対処としては、その逆です。

ゲームに独自のプリコンパイルの手順があれば使い、 飛ばさないでください。メニューの前に「シェーダーをコンパイル中」の画面で 2 分かけるゲームは、まさにこの作業を先に済ませていて、そこでのコストは待つことだけです。

ドライバーを更新した後は、しばらくマシンをつけたままにしてください。 ドライバーの中には、システムがアイドル状態の間に DirectX 12 のシェーダーを作り直すものがあります。まさに、実行時の作業を後で減らすためです。それが役に立つのは、マシンにアイドルの時間がある場合だけです。

ゲームとそのキャッシュは SSD に置き、同期されるフォルダーの外にしてください。 クラウドのクライアントはすべての書き込みを監視しており、ゲームはシェーダー キャッシュを絶えず書き込みます。エントリの 1 つ 1 つがフィルター ドライバーの作業になり、さらに、試合が使っているのと同じ接続でのアップロードになります。

その期間の中で測定しないでください。 ドライバーの更新後の最初の数分に取ったキャプチャは、ドライバーではなくコンパイラーを測定しています。比較の規則は ベンチマークの読み方 で扱っています。これは、うっかり 1 つ目の規則を破りやすい場面です。

カクつき探偵がこれについて言うこと

カクつき探偵 は、シェーダー キャッシュが最近削除されたかどうかを確認し、見つけた場合はこのページと同じことを伝えます: ゲームはプレイしながら削除されたキャッシュをコンパイルし直すこと、セッションの初めのカクつきは正常で自然に消えること、そしてその期間が過ぎるまでベンチマークを取るべきではないことです。

これは意図的に、修理すべき故障としては示されていません。修理するものはなく、一度払うべきコストがあるだけです。ツールにできる正直なことは、今その期間の中にいると伝え、一晩中設定のせいにして過ごさずに済むようにすることです。

正常でなくなるとき

決して消えないコンパイルのカクつきは別の問題で、キャッシュが保持されていません。ドライブがいっぱいになっていないか、セッションの間に定期的なクリーンアップがキャッシュを消していないか、そしてゲームのフォルダーがクラウドのクライアントやサイズの上限によって消され続ける場所にないかを確認してください。

そして、実行が序盤に偏らず最初から最後までむらがある場合は、代わりに 平均 FPS は高いのに 1% Low が悪い を見てください。それはウォームアップの問題ではなく、イベントの問題です。

関連

CS2 をプレイしていますか? 今でも効果がある起動オプションと、ビデオ設定のどの項目が実際にフレーム レートを左右するか: CS2 のカクつきと低 FPS を直す方法: 測定に基づくチェックリスト

w0a は、指示されるまで Windows の設定を変更しません。また調整は、新しい値を書き込む前に元の値を保存します。 通知を受け取る

このページは役に立ちましたか?

何が足りなかったか、何がうまくいかなかったかを教えてください。いただいた内容はすべて読んでいます。

送信されるのは、入力した内容とこのページの名前だけです。サーバーは不正利用を防ぐために接続元の IP アドレスも記録し、報告と一緒に削除します。16 歳未満の方は、この欄を使わないでください。 プライバシー ポリシー

このページで解決しなかった場合は、ご連絡ください。どの記事を読んだかを書いていただければ、その記事を修正します。