開発者のBlueHeisenbergが、PCゲームで発生するシェーダーコンパイル由来のカクつきを減らす無料のオープンソースツール「SCSKiller」を公開した。ゲームを起動する前に、そのPCのGPUで必要になるシェーダーや描画パイプラインをあらかじめコンパイルし、GPUドライバのキャッシュへ保存しておく仕組みだ。
ゲーム側の事前コンパイルで処理しきれていない部分を補えるため、初めて表示するエフェクトなどで一瞬画面が止まる現象を減らせる可能性がある。ただし、必要な描画処理をどこまで事前に再現できるかは、GPUやゲーム、描画APIによって異なる。開発者が示した「0回」という結果も、ゲーム中のあらゆるカクつきがなくなったことを意味するわけではない。
ゲームを起動する前に、初回のシェーダーコンパイルを済ませる
SCSKillerは、インストールされたゲームのファイルからシェーダーを読み取り、そのゲームが構築すると予想される描画パイプラインを、別のプロセスからあらかじめ作成する。
Windows 10 バージョン2004以降とWindows 11の64ビット環境に対応し、2026年10月6日時点の最新安定版は1.2.2だ。SteamやEpic Games Storeだけでなく、Xbox PCアプリ、EA app、GOG、Ubisoft Connect、Battle.netなどにインストールされたゲームも検出できる。ただし、ゲームをライブラリから見つけられることと、そのゲームを事前コンパイルできることは別である。
シェーダーは、物体の描画や色、照明などを計算するGPU向けのプログラムだ。ゲームには通常、GPUが直接実行する最終的な機械語ではなく、中間形式のシェーダーコードが含まれている。そのため、実際にゲームを動かす際には、GPUドライバがそのPCのGPUで実行できる形へコンパイルする処理が残る。
初めて必要になったシェーダーをゲーム中にコンパイルし、ゲーム側がその完了を待つと、フレームの表示が一瞬止まる。これが、いわゆるシェーダーコンパイルによるカクつきの一因になる。
DirectX 12では、シェーダーだけでなく、頂点データの形式やブレンド方法などの描画設定をまとめた「パイプライン状態オブジェクト(PSO)」を構築する。シェーダーが利用するリソースの構成を定義する「ルートシグネチャ」もPSOの作成に関わる。
そのため、ゲームに入っているシェーダーコードをすべて見つけるだけでは、ゲームが実際に作るPSOを完全に再現できるとは限らない。
SCSKillerでは、ゲームエンジンごとの解析処理を使って、収録されているシェーダーや、その組み合わせ、必要な設定を割り出す。そして専用のコンパイル用プログラムを、ゲーム本体の実行ファイルと同じ名前で動かし、DirectXを通じてPSOを作成する。
公開された設計資料によると、GPUドライバがシェーダーキャッシュを実行ファイル名などにひも付けて管理する仕組みを利用し、SCSKillerが事前に作成した結果を、後から起動するゲームが再利用できるようにしている。AMDのアプリケーションプロファイルやパッケージ化されたゲームなど、単純に実行ファイル名だけでは処理できないケースについても、個別の対応が組み込まれている。
事前コンパイルはゲームを終了した状態で行う。SCSKillerが先にDirectX経由でGPUドライバへ処理を実行させ、その結果をドライバキャッシュへ保存する。ゲームを起動したときに同じ処理が必要になれば、ドライバはキャッシュ済みの結果を再利用できる。
つまり、プレイ中に発生するはずだったコンパイル処理を、ゲームを始める前に済ませておく仕組みだ。コンパイルそのものに必要なCPU処理や、キャッシュを保存するストレージ容量までなくなるわけではない。
「0回」は、すべてのカクつきが消えたという意味ではない
開発者は、ドライバキャッシュを空にした状態で約5分間プレイした場合と、SCSKillerで事前コンパイルしてからプレイした場合を比較している。
計測にはSCSKiller自身のレコーダーを使い、ゲームがシェーダーやパイプラインのコンパイル完了を20ms以上待った場合を「カクつき」と数えている。
| ゲーム/GPU | 20ms以上のコンパイル待ち回数(準備前→後) | 最長のコンパイル待ち(準備前→後) |
|---|---|---|
| FINAL FANTASY VII REBIRTH/RTX 5090 | 19回→0回 | 76ms→5ms |
| FINAL FANTASY VII REBIRTH/Ryzen AI Max+ 395 | 162回→0回 | 291ms→7ms |
| ホグワーツ・レガシー/RTX 5090 | 1,014回→87回 | 2,400ms→100ms |
出典は、2026年10月6日に確認した開発者のREADME「Results」。各ゲームを約5分間プレイした結果であり、異なるGPU同士の性能を比較するための測定ではない。
RTX 5090で測定した『ホグワーツ・レガシー』では、20ms以上のコンパイル待ちが1,014回から87回へ大幅に減った。ただし、完全になくなったわけではない。
また、この表が示しているのは、一定時間を超えたコンパイル待ちの回数と、その中で最も長かった待ち時間だ。コンパイルに費やした総時間や、平均フレームレートが何%向上したかを示すものではない。
『FINAL FANTASY VII REBIRTH』の「0回」も、20ms以上待たされたコンパイルが測定中に発生しなかったという意味だ。事前コンパイル後も最長5msまたは7msのコンパイル処理は記録されている。
さらに、ゲーム中のカクつきはシェーダーコンパイルだけで発生するわけではない。マップ移動に伴うデータ読み込みやアセットのストリーミング、CPU処理など、別の原因による停止はSCSKillerの対象外だ。
ゲーム全体がどこまで滑らかになったかを評価するには、実際のフレーム時間も別に確認する必要がある。
READMEに掲載された結果には、GPUドライバのバージョンや細かな描画設定、同じテストを何回繰り返したかまでは記載されていない。そのため、この数値をすべての環境にそのまま当てはめることはできない。
Wccftechも『FINAL FANTASY VII REBIRTH』を独自に試し、約3GB分のNVIDIA向けPSOバイナリを生成した後、初めて表示される武器エフェクトなどに伴うカクつきがほぼなくなったと報告している。開発者以外からも改善例は出ているが、この試用結果だけで、すべてのゲームで同じ効果が得られることを証明できるわけではない。
NVIDIAとAMDでは、事前コンパイルに必要な情報が異なる
NVIDIAとAMDでは、GPUドライバがコンパイル済みデータを再利用する条件が異なる。SCSKillerの開発者は独自のテストと実際のゲームを使ってドライバキャッシュの挙動を調べ、GPUメーカーや描画APIに応じて事前コンパイルの方法を変えている。
そのため、対応可否は単純にGPUの製品名だけでは決まらない。DirectX 11かDirectX 12か、さらにゲームが実際に使う描画設定をどこまで再現できるかも重要になる。
| GPU/描画API | 公開資料に基づく対応 | 事前コンパイルに必要な条件 |
|---|---|---|
| NVIDIA/DirectX 12 | 対応 | エンジンの規則からPSOを再構築できれば、プレイ記録なしで準備可能。情報が不足するゲームでは記録が必要 |
| AMD/DirectX 12 | 対応 | 対応可能と判定するには、実際の描画内容を含む記録が必要になる場合がある。共有記録を利用できれば自分で収集する必要はない |
| NVIDIA/DirectX 11 | 対応 | 別プロセスから描画・計算処理を実行し、ドライバ側のコンパイルを先に発生させる |
| AMD/DirectX 11 | 現時点で対象外 | 頂点入力レイアウトなどによって再コンパイルが発生し、ゲームと同じ状態の再現が難しい |
| Intel | 未対応 | 開発者は検証用GPUを所有していないと説明 |
2026年10月6日時点のREADMEの対応条件と設計資料の「Driver caches」「Readiness rules」を、GPUと描画API別に整理した。すべてのゲームの動作を保証する表ではない。
開発者の検証によると、NVIDIAのDirectX 12ドライバでは、シェーダーとルートシグネチャを中心にコンパイル結果を再利用でき、ブレンドなど一部の描画状態が変わってもキャッシュが有効になる。
一方、AMDでは、頂点データのレイアウトやシェーダー同士の組み合わせなど、より多くの状態が再コンパイルの条件になるケースが確認されている。
つまり、似たPSOをあらかじめ作れば十分なのか、それともゲームが実際に使った設定まで正確に再現する必要があるのかによって、事前コンパイルの難易度が変わる。
現在のSCSKillerでは、AMD環境でゲームの対応可否を判断するために、実際のプレイ中に作られた描画パイプラインの記録が必要になる場合がある。ただし、利用可能な共有記録があれば、自分でゲームをプレイして収集する手間を省ける。
ここで説明されているドライバキャッシュの挙動は、SCSKillerの開発者が実機で観測したものだ。GPUメーカーが、将来のすべてのドライバについて保証した公開仕様ではない。
Vulkanを使うゲームも現時点では対象外だ。GPU自体が対応していても、利用している描画APIとゲームごとの対応状況を確認する必要がある。
共有記録とアンチチートによって、使える範囲が変わる
ゲームファイルを解析するだけでは必要なPSOを十分に特定できない場合、SCSKillerは実際のプレイ中にゲームが作成した描画パイプラインを記録し、その情報を後から事前コンパイルに利用する。
数分間プレイしてデータを集める仕組みだが、その間に一度も表示しなかった場所やエフェクトまで記録できるわけではない。
Patreon支援者向けのコミュニティデータベースを利用すると、ほかのプレイヤーが共有した記録を使って事前コンパイルできる。共有されるのは主にシェーダーを識別するためのハッシュ値であり、GPU向けにコンパイル済みのコードそのものではない。
SCSKillerは共有されたハッシュ値を手掛かりに、自分のPCへインストールされているゲームから対応するシェーダーを読み出し、自分のGPU向けにコンパイルする。
このため、共有記録があれば自分で先にプレイしてデータを集める手間を減らせる。一方、実行時に動的生成されたシェーダーやModによって追加・変更された処理については、手元で新たな記録が必要になる場合がある。
PC上で動作するSCSKiller本体の基本機能は無料で利用できる。一般的なゲーム向けのコミュニティデータベースはPatreon支援者向けだが、設計資料には、一部のミドルウェア向けデータを無料で共有する仕組みも記載されている。共有機能のすべてが有料というわけではない。
自分でプレイ内容を記録する場合には、ゲームのフォルダへレコーダー用DLLなどを一時的に配置する必要がある。
SCSKillerは原則として、アンチチートを検出したゲームを自ら起動したり、レコーダーを導入したりしない。ゲームファイルを読み取るだけにとどめる。
ただし、ゲームファイルや過去の記録、コミュニティの共有記録だけで事前コンパイルの内容を組み立てられる場合は、アンチチートを搭載したゲームでも、ゲームを起動せずにキャッシュを準備できる可能性がある。アンチチート対応ゲームだからといって、すべての事前コンパイルが不可能というわけではない。
『ELDEN RING』と『ARMORED CORE VI』については、Easy Anti-Cheatを使わないオフラインセッションで記録する例外も用意されている。利用者がゲームごとに許可し、起動するたびに確認する仕組みだ。
この方法では、SCSKillerがレコーダー用のファイルをゲームフォルダへ配置してから、Easy Anti-Cheatを使わない状態でゲームを直接起動する。
開発者は、これらのファイルが残った状態でゲームをオンライン起動すると、アカウント停止などのリスクがあると警告している。オフラインで用意された例外的な記録方法と、通常のオンラインプレイは明確に分けて考える必要がある。
公開直後から修正も続いている。v1.2.1では、v1.2.0以降でレコーダーが正しく有効にならず、プレイしても記録できなかった不具合が修正された。
RenoDXなどのHDR Modによってルートシグネチャが変更される場合への対応も追加されたが、Modの配置方法や種類によっては制約が残る。v1.2.2でも記録データの引き継ぎやアンチチートゲームの扱いなどが修正されている。
そのため、「対応」と表示されているかどうかだけでなく、利用するバージョンの変更履歴も確認した方がよい。
配布版は現時点でコード署名されていない。公式READMEでは、Windows 11のSmart App Controlが有効な環境では未署名アプリがブロックされるため、署名済みのリリースを待つよう案内している。
Microsoftの配信方式とは異なる、ローカルでの事前コンパイル
Microsoftが進めるAdvanced Shader Delivery(ASD)は、あらかじめコンパイルしたシェーダーをゲームのダウンロード時に一緒に配信する仕組みだ。
ゲーム開発者側が必要な描画処理のデータを収集してMicrosoftへ提出し、対応するPC向けのシェーダーを配信基盤側で準備する。Microsoftは10月1日、対応機器の拡大を発表し、IntelとNVIDIAへの展開については同月後半を予定していると説明した。
ASDでは、ゲーム開発者と配信プラットフォームが事前準備を担う。
一方のSCSKillerは、ユーザーのPCにインストールされたゲームを解析し、そのPC自身のGPUを使ってドライバキャッシュを事前に作る。
そのため、ゲーム開発者が専用対応していない既存タイトルや、複数のストアで販売されるゲームにも利用できる余地がある。その代わり、コンパイルにかかる時間やキャッシュ容量はユーザー側が負担し、ゲームによっては実際にプレイして描画パイプラインを記録する必要もある。
GPUドライバを更新した場合は、キャッシュを作り直す必要が生じることもある。SCSKillerにはドライバ更新を検出して再コンパイルする機能があり、利用者が許可すれば自動で処理できる。
つまり、一度だけ事前コンパイルすれば永久に終わる仕組みではない。
SCSKillerの実用性を左右するのは、事前コンパイルした結果を、実際のゲームがどこまでドライバキャッシュから再利用できるかだ。
ゲームファイルだけから必要な描画処理を十分に特定できる作品もあれば、実際のプレイ記録が必要な作品もある。さらに、ゲームやGPUドライバの更新によって、それまで使えていたキャッシュが無効になる場合もある。
それでも、ゲーム本体の事前コンパイルが不十分な作品で、プレイ中に初めて発生するコンパイル処理をゲーム開始前へ移せるのであれば、SCSKillerはシェーダーコンパイルによるカクつきを減らす一つの手段になる。



