西川善司のグラフィックスMANIAC

ためになる3Dグラフィックスの歴史(2)。緑のたぬきと赤いきつねのバトルで育まれたGPU技術たち

 「なぜ、NVIDIAとAMD、Intelといった異なる半導体メーカーが作るGPUで、同じようなゲームグラフィックスが出せるのか」というお題を元に、ゲームグラフィックスの進化の歴史を振り返るこのネタ。今回はパート2をお届けしたい。

 前回は、更地に好き勝手に半導体メーカーが独自の3Dグラフィックス技術を乱立させていた「動乱の時代」から、プログラマブルシェーダ技術が誕生して、3Dゲームグラフィックスが「天下統一の方向」に向かうまでの歴史にスポットを当てた。

 今回は「その後」を普通にお届けしようと思ったのだが、真面目な話が続くと飽きられてしまいそうなので、ちょっと「GPUの歴史」にまつわる「おもしろ話」に脱線しようかと思う。

「緑のたぬき」(NVIDIA)と「赤いきつね」(ATI/AMD)

 取り扱うのは、みんな大好き、「緑のたぬき(NVIDIA)と赤いきつね(ATI/AMD)」の話題だ。

 3Dグラフィックスハードウェアの開発を手がける二大メーカーと言えば、コーポレートカラーを緑としたNVIDIAと、赤としたATI(現AMD。以下同)が有名だ。日本には、ちょうど「緑のたぬき」と「赤いきつね」という認知度の高いインスタント麺があり、これが「彼らの闘い」を揶揄するのにちょうどよかったため、筆者は、記事で「彼らの闘い」を「緑のたぬき」と「赤いきつね」のバトルとして言い表すことが多かった。

 そんな彼らは、1990年代から好敵手の関係だったが、特に200X年代前半は、互いの足の引っ張り合いのような「罵り合い」が盛んでおもしろかった。まさに、「仲良くケンカしな」の「トム&ジェリー」状態で、「実は本当は仲がいいんじゃないか」と思えるほどに。

 当時のユーザー達は、その彼らのケンカに振りまわされることも多かったが、彼らの「相手を罵る悪口合戦」によって、GPUの仕組みの深淵への理解が進むことも多かった。そのためか、今となっては「古き良き思い出」という印象の方が強い。

「ピクセル演算精度の24bit浮動小数点論争」での化かし合い合戦

 プログラマブルシェーダアーキテクチャベースのGPUの開発は、当時先端を突き進んでいたNVIDIAとATIの2社にとっても決して優しいものではなく、「ユーザーから期待される性能」を発揮するために、さまざまな工夫を凝らしていた。

 2002年、DirectX9が発表され、第2世代プログラマブルシェーダ(Shader Model2.0)対応GPUが誕生。一番乗りだったのはATIで、この時RADEON 9000シリーズ(R3x0)を発表した。NVIDIAはやや遅れて同年後期にGeForce FX(NV3x)シリーズを発表した。

RADEON 9000
GeForce FX 5800

 当時の半導体技術では、GPUのすべての演算器に32bit浮動小数点(FP32)の演算精度を実装することは、性能的にもトランジスタ予算的にも難度が高かった。

 そのため、ATIはジオメトリ演算を司るプログラマブル頂点シェーダ(以下、プログラマブルは省略)にはFP32を採用するも、テクスチャ処理系やピクセル演算を司るプログラマブルピクセルシェーダ(以下、プログラマブルは省略)の演算精度は、ATI独自の24bit浮動小数点(FP24)で妥協した。

 FP24は、今も昔も浮動小数点演算精度を規定するIEEE754規格には存在しないものだったが、演算速度を稼ぐには有効だったため、ATIはこれを採用したのだ。

 対するNVIDIAのGeForce FXは、頂点シェーダも、ピクセルシェーダーもフルでFP32精度をサポート。ピクセルの演算精度をFP32精度で実践するのは、当時の映画(シネマ)向けのCG制作現場と合致することから、GeForce FXの描画パイプラインは「CineFX」と命名され、NVIDIAはこの「演算精度の一貫性」を強くアピールしていた。

 しかし、同じゲームを動作させたときに、パフォーマンス的にはRADEON 9000系に軍配が上がったのである。

 ここでNVIDIAは「RADEON 9000シリーズのパフォーマンスが高いのは、彼らのピクセル演算精度がFP24で粗いからだ! 彼らのやっていることはインチキだ!」と声を上げる。

 確かに、RADEON 9000シリーズは、シェーダープログラムが明示的にFP32を使うよう指定してあっても、内部的にFP24に丸められて演算が実践された。ここにNVIDIAが噛み付いたわけである。

実はDirectX 9の規格上、ピクセルシェーダーの演算精度の下限はFP24でよいと規定されていたので、ATIの実装自体はルール(規格)違反ではない

 NVIDIAは、「我々のGeForce FXシリーズはシェーダープログラムが求める精度でちゃんと演算を行なうGPUである」と宣言するのであった。

 この時、ゲーム開発者の間でもこの「ピクセルの演算精度問題」についてはホットな議論が巻き起こった。

 「そもそも、ピクセルの演算精度で浮動小数点が活用されるのはハイダイナミックレンジ(HDR)レンダリングに限られる。HDRレンダリングではFP16程度で十分だとしてILM(Industrial Light & Magic)が1999年にOpenEXRを規格化したじゃないか」。

 「テクスチャに3次元ベクトルなどのFP32情報を入れて、これをピクセルパイプラインで処理した後、その結果をジオメトリに転用する場合、演算精度に一貫性がないのは問題だ」。

 「GPGPUがやってくる未来がすぐそこに来ているのに(当時)、FP24ってなんだよ」。

 「最終的に描画されるピクセルカラーって8bit~10ピット程度の、しかもガンマ補正された整数精度ですよ(当時)。FP24で精度足りないなんてことあります?」……などなど、激論が交わされたのだ。

NVIDIAは「FP32形式のバッファに頂点情報に相当する内容をレンダリングし、これを頂点シェーダに戻す処理系である「頂点バッファレンダリング」(Render-to-Vertex Buffer)では、ピクセル演算精度がFP24では演算精度問題が起こりうる」と主張し、FP24形式を批判した。頂点バッファレンダリングは、GPUで物理シミュレーションをやるときにも有用とされる。画面は、NVIDIAが公開した頂点バッファレンダリング技術を使って布の挙動のシミュレーションを行なったデモのもの
「バーチャファイター5」では、水面を構成するポリゴン座標をFP32テクスチャに入れ込み、その凹凸変移の波動シミュレーションをピクセルシェーダー上でFP32演算精度で実践させていた。シミュレーションの結果はFP32テクスチャに入っているので、次のフレームの水面ポリゴンの座標位置を、頂点シェーダーからこのテクスチャから読み出して決定していた。この技術はVTF(Vertex Texture Fetching)と呼ばれた。こうしたジオメトリパイプラインと連携させたパイプラインの実現はFP24では精度不足となることがあるかもしれない

 ゲームファン視点の場合は、“アラ”が目立たない程度のピクセル品質で、フレームレートが高ければ「そのGPUは偉い」となるし、多くのPCベンチマーカーにとっては3DMarkなどのスコアが高ければ「そのGPUはすごい」となっていたため、「FP24、FP32、そんなの関係ねえ!」と言わんばかりに、GeForce FXは評判を落としていくことに。

 そしてその後、NVIDIAはGeForce FX起死回生のために「禁断の最適化」に手を染める。

 それは、ピクセル演算精度を、特定のゲーム等が実行されたときに意図的にFP16精度に代替させるなどしてパフォーマンスを稼ぐ方策だ。

 NVIDIAのやることにアンテナを張っていたATIは、定番ベンチマークソフトや、人気のゲームをGeForce FXで動作させたときに、ドライバの最適化(?)を駆使してこの最適化(?)を行なっていることに気が付き憤慨(笑)。

 「一貫してFP32にこだわり、FP24を馬鹿にしていたNVIDIAさん。そうですか、あなた達はFP16に逃げるんですね」とどこぞの論破王からのような指摘を受けてしまう。

 この時のNVIDIAはもはや開き直っており、「だってみんなFP24で満足だって言うし、ILMのOpenEXRだってピクセル演算精度はFP16で十分だって言うし。別にいいじゃん」と反論(一部、筆者の脚色が含まれています(笑))。

 その後、3DMark03の開発元のFuturemark(現UL)は、NVIDIAの「この最適化」行為を「インチキ」(Cheat)と断罪して批判。排除にかかる(GameSpotの記事参照)。

 しかし、これに対し、論破王のNVIDIAから「インチキって、それあなたの感想ですよね。同じ演算精度を落とす行為なのに、我々が採ったドライバ的アプローチでダメで、ATIのハードウェア的アプローチが容認されるのはおかしくないですか」という、鋭い反論がなされる。

 この時、「あれれ、おっかしいなぁ。DirectX 9のピクセル演算精度の下限ってFP24だったから、さすがにFP16はやりすぎだと思うんだけど……って小五郎のおじちゃんが言ってたよ」という少年名探偵は登場しなかったためなのか、「あ! それはごもっともですね」とFuturemarkは音速に近いスピードで「ドライバの最適化排除を撤回」してしまうのだった。

 結局、この騒動で盛り上がった「ピクセル演算精度FP24問題」は、後の世代に登場する「統合型シェーダ」(Unified Shader)アーキテクチャベースの設計への移行で自然解決(消滅)してしまう。

 そう、頂点シェーダもピクセルシェーダもフルFP32化が当たり前となったのだ。

ATIは、RADEON 9000シリーズの後、X300~X800の3年間に渡ってピクセル演算精度をFP24のままとしていた。2005年に登場したRADEON X1000シリーズで初めてピクセル演算精度がFP32となった。写真はRADEON X1800 XT

NVIDIA対ATI(現AMD)の場外乱闘 ~調子に乗るATI

 NVIDIAの歴史上、GeForce FXは失敗作だったと見る向きは強いが、今の技術視点で見ると、GeForce FXの設計は美しかった(と言えるかもしれない)。

 GeForce FXはその後の2006年頃にやってくる、統合型シェーダアーキテクチャの到来を先取りしたような設計となっていたのだった。GeForce FXシリーズは、描画パイプラインと演算器を分離したようなアーキテクチャになっており、シェーダープログラムが多数動くという状況下では高いパフォーマンスが発揮できたのだ。

GeForce FX 5800のダイアグラム

 一方、Radeon 9000は、それまでの主流のGPU設計方針である「パイプラインの回転率を最優先した設計」となっており、悪く言えばプログラマブルシェーダの実行効率はあまりよくなかった。

 しかし、グラフィックス処理の大半が「軽めのシェーダープログラム」が動く程度に留まり、「テクスチャの適用」が主体だった当時の主流のゲームグラフィックスとは相性がよかったのだ。

Radeon 9700/9800のダイアグラム

 ATI側の当時の最上位機Radeon 9700/9800のピクセルパイプラインは8本あり、これらのすべてを“例”のFP24演算精度で完全並列で動かすことができた。

 対してNVIDIAの当時の最上位機のGeForce FX 5800/5900の方は、整数パイプライン4本、FP32(かつ整数兼任)パイプライン4本という構成。浮動小数点のHDRレンダリングを実践させると、GeForce FX 5800/5900では4パイプラインでしか動かせなかった。

GeForce FX 5900 Ultra

 FP24問題がそれほどゲームファンからは反感を買わず、むしろパフォーマンスのよかったRadeon 9000系は高い評価を受けたのであった。

 これに気を良くしたATIは、洒落の効いたメッセージ入りのTシャツをゲーム関連イベントで配布して、NVIDIAに対するマウントをとった(笑)。

ATIが関係者に配布した「GeForce FXディスりTシャツ」

 そのTシャツには「8 Pipes are for Real、4 are a Pipe Dream」と書かれており、しかも「4 are a Pipe Dream」の部分はNVIDIAのコーポレートカラーの緑という凝りよう。このメッセージ、「英語圏の人」にとっては、相当に屈辱的な駄洒落だった。

 このメッセージ前半の「8 Pipes are for Real」は「ATIのGPUには8本の本物のパイプラインがあります」という、Radeon 9700/9800を賞賛するフレーズになる。

 そして後半の「4 are a Pipe Dream」は「GeForce FX 5800/5900のパイプラインは4本しかありません」という主張が載っているのみならず、「それなのにNVIDIAは“8本ある”という白昼夢(Pipe Dream)を見ているんです」という辛辣なジョークになっていたのである。

 しかも! この「Pipe Dream」という慣用句は「アヘン(パイプ≒麻薬)の吸い過ぎ時に見る幻覚」が語源なので、当時のATIのマウントぶりは相当に激しいものだったと思う。

 そして「わざとなのか、故意なのか」は不明だが、Radeon 9700/9800シリーズの発表後に公開した、リアルタイム技術デモのタイトルまでもが「Pipe Dream」なのであった。

