Open5

yuniframe: Upscalerの調査

okuokuokuoku

システム組込みのUpscalerを用意した方が良いんじゃないか説がある。まぁWebGLだとcomputeが無いから厳しいし。。

1枚絵方式 と 複数枚方式

基本的には2種類ある。1枚絵方式はアプリケーション側の修正はほぼ不要で、単に拡大する。複数枚方式はモーションベクタやdepth等も入力とする。

  • 1枚絵方式
    • WindowsのAutoSR(現時点ではSnapdragon専用、↓ GSRとは異なる、AIアップスケーラー)
    • NVIDIAのImage Scaling SDK
    • AMDのFSR 1 -- 良いLanczos
    • QualcommのSnapdragon Game Super Resolution(GSR) -- 良いLanczos
  • 複数枚方式
    • DirectSRは以下のupscalerに対する共通インターフェースとして機能する
    • NVIDIAのDLSS
    • AMDのFSR2以降
    • IntelのXeSS
    • QualcommのSnapdragon Game Super Resolution 2(GSR2)
    • Arm Accuracy Super Resolution ... はFSR2のカスタムらしい。現時点で未公開。

複数枚方式はいわゆるTemporal Anti Aliasing (TAA)と同じインターフェースを持つ。このため、一切のアップスケールを行わず単なるアンチエイリアスとして使うソリューションもある(NVIDIAのDLAA)。

okuokuokuoku

NVIDIA(Image Scaling SDK / DLSS)

Image Scalingは1枚絵の拡大。GLSL/HLSLソースが提供されていて、他のGPUでも動く。

DLSSは超有名なAIベースソリューション。16Kとかのground truthを食わせてトレーニングした係数/ネットワークを持つ。NVIDIAのGPU専用。

DLSS SDKはsubmoduleの形でImage Scalingリポジトリを含んでいる: Image Scalingはシャープ化フィルタも含んでいて、DLSS後にユーザーの好みに応じて掛けることが推奨されている。

okuokuokuoku

AMD(FSR)

クロスプラットフォームにつきAIソリューションでない。

FSR3ではフレーム生成が追加された。DLSSに加えてマスク等の入力が増えている。これらの増加はMSのDirectSRにも反映されている。

okuokuokuoku

Intel (XeSS)

AI-Enhancedではあるが普通のコンピュートシェーダー実装なので他のGPUベンダでも使える。FSRとは違ってソースコードは公開されていない。

入力パラメタは少い。フル解像度のモーションベクタがあるならdepthすら不要になっている。(DirectSRではDepth必須だけど)

okuokuokuoku

Qualcomm(GSR)

ピクセルシェーダー実装もある非常に軽量なUpscaler。特にv1は1pass実装となっている。

GSR2の入力はdepthとモーションベクタとレンダリングパラメタ。