■事実
MicrosoftはDirectXの開発者ブログにて、「Shader Execution Reordering(SER)」のDirectX Raytracing(DXR)向け正式リリースを発表した(https://devblogs.microsoft.com/directx/shader-execution-reordering/)。
SERはShader Model 6.9の必須機能として位置づけられており、すべてのドライバーがSERを使用するシェーダーコードを受け入れる必要がある。 ただし、ハードウェアレベルでの実際のリオーダリング処理の実行は、各デバイスのサポート状況に依存する。
SERとは何か——スレッド発散問題の解決策
レイトレーシング(RT)処理を理解するうえで重要な点は、レイが「確率論的(stochastic)」な性質を持つことだ。 1本のレイが複数のオブジェクトに当たり、それぞれ異なるマテリアルやシェーダーを必要とする状況が常時発生する。 GPUは多数のスレッドを並列実行することで高いスループットを実現しているが、隣り合うスレッドが全く異なる処理を行う「スレッド発散」が起きると、この並列性が崩壊する。
従来のDXRでは、同一ワープ内の複数スレッドがそれぞれ異なるシェーダー処理を担当した場合、全スレッドが最も処理の重いものが完了するまで待機しなければならなかった。 言い換えれば、GPUの大半のスレッドがアイドル状態でリソースを無駄にしている時間が生まれてしまう。 特にグローバルイルミネーション、リフレクション、シャドウといった複雑なレイトレーシング処理ではこの問題が顕著になる。
SERはこの問題に対処するため、HLSLに「MaybeReorderThread」という新しい組み込み関数を導入した。 この関数を呼び出すことで、アプリケーションはレイのヒット情報・シェーダーの類似性・空間的な近接性などの情報をGPUに渡し、類似した処理を同じスレッドグループにまとめて実行するよう指示できる。 処理の前にGPU側でスレッドを「並び替え」することで、キャッシュの局所性が高まり、命令の再利用も促進される。 結果として、GPUがより「ベクトルマシン」に近い効率的な動作モードへ移行できる。
また、SERは新しいAPIとして「HitObject」も導入している。 HitObjectによりレイのトラバーサル(空間走査)とClosestHit/Missシェーダーの実行を分離できるようになり、再利用性の高いシェーダー設計が可能になった。 HitObjectとMaybeReorderThreadを組み合わせることで、リオーダリングの効果が最大化される。
SERはNVIDIAのRTXシリーズではすでにパストレーシング最適化の一部として活用されており、実ゲームでの効果も確認されている。 GDC 2025でのDXR 1.2発表において、Remedy EntertainmentはSERとOpacity Micromapsの組み合わせにより、アラン ウェイク 2(Alan Wake 2)のレイトレーシングコストを約3分の1に削減できることを示している。 アラン ウェイク 2はフルパストレーシングを採用しており、RTワークロードの中でも特に複雑な部類に入るタイトルだ。
デモによる性能検証と実装方法
Microsoftは、GitHub上のDirectX-Graphics-SamplesリポジトリにSERの検証用サンプル「D3D12RaytracingHelloShaderExecutionReordering」を公開している。 このサンプルは全画面クアッドを描画し、処理量の軽い「ライト」ワークと重い「ヘビー」ワーク(縦縞で表示される白い帯)を意図的に混在させることでスレッド発散を再現し、SERによる並び替えの効果を測定できる仕組みになっている。 シェーダーファイル内のコンパイル時オプションを調整することで、SERの有効/無効や各種モードを比較できる設計になっており、開発者がSERの挙動を直感的に理解するための教材としても活用できる。
Microsoftの報告によると、このデモをNVIDIA GeForce RTX 4090で実行した場合、SER未使用と比較してフレームレートが40%向上した。 Intel Arc B-Series(Battlemage世代)では、複数の構成でそれぞれ90%のフレームレート向上が確認された。
ただし、これらはMicrosoftが設定した特定の条件下でのデモ結果であり、実際のゲームワークロードとは異なる点に留意が必要だ。 Microsoftも「これはデモであり、実際のゲームではない」と明示している。 スレッド発散が最も激しくなる条件を意図的に作り出しているため、一般的なゲームでの効果はこれより控えめになるケースが多い。
SERを利用するには、Agility SDK 1.619とShader Model 6.9対応のDXCコンパイラ(DXC 1.9.2602.16)が必要となる。 また、レイトレーシングのサポート確認にはD3D12_RAYTRACING_TIER_1_0以上のクエリが必要で、SERのみを必要とする場合はShader Model 6.9と組み合わせて確認できる。
ハードウェアサポートの現状
SERはShader Model 6.9の必須機能として規格化されているが、「APIとして対応している」ことと「実際にハードウェアでリオーダリングを実行する」ことは別の話だ。 現時点でのサポート状況は以下の通りだ。
NVIDIA RTX 40シリーズ以降:ハードウェアレベルでの実リオーダリングをサポート。 Intel Arc Bシリーズ(Battlemage):ハードウェアレベルでの実リオーダリングをサポート。 AMD Radeon RX 9000シリーズ:SERのAPIには対応しているが、実際のスレッドリオーダリングは行わない(APIの互換性のみ)。
つまりAMD Radeon RX 9000シリーズはSERを使用するコードを拒否しないものの、実際の並び替え処理による性能向上は期待できない状態だ。
SERを利用するには、Agility SDK 1.619とShader Model 6.9対応のDXCコンパイラ(DXC 1.9.2602.16)が必要となる。
Opacity Micromaps(OMM)との関係
今回のShader Model 6.9リリースではSERと並んで、Opacity Micromaps(OMM)も正式版として提供される。 OMMは植物・フェンス・透明テクスチャなどのアルファテスト処理を効率化する技術で、コストの高いAnyHitシェーダーの呼び出し回数を削減する。 NVIDIAはOMMで最大2.3倍のパストレーシング性能向上を主張しており、こちらはRTX 40シリーズ以降でのみハードウェアアクセラレーションが利用できる。
■解説
正直なところ、「最大90%向上」という数字だけ見ると誇張に聞こえますよね。 ただ、これは意図的にスレッド発散を作り出したデモ環境でのベンチなので、「SERが効きやすい最悪ケース」での数字だと考えると妥当な範囲です。 実ゲームでどれくらい効くかは、そのゲームのRTワークロードの性質によって全然変わってくる。
一番参考になるのはアラン ウェイク 2でのレイトレーシングコスト3分の1削減という数字で、こちらはRemedy Entertainmentが実際のゲームエンジンで確認した結果です。 アラン ウェイク 2はPC版で複数のシェーダー層が重なるパストレーシング実装を採用しており、まさにSERが効きやすい複雑なRTワークロードです。 同様の構造を持つRTゲームなら、それなりの効果が期待できそう。
個人的に面白いと思っているのは、Intel Arc Battlemageがこの技術でかなり目立った結果を出していることです。 今のArc BシリーズはNVIDIAやAMDに比べると販売台数でも知名度でも後れを取っているけど、SERのハードウェアサポートという点では同等の位置にいる。 Intelにとっては数少ないアピールポイントになり得る技術です。
AMDの扱いが少し気になります。 RX 9000シリーズはAPI互換はあるけどリオーダリングの実行はしない、というのはどういうことかというと、「SERを使ったゲームが動かない」ということはないけど「SERの性能向上は受けられない」という状態です。 RX 9000シリーズが発売されたばかりのタイミングでこの状況というのは、AMDがSERの実装を後回しにしたのか、アーキテクチャ的な制約があるのか判断が難しい。 どちらにせよ、今後のドライバー更新でどう対応するのかは注目すべき点です。
Microsoftの立場から見ると、SERをShader Model 6.9の必須仕様にしたことは正しい判断だと思います。 「対応してもしなくてもいいオプション機能」では開発者が積極的に実装しないが、「必須仕様」にすることでドライバーとツールチェーンの対応を強制できる。 Agility SDK 1.619に対応するだけで利用できるので、採用の敷居は高くない。
要するに、今後のRTゲームのフレームレートを地道に底上げしていく技術だと見ています。 DLSS・FSR(FidelityFX Super Resolution)・XeSS(Xe Super Sampling)のような派手なアップスケーリング技術に比べると地味ですが、RTを使うゲームにとってはインフラに近いレベルで重要な改善です。 RTX 40シリーズとArc Battlemageユーザーは今後のゲームアップデートや新作での恩恵を待つ段階、RX 9000シリーズユーザーはAMDのドライバー更新を気長に待つ状況が続きそうですね。