「Pipe Dream」というこの作品自体は、Radeon 9000系発表以前の2001年に発表されたオフラインCG映像作品「Animusic」に含まれる1チャプターである。当時結構有名な作品だったので、おそらく「Pipe Dream」というタイトルがATIの目にとまり、Radeon 9000リーズでのプロモーション向けにリアルタイム版の製作が行なわれたと思われる。

 なお、興味深いことに、後にGeForce FX(NV3x)の後継として2004年に登場するGeForce 6000系(NV4x)は、Radeon 9000シリーズに似た、パイプラインの回転率を最優先した設計に立ち戻っている。

GeForce 6800のダイアグラム。Radeon 9700/9800のものとよく似ている

 このNVIDIAの設計方針は、さらに後継となる2005年発表のGeForce 7000系(G7x)にも引き継がれ、この最上位機のGeForce 7800 GTX(のカスタム版)は、2006年にソニーが発売したゲーム機、PS3のGPUとして採用されることになるのであった。

GeForce 7800 GTX

 ところで、こうした一連のATIのGeForce FXに対するマウンティングに対して、NVIDIAはいつの間にか開き直ってしまい、あろうことか、自分達で自分達の製品をディする行動に出てしまうのであった。

 それが、下の動画である。

「デシベル・ジレンマ」と題されたNVIDIA自主制作のジョークビデオ。登場する人物は、すべて当時のGeForce開発に従事していた実在の人物、本人たちである

 NVIDIAのGPUの消費電力の高さは今に始まったことではなく、初代のGeForce 256からそれなりにすごいものだったのだが、GeForce FXについても同様だった。

 しかも、GeForce FXは今でこそ当たり前となった肉厚ヒートシンクに巨大電動ファンのGPU冷却システムの採用を始めた頃合いだったこともあって、その排気風量、廃熱量、騒音に対してはユーザー達から「ヘアドライヤーかよ」「掃除機かよ」といった突っ込みを受けていた。それを自ら茶化したわけだ。

 ちなみに、この動画で使われている「GeForce FXをヘアドライヤーに見立てたシーン」は、その後NVIDIA自身の手でTシャツ化され、関係者に少量配布されている。筆者も一着いただき、しばらく着ていたことがある。

 件の動画の中で「GPUの排気騒音はフェラーリやポルシェのサウンドと同じで楽しめるよな」……など、自分達で笑い合っている様は、今見ると相当にシュールだが、よくよく考えると、このGeForce FXの登場以降、NVIDIAはどんどんとビデオカードを、高性能化に伴って物理サイズを巨大化し、消費電力化も増大させていく。ここでの「開き直り」リアクションは、ある種「俺たちはこのまま行くかもよ」と予告の意味合いもあったのかもしれない。

 ところで、このNVIDIAの自主制作映画風のパロディ動画にさらに反応したわけではないとは思うが(NVIDIAをディスっても怒られない……と思ったのかも?)、その後ATIはこの手の“茶化し系”のメディア制作に本格的に入れ込んでいく。

 ATIは「GeForce FXへの完全勝利宣言」として、「緑色」のモンスターが「緑色の血」で描かれた「(犯人は)RADEON」というダイイングメッセージとともにぶっ倒れているRadeon 9700のプロモーションポスターを作成する。

ATIが作成したRadeon 9700のポスター。よく見ると「Radeon」のダイイングメッセージが仕込まれている

 その後のRadeon 9800登場時にはさらにエスカレート。7体もの「緑色」のモンスター達が、全員首つり自殺している様子を描いた衝撃のポスターを作成した。もちろん、その床には「緑色の血」で描かれた「(犯人は)RADEON」というダイイングメッセージが(笑)。

ATIが作成したRadeon 9800のポスター。今度は殺されたのではなくて自殺。GeForce FXはもう自殺してください……という揶揄

 このATIの「悪のり」は結構長く続き、2011年にはショート映画「AMD Fixer」シリーズを開始する。

 それはこんな内容だ。

 ある日、緑ロゴの某社製GPU搭載のビデオカードを買ってきたゲームファンが自分のPCに搭載するも「ゲームがうまく動かない」と憤慨する。

 そこに前触れもなくAMD製GPUに変更してくれるお節介な秘密エージェント「AMD Fixer」が「そんなGPU、糞の役にも立たんぞ」と登場。

 「だって、彼ら(NVIDIA)のGPUは最も先進的なアーキテクチャを採用しているというから買ったんだよ」と反論するゲーマー。これに対してAMD Fixerは「古いゲームにはいいかもな」と失笑。

 その後、「貴様、知らないのか。AMDはPCと家庭用ゲーム機の両方に採用されているんだぜ?」と言ってから、そのゲーマーのPCのGPUを勝手にRadeonに差し変えてGeForceをハンマーで叩き割る。

 一連の過激な行動にたまりかねたゲーマーは「落ち着けぇぇ!(Settle Down)」と叫ぶも、AMD Fixerは「I Never Settle!(オレは止まらない)」と返す。

 実はAMDは「当社のGPUをお買い上げの方にはお好きなゲームをプレゼント」という「Never Settle」キャンペーンをやっており、この動画はそのCM映像だったのだ。もちろん「NVIDIAへの茶化し」も添えて。

