イベント
[GDC 2024]DLSS,FSR,XeSSなど乱立する超解像技術をゲーム開発者が扱いやすくするMicrosoftの新仕様「DirectSR」とは?
Work Graphについては,すでにレポートを掲載しているので,本講では,DirectSRについて取り上げたい。
[GDC 2024]CPUを使わずにGPUが自発的に描画するパイプライン「Work Graph」がDirectX 12に正式採用
米国時間2024年3月18日に行われたGDC 2024の技術セッションにおいて,AMDとMicrosoftは共同で,DirectX 12の新機能「Work Graph」を発表した。本稿では,Work Graphとは何で,どのような利点をもたらすのかを解説したい。
なぜDirectSRが必要になったのか
「DirectSR」のSRは,「Super Resolution」(超解像)の略だ。詳報に先立ち,MicrosoftのShawn Hargreaves氏は,「DirectSRが必要に迫られた背景」について説明した。
一昔以上前は,「面倒だが,存在感のあるPCゲームのグラフィックス設定」の定番といえば,「アンチエイリアス」や「テクスチャフィルタリング」であった。アンチエイリアスには「MSAA」「FXAA」「TXAA」,テクスチャフィルタリングには「バイニリア」(Biliner)や「トライリニア」(Trilinear),「異方性フィルタリング」(Anisotropic)といった設定項目に対して,オン/オフや「4X/8X」といった設定値を割り当てるのに,頭を悩ませた経験があるのではないか。
ここ数年,設定でPCゲーマーの頭を悩ませている設定のひとつが,アップスケーラの一種である超解像関連の設定だ。
とくに近年では,GPUがリアルタイムレイトレーシングに対応したものの,実際には,それほど性能は高くない。そのため最新ゲームグラフィックスの多くは,鏡像(Reflection)や影(Shadow),間接照明(Indirect Lighting,Global Illumination),環境遮蔽(Ambient Occlusion)などの要素から,いくつかを選んで低解像度でレイトレーシング画像を描画することが多い。そのほかの要素については,従来のラスタライズ法でそこそこの解像度で描画したうで,低解像度のレイトレーシング結果と合成する。ただ,そのまま表示するのは解像度面で物足りないので,最後に4Kなどの高解像度にアップスケールしてから表示しているわけだ。
かくして,NVIDIAの「DLSS」(Deep Learning Super Sampling)を皮切りに,AMDは「FSR」(FidelityFX Super Resolution)を,Intelは「XeSS」(Xe Super Sampling)といった具合に,GPU各メーカーが独自の超解像アップスケーラを次々に提唱するようになり,「低解像度レンダリングしてから,超解像処理でアップスケール」というゲームグラフィックス描画トレンドは定着した。ほかにも,各ゲームスタジオが独自開発した超解像アップスケーラを,自社タイトルに組み込んでいる事例もたくさんある。
こうした超解像アップスケーラの採用は,ユーザーからの期待が大きいため,ゲーム開発側としては,なるべく多種多様な超解像アップスケーラを最新ゲームに搭載しなければならないというプレッシャーに晒されている。
一方,ゲームプラットフォーム側(※Windows PCやXbox)としては,最新技術を駆使した超解像アップスケーラを,すでにリリース済みのゲームタイトルからも利用できるようにしたい,と考えるようになってきたそうだ。
こうした,ややこしい状況を解決できるのは何だ……となれば,もうそれは「DirectXしかないでしょう」ということで,ついに,Microsoftがリーダーシップを取って,このテーマに取り組みだしたのである。
DirectSRは超解像アップスケーラを統一しない
Microsoftは,DirectX版超解像アップスケーラであるDirectSRで,何をしようというのか。
まず,Hargreaves氏が述べたのは,「我々は,超解像アップスケーラを画一的な仕様に統一しようと誘導するわけではない。目的は開発者とユーザーにとって,超解像アップスケーラを扱いやすくすることだ」である。
現在の問題は,ゲーム開発側が,たとえばゲーム内にDLSSとFSRとXeSSを実装しようとしたら,これらすべてのシェーダコードをゲームに組み込む必要があることだ。しかし,それぞれの技術に「長所と短所」があるとはいえ,解像感を復元,増強しつつ,ゲーム映像の解像度を変換するという機能自体は同じなので,処理系は互いによく似ている。
であれば,DLSS/FSR/XeSSのシェーダコードすべてを,まるまるゲームに実装する必要はない。そうしたコア処理部分をDirectSRの下にまとめてしまってはどうかと,Microsoftは考えたのだ。
この仕組みだと,ゲーム側では,超解像アップスケーラに必要な前段の処理と,パラメータの用意だけを行えば,DirectSRを呼び出すだけで,DLSS/FSR/XeSSのすべてに対応できることになる。
仮に,新しいGPUが登場して,新しい超解像アップスケーラ技術を利用できるようになったしよう。そのGPUメーカーが,超解像アップスケーラのコア処理部分だけをDirectSRランタイムで処理できるよう,Microsoftに追加してもらえれば,既存のゲームにおいても最新の超解像アップスケーラが利用できるようになる。
これが,DirectSRのコンセプトというわけである。
DLSSのようなGPU機能依存型の超解像アップスケーラも,DirectSRを使えば実装が楽に
続いて,Hargreaves氏は,DirectSRの動作イメージについて解説した。
実行時に特定のGPU機能に依存しないFSRやXeSSのような仕組みの場合,DirectSRランタイムには,全GPUで動作する共通コードを搭載するとのこと。そして新しい超解像アップスケーラが登場すると,その都度,コア処理部分を追加してDirectSRランタイムをアップデートするそうだ。
ここで気になるのは,DLSSのような,AI系の超解像アップスケーラだ。こうした超解像アップスケーラのコア処理部分は,GPUの推論アクセラレータ(NPU)などを活用するので,扱いが面倒そうだ。
これらについても,ゲーム開発側の手間はほかと変わらない。ゲーム側では,超解像アップスケーラに必要な前段の処理と,パラメータの用意だけを行って,DirectSRのフロントエンド処理だけを活用するだけでいい。
大きな違いは,超解像アップスケーラのコア処理をGPUドライバ側で行うことだ。GPU機能依存部分の処理系については,DirectSRランタイム側ではなく,最新版のGPUドライバで行うほうが合理的である。たとえば同じDLSSでも,GeForce RTX 40/30/20シリーズでは,DLSSの処理を行うTensor Coreの世代が異なるので,GPUの機種や世代ごとに適したドライバで処理したほうが適切なのは自明だ。
超解像アップスケーラのコア部分を,DirectSR側にある全GPU共通コードで処理するか,それともGPUドライバ側で処理するのかは,GPUメーカーごとの考え方によっても変わりそうな気はする。
いずれにせよ繰り返しになるが,ゲーム側としては,超解像アップスケーラに必要な前段の処理と,パラメータの用意だけを行えば,特定のGPU機能依存する超解像アップスケーラにも対応したことになるのは嬉しいだろう。
DirectSRの登場時期は?
AMDのRob Martin氏は,AMDの「FSR2」における実際の動作イメージについて説明した。
FSR2はもともと,汎用のシェーダプログラムとして書かれているのて,Compute Shader 6.2以上に対応したGPUであれば,AMD以外のGPUでも動作する(関連記事)。DirectSRでは,FSR2のコア処理部分をDirectSRランタイムに統合しているので,必要な事前処理とパラメータ群を用意すれば,ゲーム側にはFSR2のコードがなくても問題なく動作できると,Martin氏は説明している。
ちなみに,GDC 2024で発表となったDirectXの新機能であるWork Graphは,すでにDirectX Agility SDKでβ版を利用ができるが,DirectSRの方は開発がスタートしたばかりだそうで,開発者向けのテスト公開時期は未定となっている。
ただ,DirectX開発チーム総出で開発に取り組んでいるとのことで,GPUデバッギングツールのMicrosoft「PIX」も,DirectSR対応が進められている。
DirectSRの提供時期は未定とのことだが,来年のGDCのタイミングでは,映像をともなった実機デモなども見られるようになるはずだ。期待しながら待ちたい。
MicrosoftのDirectX Developer Blog(英語)
4Gamer「GDC 2024」掲載記事一覧
- 関連タイトル:
DirectX
- この記事のURL: