お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2014/10/07 12:00

連載

西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

技術説明会でDSRとMFAAについて語ったTom Petersen氏(Distinguished Engineer, NVIDIA)
画像集#002のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 第2世代Maxwellを採用した「GM204」コアのGeForceには,いくつかの新機能が採用されている。GM204の特殊要素を効果的に活用したものから,Kepler世代のGeForceでも対応できそうなものまで,バラエティ豊かだ。
 今回は,GM204コアを採用する「GeForce GTX 980」「GeForce GTX 970」(以下順に,GTX 980,GTX 970)の発表時に紹介された新機能から,「Dynamic Super Resolution」(ダイナミックスーパーレゾルーション,以下 DSR)と「Multi Frame Anti-Aliasing」(マルチフレームアンチエイリアシング,以下 MFAA)について細かく解説していきたいと思う。


ディスプレイ解像度を超えた解像度でレンダリングしてダウンサンプリングするDSR


 NVIDIAが2014年9月に米モントレー市で実施した技術説明会で,何よりも先に紹介されたのがDSRだった。

画像集#003のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 では,DSRとはどんなものかだが,それを説明する前に,DSR誕生の経緯を説明しておく必要があるかもしれない。

 PlayStation 3(以下,PS3)やXbox 360世代における,マルチプラットフォーム対応タイトルのPC版は,ハイエンドクラスのGPUで動作させると,1920×1080ドット解像度を指定し,ゲーム側に用意されるグラフィックス設定をすべて最も高い状態にしても,もの足りないくらい負荷が低く,結果,フレームレートは60fpsを超えてしまうことが多かった。
 「フルHD解像度で,可能な限りグラフィックス設定を上げて60fps張り付きの状態を維持できるなら,それでいいじゃない」と思うかもしれない。ただ,ゲーマーにとって,いま最も一般的な解像度を前にしたとき,GPU性能が有り余っているなら,その余力を使って,もう少し映像品質を引き上げてくれたほうが嬉しいのも確かだろう。

 そういう思いを受けてNVIDIAが提唱するのがDSRで,具体的には「ディスプレイ解像度よりも高い解像度でいったんレンダリングして,その結果をダウンサンプリングさせる」というGPU活用法となる。
 ダウンサンプリングのことは「スーパーサンプリング」とも言うが,いずれにせよこれは,NVIDIAに買収される前の3dfxが「Full Screen Anti-Aliasing」(フルスクリーンアンチエイリアシング)として提唱していた手法と同じ考え方によるものだ。

 では,DSRでどんな効果が得られるのかというと,主なメリットは2つある。
 1つは,「芦」(あし)のような非常に細いポリゴン帯からなるモデルを的確に描画できるようになることだ。
 現在のGPUが持つレンダリングシステムでは,ポリゴンがラスタライズされる(=ポリゴンがピクセルに分解される)とき,当該ポリゴンが「ピクセル化するかしないか」は,その判定ポイントである「サンプルポイント」とポリゴンが重なるかどうかに依存する。そして,細い草のモデルだと,細すぎてサンプルポイントと重ならないケースが出てくることがあるのだ。
 この場合,実際の描画結果として,「細い草のモデルが,フレームごとに点線として描かれたり実線として描かれたりといった状況がランダムに繰り返され,ちらついて見える」という現象が引き起こされることになる。

細い草を描画するときの流れ。白い2本の実線に挟まれた範囲がポリゴンの輪郭,緑色の点がサンプルポイントだ。ポリゴンの輪郭とサンプルポイントが重ならないところは描画されなくなるので,描画結果は右のような状態になる。これが時間経過とともに動くと,ちらついて見えることになるわけだ
画像集#004のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

 細い草でなくても,3Dモデルの輪郭線では同様の現象が生じ,時間方向にピクセルが消失と出現を繰り返すして,ちらつきが出ることもある。
 ちなみにこのちらつきは「ピクセルクローリング」(Pixel Crawling)や「ピクセルシマー」(Pixel Shimmer)と呼ばれることが多い。

DARK SOULS II」を1920×1080ドット解像度(1080p)で描画したときの描画
画像集#005のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

左が1920×1080ドット解像度,右が3840×2160ドット解像度におけるそれぞれサンプリング結果
画像集#006のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 これを改善するにはサンプルポイントの数を増やすしかない。そして,それをもっとも単純に実現する方法は「レンダリング解像度を上げる」ことである。高解像度でレンダリングすれば,細いポリゴンもきちんとピクセル化される可能性が高くなるため後から表示解像度にダウンサンブリングしたとしても,その情報は消えず,きちんと可視化されるというわけだ。

こちらが3840×2160ドットの4K解像度でレンダリングして,1920×1080ドットの1080pへダウンサンプリングした結果。これがDSRの効果だ
画像集#007のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
描画効果の比較ショット。左が標準的な1080p描画,右がDSRによる描画のものとなる
画像集#008のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

 DSRによるメリットの2つめは,時間方向に生じるちらつきの低減である。

 現在のゲームグラフィックスでは,多ポリゴンモデルが遠方で描かれたとき,1ピクセルに複数のポリゴンが含まれ,かつ,それら複数のポリゴン面が異なる向きを向いているケースがけっこうな割合で生じる。そのとき,通常は最も手前のポリゴンが当該ピクセルに描画されるわけだが,複数のポリゴンがほぼ同じZ軸パラメータを持っている場合は,「カメラからの位置関係に応じてポリゴンの前後関係が変わり,ライティングによって生じるハイライトの出方がフレームごとに変わる」ケースも出てくる。

 とくに,今日(こんにち)においては,ハイダイナミックレンジレンダリング(High Dynamic Range Rendering)や物理ベースレンダリング(Physically Based Rendering)の採用によって,強烈な高輝度ハイライトが出ることも多い。それだけに,ハイライトの出方がフレームごとに変わると,露骨にちらちらした点滅に見えてしまう場合があるのだ。

DSRではダウンサンプルにあたってガウシアンフィルタに(Gaussian Filter)によるボカし処理を併用可能。これによって誤差拡散が行われるため,ちらつきを低減できる
画像集#009のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 それに対してDSRでは,高解像度レンダリングを行うため,1920×1080ドット解像度では1ピクセルで表現しなければならなかったポリゴンが複数のピクセルで描画される。なので,時間方向に出現と消失が繰り返されていた高輝度ハイライトを実体として一度きちんと描いてからダウンサンプリングで1ピクセルに集約するようになり,少なくとも,時間方向のちらつきはかなり低減できるようになるのである。

GeForce ExperienceのDARK SOULS IIプロファイル。1920×1080ドット解像度のディスプレイが接続されているときに「接続されているディスプレイの解像度は3840×2160ドット」などといった疑似情報を伝えることで,DSRは利用できる
画像集#010のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 さて,DSRの設定だが,これは「DSRのレンダリング解像度を実際のディスプレイ解像度の何倍で行うか」で指定することになる。最も使われそうなのは,ディスプレイ側の解像度が1920×1080ドットで,DSRのレンダリング解像度が3840×2160ドットとなるケースだろうが,1920×1080ドット解像度のディスプレイを使ってDSR解像度を2560×1440ドットにしたり,2560×1440ドット解像度のディスプレイを使ってDSR解像度を3840×2160ドットにしたりといったことも可能だ。GPU性能とディスプレイ解像度に合わせてさまざまな組み合わせを試せるので,遊び慣れたゲームの見栄えがどう変わるかを試してみるだけでも楽しいだろう。

DSRはNVIDIAコントロールパネルの「3D設定の管理」でも設定可能。ディスプレイ解像度の何倍でレンダリングするかを設定するのが「DSR Factors」になる(左)。中央は,実際のディスプレイ解像度にダウンサンプリングするにあたってのフィルタ処理関連設定。スムーズさを上げれば上げるほど誤差拡散率は高くなってボケ味が強くなるが,時間方向のチラツキなどは軽減される。右は,設定後のディスプレイ解像度の選択画面
画像集#011のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か 画像集#012のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か 画像集#013のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

 ところで「Super Resolution」といえば「超解像」という訳語があるわけだが,超解像とは,失われた解像度情報をアルゴリズムで推測・復元することをいう。それに対してDSRは,言ってしまえばただのスーパーサンプリングである。超解像ではないのではないか。
 この質問を,DSRの担当者であるNVIDIAのTom Petersen(トム・ピーターソン)氏にぶつけてみたところ,返ってきた答えは「その指摘は正しい。実際のところ,ダイナミックでスーパーな解像度という意味で付けた名称だ」だった。

 なお,DSRについては,NVIDIAのデモ担当者が「1つ問題がある」と話していたので,そのことも紹介しておこう。
 結論から先に言うと,DSR機能自体に問題があるわけではない。あるのは,現状のゲームにおける4Kレンダリングのほうだ。

 3Dグラフィックス自体は,どんなに解像度を上げてレンダリングしても,画面に対する3Dオブジェクトの大きさは一定で,その上がった解像度分だけ,情報量が増す。しかし,ゲージ類などの2Dグラフィックス部分は,ゲームシステム側で,その解像度に適したサイズのデータが用意されていないと,小さく表示されてしまうことがある。

War Thunderのグラフィックス設定オプションより。ディスプレイ解像度1920×1080ピクセルで,DSR「4.00X」設定を行ったうえでゲームを起動すると,ゲーム側の解像度設定では3840×2160ピクセルを選択できるようになる
画像集#014のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 NVIDIAのデモ担当者が見せてくれたのは「War Thunder」における比較で,1920×1080ドット表示とDSRによる4Kダウンサンプリングでは,当然のことながら後者の画面のほうが美しいのだが,一方でゲームプレイにおいて重要なレーダー表示やマップ画面,各種数値情報のサイズが,1920×1080ドットの通常表示時と比べて4分の1になってしまっていた。
 同じ2Dグラフィックス表示でも,ポリゴンにテクスチャが貼られていたためなのか,残段数表示など,一部はDSRを利用しても適切な大きさに表示されているのだが,それ以外はかなり見にくい状況だ。

画像集#015のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
通常の1920×1080ドットでWar Thunderのゲーム画面を表示させたところ
画像集#016のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
こちらがDSRによる疑似4K表示時。左下のレーダー表示や右下のマップ,左上の数値表示が小さくなってしまった

 NVIDIAのデモ担当者は「これは単純にゲーム側が4K表示を想定していなかったために起こる問題で,4K表示に対応すればDSR疑似4K表示時にも正しい表示になる」と述べていた。ただこれは逆に言うと,4K表示に対応していないゲームはDSR疑似4K表示をすることで遊びにくくなってしまうこともあり得るということだ。とくに昔のゲームほどそういうケースは生じやすくなると思われるので,この点はあらかじめ押さえておきたいポイントといえるだろう。


2x MSAA相当の負荷で4x MSAA相当の品質を実現するとされるMFAA


 続いてはMFAAだ。
 MFAAは,「マルチフレーム」「アンチエイリアシング」という名称からも分かるとおり,複数からなるフレームの情報を用いて行うアンチエイリアシング手法である。
 MFAAの開発コンセプトは,Multi Sampled Anti-Aliasing(マルチサンプルアンチエイリアシング,以下 MSAA)よりも一段低いサンプル数で,一段上の品質を実現することにあったそうで,コストパフォーマンスの高いアンチエイリアシング技法として訴求される。

 NVIDIAのアンチエイリアシング技法としては,Kepler世代の「GeForce GTX 680」の発表に合わせて導入された「Temporal approXimate Anti-Aliasing」(以下,TXAA)を覚えている人も多いだろう。TXAAについては当時の解説記事を参照してほしいが,深度バッファの参照や,前フレームと現在フレームとの間で生じるピクセル単位の移動ベクトル情報参照など,比較的,高度な実装が行われていた。
 これに対し,MFAAはシンプルな実装なのがウリとなっている。MSAAと基本アルゴリズムは同じなのだ。

 MSAAについての解説は筆者の連載バックナンバーを参照してほしいが,簡単に紹介しておくと,MSAAにおいて,ピクセルシェーダは描画解像度の1ピクセル単位で動作させる一方,深度バッファへの出力はサブピクセル解像度で行うことになる。たとえば4x MSAAなら,縦横2倍の4倍解像度で深度バッファへの出力の行うのだ。MSAAでは,実際のアンチエイリアシング処理を,この4倍解像度の深度バッファを基にして行う。

アンチエイリアシング無効時(左)と4x MSAA有効時(右)の違い。四角いマスが描画解像度1ピクセルのイメージで,赤い点がサンプル点(=サブピクセル解像度の深度バッファ)となっている。図中「No AA」と表記されるアンチエイリアシング無効時だと,1ピクセルの描画に1サンプルの結果を用いるが,4x MSAAでは1ピクセルの描画に4倍解像度分のサンプリング結果を利用する
画像集#017のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

 では,基本アルゴリズムがMSAAと同じMFAAはどうかというと,MFAAではアンチエイリアシング処理を行うためのサンプルポイントをMSAAよりも少なく取り,その代わり,サンプルポイントの位置をフレームごとにずらしていく工夫が導入されている。
 たとえば4x MFAAの場合,1フレームあたりのサンプル数は2点のみだ。つまり,2x MSAA相当である。しかし,次のフレームでは,その2点あるサンプルポイントの位置をずらすのである。

 では,「MFAAとは,ただフレームごとにサンプル位置を変えるだけのMSAAなのか」というと,ちょっと違う。
 当該フレームの実質処理はたしかに,サンプル位置を変えただけのMSAAだが,最終的に画面へ出力するのは,保存しておいた1つ前のフレームのMSAA結果と合成した映像にするのだ。この合成処理にNVIDIAは「Temporal Synthesis Filter」(テンポラルシンセシスフィルタ,時間軸上で合成するフィルタ)という名前を与えている。

4x MFAAの概念図。現在のフレーム(Frame n)における2x MSAAの結果に,前フレーム(Frame n-1)で行った2x MSAAの結果を合成する
画像集#018のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

4x MSAAと4x MFAAの違い
画像集#019のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 Petersen氏によれば,「TXAAのような,ピクセル単位の移動ベクトルを検出する処理系は入れていない」とのことなので,TXAAよりは明らかに高速ということになる。
 4x MSAAと4x MFAAを比較した場合,4x MFAAにおけるフレーム単位の処理は2x MSAA相当だ。そこに,MFAA特有の追加処理としてTemporal Synthesis Filterを行うわけだが,「この合成処理自体は,ほとんど無視できるレベルの処理負荷」(Petersen氏)。なので,NVIDIAの主張としては「4x MFAAは2x MSAAと同等の負荷で4x MSAAのアンチエイリアシング品質を実現する」というメッセージになる。

4x MSAAと4x MFAAで得られる絵は変わらないとNVIDIAは主張している
画像集#020のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

 静止画に適用した場合は,確かに主張のとおりとなるだろう。しかし動画の場合,前フレームと現在のフレームとでは映像内のオブジェクトが動いてしまっている可能性が高く,そうそう理想どおりの結果にはならないような気がする。
 その点を指摘すると,Petersen氏は「確かにそうだが,フレームレートが十分に高ければ,理想に近い結果が得られる」と答えていた。

 映像が動いている場合,当該フレームで(アンチエイリアシングの処理系が)着目しているピクセルと,その同じ座標位置にある前フレームのピクセルとが,同じポリゴンを構成する同一ピクセルである保証はない。ただし,フレームレートが十分に高ければ,たとえ「同じポリゴンを構成する同一ピクセルでない」場合でも,「少なくとも近場のピクセルであることは間違いない」わけだ。なのでポジティブに考えれば,「サンプル位置を近場のピクセルにまで手を伸ばした」と見なせる。すなわち,誤差拡散の効果が期待できるというわけである。
 アンチエイリアシングとは,乱暴に言えば「ポリゴン輪郭をボカしてごまかすこと」なので,その目的は少なくとも達成できているというのがMFAAのスタンスなのだ。

 さらに,MFAAは「Alpha to Coverage」(アルファトゥカバレッジ)にも効くとPetersen氏は述べていた。
 Alpha to Coverageは,かつてはOpenGLの機能として提供され,後にNVIDIAがGeForce 7000シリーズの発表と合わせて「Transparency Anti-Aliasing」(トランスペアレンシーアンチエイリアシング)としてリリースしたものである。最終的にはDirectX 10で標準仕様にも採用されたので,そちらで記憶している人もいるだろう。

Battlefield 4のワンシーンより。こういった線分表現は透明な領域に線分を描いたようなテクスチャを板ポリゴンに貼り付けて実現している。ここでAlpha to Coverageを有効化すれば,MFAAはこうした領域にも効く
画像集#021のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
 右のスクリーンショットは「Battlefield 4」から一部を抜き出したものだが,この線分表現は「板ポリゴンに対して,線分表現と透明領域を含んだテクスチャを貼り付ける」ことで実現されている。MSAAはポリゴン輪郭にしか効かないアンチエイリアシング手法なので,当然,この線分表現には効かないことになる。しかし,Alpha To Coverageを有効化すると,透明と不透明の混在したテクスチャが貼り付けられたポリゴンにおいて,その不透明箇所に対してMSAAがちゃんと効いてくれるようになる。
 MSAAが効く部分ではMFAAも有効になるので,Petersen氏の主張は,まあ,言われてみれば当たり前のことなのであった。

 NVIDIA調べにはなるが,4x MSAAに対する4x MFAAのパフォーマンス比較が下図になる。ゲームタイトルにもよるが,4x MFAAは,およそ30%ほど4x MSAAよりもフレームレートが上がる結果となるとのこと。まあ,実質的にはほぼ2x MSAAのパフォーマンスということになるのだろうが。

4x MSAAと4x MFAAの性能比較。おおむね30%程度,4x MFAAのほうが高速とされる
画像集#022のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か


DSRは“軽い”タイトルのために

MFAAは“重い”タイトルのために用意される


 NVIDIAのメッセージは,DARK SOULS IIのような“軽い”タイトルでは,DSRによってさらに描画品質を向上させ,BF4のような“重い”タイトルではMFAAによって描画品質を維持しつつ性能を向上させることができるというものだ。タイトルごとにDSRとMFAAを使い分けることで,どんなタイトルでも,描画品質とフレームレートの向上を目指せる,というわけである。

描画品質が高く,フレームレートの高い状態を実現するために,DSRとMFAAは用意される
画像集#023のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か
画像集#024のサムネイル/西川善司の3DGE:GeForce GTX 980に搭載された新機能「DSR」「MFAA」とは何か

NVIDIAのGeForce製品情報ページ

  • 関連タイトル:

    GeForce GTX 900

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月21日〜11月22日