NVIDIAのGPUを壊してAMDのGPUに変えて回るAMD Fixerの初登場動画。2011年公開

 その後、この「Never Settle」キャンペーンは好評につき、次世代GPU以降のリリースにおいても「Never Settle Reloaded」「Never Settle Forever」という名前で継続される。

AMD Fixerのパート2。これはRadeon R9シリーズのリリース後に展開された「Never Settle Forever」キャンペーンのCM動画として制作、公開された。2014年公開

 実は、この「既存のPCを勝手にぶっ壊して、勝手に自社の最新GPUに変更するPC改造屋」のプロットを用いた動画公開は、AMDよりも前にNVIDIAが先に始めたものだった。

 NVIDIAは、2005年のGeForce 7000シリーズ発表時に、そのリアルタイム技術デモとして、AMD Fixerとよく似たコンセプトの「Mad Mode Mike」というリアルタイムCG動画をリリースしているのだ。

2005年公開のGeForce 7000シリーズ向け技術デモ「Mad Mod Mike」

 動画中、ATI製とおぼしきPCパーツは出てこないのだが、ATIは、この動画の主人公のMikeにぶっ壊されたPCパーツ類がATI製のGPUだと思い込んでしまったのだろう。まあ、そうでなくても「この着想はおもろい」と思っただけかもしれないが。

 成り行きはどうあれ、ATIもやり返すならば、実写映像で制作せず、リアルタイムCGデモでやり返せばよかったのに……と当時、筆者は思ったものだった。

 なお、AMD Fixerシリーズは「3」で終了する。「3」では、NVIDIA Fixer(とおぼしき)、緑色のネクタイを付けた男が、すっかりRadeonユーザーになってしまったパート1に登場したゲーマーの家に乱入。彼のRadeonを引っぺがして勝手にGeForceへと交換する。

 取り出したRadeonを破壊しようとするNVIDIA Fixerだが、なぜか不器用すぎてうまく壊せない。どこからともなく現れた“本家”のAMD Fixerが、NVIDIA Fixerに対し「こんな不具合(不器用なこと)はお前(NVIDIA?)にとって初めてじゃないだろ。いつものパフォーマンスの問題(Performance Issues)っヤツだよな」とヤジ。ぶち切れたNVIDIA Fixerは、どうしても壊せないRadeonを自らの自宅に持ち帰えるが、そこではさらなる恐怖の体験が待っていた……。

AMD Fixer完結編。本作は、特に何かのキャンペーンCMではなく、Radeon R9シリーズのCMとして制作された

 2015年以降、NVIDIAは超高価格な超ハイエンド級のGPUを、GPGPU向けに開発するようになる。そして、その製造が安泰化した時分に、その超高性能GPUダイを採用したTITANブランドのGeForceを出すようになる。

 これらTITANブランドの製品は、それまでのGPUの価格常識から随分と逸脱した超ハイエンドGPU製品となってしまったものの、実在する民生向けGPUとしては確かにその時点での最高性能をマークしていた。

 このTITANブランドが台頭した2015年あたりから、AMD(ATI)は「GPUの最高性能合戦」には付き合わなくなり、それと連動してなのか、あまりNVIDIAにマウントをとるような「おふざけ」をしなくなった。

 ここまで読んで「調子に乗ったATI(AMD)をまた見てみたい」と思った読者は少なくないはずだ。ただ、2017年以降に大成功を収めたAMDのCPUのRyzenシリーズにおいて、Intelに対してそれほど調子に乗らなかったので、AMDはそういう「おふざけ」から卒業して、大人になったのかもしれない。

 次回は、もうちょっとだけ「その後のGPU技術の成長に貢献したNVIDIA対ATI(AMD)の闘い」の話題について触れよう。