概要
前回の記事では、NVIDIA DLSS 3のフレーム補間技術について解説しました。
今回は、そのオープンソースの対抗馬である AMD FidelityFX Super Resolution (FSR) のアーキテクチャについて解説してみようと思います。
FSRの最大の特徴は、
- 機械学習ハードウェアに依存しないアルゴリズムベースのアプローチ
- オープンソースでの提供
の2点が大きいと思います。
これにより、AMD GPUだけでなく、NVIDIA GPUやゲームコンソールでも動作する広範な互換性を実現しています。
本記事ではFSR 1(空間アップスケーリング)、FSR 2(時間的アップスケーリング)、FSR 3(フレーム生成)のアーキテクチャを簡単に解説します。
なお、最新のFSR 4(Redstone)は機械学習を取り入れたアプローチへと進化しており、RDNA 4アーキテクチャ(Radeon RX 9000シリーズ)専用の技術となっています。FSR 4については別の機会に記事を書くかもしれません。
設計思想:MLなしで高品質を実現
FSRの設計思想は明確です。
AMDのFSR 2公式ドキュメントには以下のように記載されています。
Machine Learning (ML) is not a prerequisite to achieving good quality image upscaling. Often, ML-based real-time temporal upscalers use the model learned solely to decide how to combine previous history samples to generate the upscaled image: there is typically no actual generation of new features from recognizing shapes or objects in the scene.
つまり、MLベースのアップスケーラーが行っていることの本質は「過去のサンプルをどう組み合わせるか」であり、
これは手作業で最適化されたアルゴリズムでも実現可能ということになります。
FSR技術の世代と進化
FSRは世代ごとに大きく異なるアプローチを採用しています。
| 世代 | 技術タイプ | 主要アルゴリズム | 特徴 |
|---|---|---|---|
| FSR 1.x | 空間アップスケーリング | Lanczos + EASU/RCAS | 単一フレームのみ使用、軽量 |
| FSR 2.x | 時間的アップスケーリング | Temporal Accumulation + Lanczos | 複数フレーム蓄積、モーションベクトル活用 |
| FSR 3.x | アップスケーリング + フレーム生成 | FSR 2 + Optical Flow | 中間フレーム生成でフレームレート2倍 |
| FSR 4 (Redstone) | MLベースアップスケーリング | ニューラルネットワーク | RDNA 4専用、ML推論による高品質化 |
主要用語
| 用語 | 1行解説 |
|---|---|
| Lanczos | sinc関数を基にした高品質リサンプリングフィルタで、エッジのシャープさを保ちながら画像を拡大縮小する |
| Temporal Accumulation | 複数フレームの情報を時間方向に蓄積・統合し、単一フレームでは得られない高解像度ディテールを再構成する手法 |
| Optical Flow | 連続する2フレーム間のピクセル単位の動きベクトルを、輝度変化のパターンから推定するコンピュータビジョン技術 |
| EASU | Edge-Adaptive Spatial Upsampling:エッジを検出し方向に沿ったフィルタリングで、アップスケール時のボケを抑制 |
| RCAS | Robust Contrast-Adaptive Sharpening:局所コントラストに応じて強度を調整する適応型シャープニング |
| Disocclusion | オブジェクトの移動により、前フレームで隠れていた領域が新たに露出する現象 |
| Motion Vector | 各ピクセルが前フレームから現フレームへどれだけ移動したかを示す2次元ベクトル |
| Jittering | サブピクセル単位でカメラ位置を毎フレーム微小にずらし、時間方向で解像度以上の情報を取得する技術 |
| Reprojection | モーションベクトルを用いて、過去フレームのピクセルを現在フレームの位置に再配置する処理 |
| Inpainting | 画像の欠損領域を周囲の情報から自然に補完・修復する画像処理技術 |
FSR 1:空間アップスケーリングの基礎
FSR 1は、単一フレームのみを使用した空間アップスケーリング技術です。
FSR 2以降の基盤となるアルゴリズムを理解する上で重要です。
FSR 1は2つのパスで構成されています。
- Pass1: EASU (Edge Adaptive Spatial Upsampling)
- アップスケール処理
- Pass2: RCAS (Robust Contrast Adaptive Sharpening)
- シャープニング処理
Lanczosフィルタの役割
Lanczosフィルタとは:理想的なローパスフィルタであるsinc関数を、有限範囲で打ち切って実用化したリサンプリングフィルタです。バイリニアやバイキュービックと比較して、エッジのシャープさを維持しながらリンギング(波打ちノイズ)を抑制できる特性があります。
Lanczosをベースに、エッジ方向への適応性を加えたものがEASUです。
FSR 1の限界
FSR 1は軽量であり幅広いハードウェア上で動作しますが、単一フレームの情報のみを使用するため、
- 動きの速いシーンでちらつきが発生しやすい
- 細かいディテールの再構成に限界がある
- アンチエイリアシング効果が限定的
のような課題がありました。
これらを解決するために開発されたのがFSR 2です。
FSR 2:時間的アップスケーリングのアーキテクチャ
FSR 2は、FSR 1の空間的アプローチに時間方向の情報蓄積 (前フレーム)を加えた技術です。
複数フレームの情報を統合することで、大幅な画質向上を実現しています。
アルゴリズム構造
入力リソース
FSR 2が要求する入力リソースは以下の通りです:
| リソース | 解像度 | フォーマット | 用途 |
|---|---|---|---|
| カラーバッファ | レンダリング解像度 | アプリケーション指定 | 現在フレームの色情報 |
| 深度バッファ | レンダリング解像度 | 1x FLOAT | 深度情報(逆深度対応) |
| モーションベクトル | レンダリング or 表示解像度 | 2x FLOAT | ピクセル移動情報 |
| Reactive Mask | レンダリング解像度 | R8_UNORM | 半透明オブジェクト指定 |
| 露出値 | 1x1 | R32_FLOAT | オプション(自動露出可) |
Reproject & Accumulate
FSR 2の心臓部はステージ5のReproject & Accumulateです。
- Jittering(ジッタリング)
- レンダリング時にカメラの投影行列にサブピクセル単位のオフセットを毎フレーム加える技術
- Temporal Accumulation
- ジッタリングにより毎フレーム微妙に異なる位置でサンプリングされたピクセル情報を、複数フレームにわたって蓄積・統合する手法
FSR 3:フレーム生成のアーキテクチャ
FSR 3は、FSR 2のアップスケーリングに フレーム補間(Frame Interpolation)を追加したものです。
コンポーネント構成
FSR 3は4つの主要コンポーネントで構成されています:
- FSR 3 Upscaler:FSR 2ベースの時間的アップスケーリング
- Optical Flow:連続フレーム間のピクセル移動を計算
- Frame Interpolation:中間フレームの生成
- Frame Interpolation Swapchain:フレームペーシングと非同期処理
Optical Flowアルゴリズム
Optical Flow(光学的フロー)とは、連続する2フレームの画像を比較し、各ピクセルがどの方向にどれだけ移動したかを推定する技術です。
FSR 3のOptical Flowは、AMD Fluid Motion Frames (AFMF) 技術がベースになっています。
FSR 3はハードウェアアクセラレータを使用しないため、やや処理負荷が高くなる傾向にありますが、幅広いGPUで動作可能です。
DLSS 3 (OFA: Optical Flow Accelerator)
- 専用ハードウェアユニット
- Ada Lovelace GPUに内蔵
- GPUコア処理と並列実行可能
- 固定機能で高速・低消費電力
FSR 3 (Software Optical Flow)
- コンピュートシェーダー実装
- 汎用GPUコアで実行可能
- 非同期コンピュートで並列化可能
- 幅広いGPUで動作
モーションベクトルの融合
FSR 3は、2種類の動き情報を組み合わせて高精度なモーションフィールドを構築します
- ゲームエンジン モーションベクトル
- Optical Flow ベクトル
どちらのモーションベクトルを優先するかは、再投影された色の類似度に基づいて決定されます。
Optical Flowの結果が色の一致度が高ければそちらを、ゲームMVの一致度が高ければそちらを採用します。
Frame Interpolation:中間フレーム生成
Frame Interpolationは、FSR 3の核心となるコンポーネントです。
- Setup
- Reconstruct Previous Depth
- Disocclusion Mask
- オブジェクトが移動することで、前フレームでは隠れていた背景領域が新たに見えるようになる現象
- 2方向のDisocclusionマスクを生成し、どちらのフレームからデータを取得すべきかを判断する
- Compute Interpolation
- 各ピクセルの中間位置を、前後両フレームから半分のMVでワーピングして求める
- Inpainting Pyramid
- Inpainting
- フレーム補間における遮蔽領域の補完
FSR 3.x の進化
最新のFSR 3.1では、アップスケーリングとフレーム生成がデカップリング(分離)されました。これにより、画質に定評のあるDLSSアップスケーリングを使用しながら、FSR 3のフレーム生成のみを併用するといった柔軟な実装が可能になっています。
遅延の課題と解決策
フレーム生成技術に共通する課題が遅延の増加です。
DLSS3と同じ課題ですが、中間フレームを生成するには前後両方のフレームが必要なため、
現在フレームがレンダリング完了しても、補間処理が終わるまで表示するまでの待機が発生します。
遅延の数式モデル
$$\text{Total Latency} \approx (L_{base} - L_{reduction}) + L_{interpolation}$$
- $L_{base}$:ベースとなるシステムレイテンシ
- $L_{reduction}$:Anti-Lag 2による削減分
- $L_{interpolation}$:フレーム補間による追加遅延
Anti-Lag 2による削減がフレーム補間の追加遅延を相殺することで、トータルの体感遅延を許容範囲に抑えます。
NVIDIA Reflexとの比較
| 項目 | NVIDIA Reflex | AMD Anti-Lag 2 |
|---|---|---|
| 対象GPU | NVIDIA GPU全般 | AMD RDNA 2以降 |
| 統合方式 | SDK統合(必須) | ドライバー + SDK |
| FSR 3との連携 | 使用可能 ※ | ネイティブ統合 |
※ NVIDIA GPU上でFSR 3を使用する場合、NVIDIA Reflexと組み合わせることが可能です。
DLSSとの技術比較
| 項目 | DLSS 3 | FSR 3 |
|---|---|---|
| アップスケーリング | AIベース(Tensor Core) | アルゴリズムベース(Lanczos) |
| フレーム生成 | OFAハードウェア + AI | ソフトウェアOptical Flow |
| 動作要件 | RTX 40以降(FG) | DX12対応GPU全般 |
| 遅延対策 | Reflex(必須統合) | Anti-Lag 2(オプション) |
| ソースコード | 非公開 | オープンソース(MIT) |
| メモリ使用量 | 比較的大きい | 比較的小さい |
| 処理負荷 | 専用HWで分散 | GPUコンピュート集中 |
画質の傾向
- DLSS:より安定した画質、細部の再構成に優れる傾向
- FSR:軽量な処理、幅広いHW互換性、オープンな改良が可能
参考文献・リソース
本記事の執筆にあたり、以下のAMD公式技術資料を参照しています。
AMD GPUOpen Documentation
- FidelityFX Super Resolution 2 Documentation
- FidelityFX Super Resolution 3 Documentation
- FidelityFX Optical Flow Documentation
- FidelityFX Frame Interpolation Documentation






