【ITニュース解説】Microsoft's fix for PC shader compilation stutter could take years to fully implement
2025年09月27日に「Engadget」が公開したITニュース「Microsoft's fix for PC shader compilation stutter could take years to fully implement」について初心者にもわかりやすく解説しています。
ITニュース概要
Microsoftは、PCゲームで発生する「シェーダーコンパイル」による待ち時間やゲーム中のカクつきを解消する「Advanced Shader Delivery」を発表した。これは、事前に最適化したシェーダーデータをクラウドから配信する新技術だ。快適なゲーム体験を目指すが、PCの多様なハードウェア構成に対応するには数年かかり、広く普及するには時間がかかると見られている。
ITニュース解説
PCゲームをプレイする際、多くの人が経験するであろう悩みに「シェーダーコンパイル」という処理がある。これは、ゲームを初めて起動したときや、大型アップデート後に表示される「シェーダーをコンパイル中」というプログレスバーで、時には数十分、長い場合は数時間にもわたって終わらないことがある。この待ち時間は、せっかく新しいゲームを始めたくてウズウズしているプレイヤーにとって、非常にストレスになるものだ。また、この事前コンパイルが適切に行われないゲームでは、ゲーム中に突然画面がカクついたり(スタッター)、一瞬停止したりするといった問題が発生することもある。
そもそも「シェーダー」とは、ゲームのグラフィックを描画するために必要な、非常に小さなプログラムのことだ。例えば、キャラクターの肌の質感、水面のきらめき、木々の葉の揺れ方、光の当たり方など、ゲーム画面を構成するあらゆる視覚的な要素は、シェーダーによって計算され、表現されている。これらのシェーダーは、ゲーム開発者が作成した状態では、そのままではPCのグラフィックボード(GPU)が理解できる形式ではない。そこで、「コンパイル」という処理が必要になる。コンパイルとは、人間が書いたプログラムを、コンピュータが直接実行できる機械語に変換する作業のことだ。PCゲームにおいては、このコンパイル作業を、ユーザーそれぞれのPCに搭載されたグラフィックボードやそのドライバーの組み合わせに合わせて行う必要がある。
なぜこのような問題がPCゲームで特に顕著なのかというと、PCのハードウェア構成が非常に多様であるためだ。世の中には何十種類ものグラフィックボードが存在し、それぞれに異なるバージョンのドライバーが組み合わされる。ゲームがこれらすべての組み合わせに最初から対応したシェーダーを用意しておくことは現実的に不可能だ。そのため、ゲームはユーザーのPCで起動される際に、そのPCのグラフィックボードに合わせてシェーダーをリアルタイムでコンパイルする必要がある。この作業は非常に多くの計算資源を必要とするため、特に最新のAAAタイトルなど、グラフィックが複雑なゲームでは、完了までに膨大な時間がかかってしまうのだ。CPUの処理能力が遅い古いシステムを使っている場合は、さらに時間がかかることになる。
この長年の課題に対し、Microsoftが新たな解決策を打ち出した。「Advanced Shader Delivery(アドバンスト・シェーダー・デリバリー)」と呼ばれるシステムだ。この技術の目的は、プレイヤーがゲーム起動時に長いシェーダーコンパイルの待ち時間を経験したり、ゲーム中に突然カクつく問題を解消することにある。
Advanced Shader Deliveryの核となる仕組みは、シェーダーのコンパイル作業を、プレイヤーのPCで行うのではなく、事前にMicrosoftのクラウド上で行い、その結果を保存しておくというものだ。ユーザーがゲームをプレイしようとすると、システムはユーザーのPCのハードウェア構成を認識し、クラウドに保存されている、そのPCに最適なコンパイル済みのシェーダーをダウンロードして利用する。これにより、ユーザーはゲームを起動してすぐにプレイを始められるようになり、ゲーム中のシェーダー関連のカクつきも未然に防げるようになる。例えるなら、自分で料理を作るたびに食材を切ったり調理したりするのではなく、あらかじめ最適な状態で調理された料理が宅配されてくるようなイメージだ。
しかし、このAdvanced Shader Deliveryにも大きな課題がある。先述の通り、シェーダーコンパイルはグラフィックボードとそのドライバーの組み合わせに固有なため、一般的なPCの構成を網羅しようとすると、非常に多くの種類のコンパイル済みシェーダーを用意する必要があるのだ。たとえば、PCに多い一般的なグラフィックボードとドライバーの組み合わせをカバーするためには、一つのゲームに対して数十種類のコンパイル済みシェーダーセットが必要になる。これを、毎年リリースされる膨大な数のAAAタイトルすべてに適用すると考えると、Microsoftのクラウドに保存されるデータ量は、途方もない規模のデータベースになることが想像できるだろう。
コンソールゲーム機(例えばPlayStation、Xbox、Nintendo Switchなど)では、このシェーダーの事前コンパイルは以前から行われている。なぜなら、コンソールはハードウェアの構成が限られているためだ。多くても2種類か3種類の構成、あるいはNintendo Switchのようにほとんど一つの構成しかないため、ゲーム開発者は比較的容易に、すべてのハードウェアに対応したコンパイル済みシェーダーをゲームに含めることができる。これがPCとコンソールの大きな違いだ。
MicrosoftがAdvanced Shader Deliveryの導入を始めるにあたって、まず対象としているのが「ASUS ROG Xbox Ally」という携帯型ゲーミングPCだ。このデバイスを選んだのは、ハードウェアの構成が2種類しかないため、クラウドに用意するシェーダーの種類を最小限に抑えることができるからだ。また、Xboxアプリ上で提供されるゲームから順次適用されていく。これは、特定の環境から導入を進めることで、システムの安定性を確保し、大規模な展開への足がかりとする狙いがあると考えられる。
Microsoftは、ゲーム開発者向けのツールである「Agility SDK」を通じて、Advanced Shader Deliveryのサポートを開始した。これにより、ゲーム開発者は新しいゲームにこの技術を組み込むことが可能になった。しかし、新しい技術が広く普及し、その恩恵を多くのプレイヤーが受けられるようになるまでには、通常長い時間がかかる。
過去の事例を振り返ると、Microsoftは「Direct Storage」という別の技術も提供している。これは、ゲームのアセット(画像や音声などのデータ)の読み込み時間を短縮することを目的とした技術で、リリースから3年が経過しているにもかかわらず、現在でもこの技術を導入している大規模なタイトルはごく一部に限られているのが現状だ。Advanced Shader Deliveryもこれと同様に、多くの人気ゲームに組み込まれ、Steamのような主要なゲーム販売プラットフォームで広く利用可能になるまでには、長い年月が必要になるかもしれない。しかし、この技術が完全に普及すれば、PCゲーマーの体験は格段に向上するはずであり、その実現が期待される。