今や3Dグラフィックスは、ゲーム機やPCはもちろんのこと、スマートフォン、自動車の情報ディスプレイ、飛行機の機内エンターテインメントシステムにも採用されるほど、身近なものとなっている。この「3Dグラフィックスの大衆化」という事象には「コンピュータゲーム」(本稿では単にゲームと記すことにする)の存在があった。本連載ではこの分野の初学者向けに「3Dゲームグラフィックスの歴史」を中心に、同技術を支えてきたグラフィックスプロセッサ(GPU: Graphics Processor Unit)という半導体チップの進化の歴史にも触れていく。本稿で語られていく歴史をリアルタイムで体験した世代には懐かしさを、生まれたときから3Dグラフィックスが身近にあった世代には、今昔物語集的なおもしろ説話として読んでいただければと思う。

『バーチャファイター』
© SEGA

先端3Dゲームグラフィックスは「ゲーセン」から始まった

スーパーコンピュータや業務用のグラフィックスワークステーションを除けば、現在、最も先進的なリアルタイム3Dグラフィックス環境が利用できる民生向けハードウェアはハイエンドスペックなPCということになる。

しかし、1980年代後半から1990年代前半にかけては、むしろPCは、今からは想像できないくらいグラフィックスシステムが遅れていた。この時代、我々に最も身近で、最も先進的なリアルタイム3Dグラフィックスを実現していたのはアーケードゲームであった。そう、いわゆる、ゲームセンター(ゲーセン)向けのゲームである。

現在はアーケードゲームの筐体の多くは組み込み向けWindowsを搭載したPCがベースとなっているが、この時代は、各アーケードゲームメーカーが独自に3Dグラフィックシステムのハードウェアを設計して、そのうえで独自の3Dゲームグラフィックスを動かしていた。

当時、最も技術力的に先端を行っていたのはナムコ(現バンダイナムコエンターテインメント)とセガで、ナムコは『ウイニングラン』(1989年)、『スターブレード』(1991年)、セガは『バーチャレーシング』(1992年)、『バーチャファイター』(1993年)などを出していた。この時代の3Dグラフィックシステムは、主にCPUとこれをサポートするコプロセッサがグラフィックスレンダリングを担当しており、ライティング(照明演算)はポリゴン単位にしか行われず、ポリゴンに画像を貼り付けるテクスチャマッピングの機能も持っていなかった。

『バーチャファイター』は、ポリゴン単位のライティングが基本の「フラットシェーディング」のみであり、テクスチャマッピングという概念もなかった。そのため、顔や服は「その形のポリゴン」を描画して表現していた
© SEGA

テクスチャマッピングが3Dゲームグラフィックスに採用されて、それが広く一般ユーザーの目に触れることになったのはナムコの『リッジレーサー』(1993年)がアーケードに登場したときだ。それまでゲーム向けの3Dグラフィックスと言えば、カクカクとした積み木チックな3Dオブジェクトがシーンに展開しているだけの表現が主流で、プレイヤー側は「これは車」「これは人」という風に、ある程度の想像力を働かせてゲーム内画面を認識して楽しんでいた。対して『リッジレーサー』の画面では、「それ」とわかる3Dオブジェクトがそのまま縦横無尽に動き回っていたため、多くのゲームファンはカルチャーショックを受けたものだった。

アーケード版の『リッジレーサー』はテクスチャマッピングの威力を世に見せしめた作品。当時、この作品ではグローシェーディングが使われていると話題になったが、実際にはテクスチャにそれっぽいグラデーション陰影を焼き付けていただけだったらしい
Ⓒ BANDAI NAMCO Entertainment Inc.

プレイステーションとセガサターンが呼び込んだ
3Dゲームグラフィックス・デモクラシー

1990年代中期には3Dゲームグラフィックスがさらに身近な存在となる大事件が起きる。それは、ソニー・プレイステーションとセガサターンの発売だ。

1994年に発売されたこの2つのゲーム機は、映像解像度はそれほど高くはなかったものの、当時のアーケードゲームシステムにとっても最先端技術であったテクスチャマッピングに対応していただけでなく、隣接するポリゴン同士の陰影をグラデーションで塗る「グローシェーディング」法にも対応していた。

この1年後の1995年にWindows 95が発売され、これに同期する形で、PCにも3Dグラフィックスを実現するためのサブシステムとして「DirectX」(正確にはDirectXに含まれるDirect3D)も提供されるのだが、当時のWindows PC向けのグラフィックスハードウェア(当時はまだGPUという呼び名はなかった)はかなり機能が低く、さらにDirectXの完成度も今一歩だったために、プレイステーションやセガサターンの表現力に近づくのは、DirectX5がリリースされる1997年まで待たなければならなかった。

ただ、この時代のPC向けのグラフィックスハードウェアメーカーの情熱は凄まじいものがあり、今でこそNVIDIAとAMD(当時はATI)の2強状態だが、当時は数十社のメーカーがPC向けの独自のグラフィックスハードウェア製品をリリースしていた。なかでも一時代を築いたのが3dfx社で、Voodooシリーズと呼ばれるグラフィックスハードウェア製品は当時のPCゲームファンの間で絶大な人気を博した。

今、考えれば驚くべきことだが、Voodooシリーズを使って美しい3Dゲームグラフィックスを描画させるには、DirectXではなく、3dfx社独自のAPI「Glide」を用いる必要があった。当時のPCゲーム業界の間では、DirectXは「二流扱い」で、ゲームスタジオ側も最上位グラフィックスはGlideベースで開発してゲームを提供することが多かったのだ。今でも人気シリーズとして知られる「トゥームレイダー」の第一作などはまさしくその典型例で、PCでは当初、Voodooでないと美しいゲームグラフィックスが楽しめないタイトルであった。

初代「トゥームレイダー」。最上位グラフィックスはDirectXではなくGlide向けに提供された
筆者宅のガラクタ箱にまだ残っていた3dfx社製の初代Voodooを搭載した3Dグラフィックスハードウェア。グラフィックスメモリーは4MB(EDO-DRAM)。2枚のVoodooボードをPCに搭載して倍速レンダリングを実践する「SLI」モードは3dfx社の発明だった。3dfx社は2000年に経営破綻してNVIDIAに買収されている

本当の意味での「GPU」が台頭し始めたDirectX7時代

それまでは、いうなれば「負け組」扱いだったDirectX(Direct3D)に転機が訪れたのは、1999年に発表されたDirectX7の時代だ。

DirectX6世代以前のグラフィックスハードウェアは、ポリゴンとピクセルの対応付けを計算する「ラスタライズ」処理や、画像テクスチャをポリゴン面に沿う形で適用しながらピクセルを描画する「ピクセル描画」処理だけを担当していた。ポリゴン単位の座標変換処理やポリゴン単位のライティング処理に代表されるいわゆる「ジオメトリ処理」は、CPUが担当していたのだ。これも今からはちょっと想像しにくい事態かもしれない。

新登場したDirectX7では、3Dグラフィックス描画の全工程をグラフィックスハードウェアが受け持つことができるようにアーキテクチャが拡張され、CPUはジオメトリ処理を受け持つ必要がなくなったのだ。

今ではグラフィックスハードウェアをGPUと呼ぶことが定着しているが、この呼び名が提唱され、定着し始めたのもこの頃からだ。

なお、DirectX7対応GPUとしてはNVIDIAが初代GeForceである「GeForce 256」を、ATI(現在はAMDに統合)が初代「RADEON」をリリースしており、現在のGPUブランドの2強が頭角を現してきたのもこのタイミングからになる。それまでソニーの初代PlayStation®やセガサターンといった家庭用ゲーム機とどっこいどっこいだったPCゲームグラフィックスの表現も、DirectX7時代以降からはそれらを上回るようなタイトルが出始めるようになる。

「NVIDIA GeForce 256」を搭載するグラフィックスカード。グラフィックスハードウェアをGPUと呼ぶようになったのは、このGeForce 256から
画面はDirectX7時代の代表作『GIANTS:CITIZEN KABUTO』(PLANET MOON STUDIOS、2000年)より。巨大モンスターの皮膚の微細凹凸表現は法線マッピングによるもの。後述する「プログラマブルシェーダー」世代の表現を先取りして実装していた

現代3Dゲームグラフィックスの基盤技術「プログラマブルシェーダー」時代の幕開け

家庭用ゲーム機は1998年にセガのドリームキャストが、2000年にソニーのPlayStation® 2(PS2)が発売になっているが、3Dグラフィックス技術的には、同時代のPC向け最新GPUと同程度に留まっていた。

PS2(左)、ドリームキャスト(右)

一方、5〜7年サイクルで進化する家庭用ゲーム機の3Dグラフィックス技術に対し、PC向けGPUは、それこそ毎年進化していたため、この頃からPC向けGPUは怒濤の進化を遂げていく。

しかし、この進化の過程で「問題」も生じ始めていた。それは互換性の問題だ。あるメーカーが「魅惑のグラフィックス表現機能」を自社GPUに搭載したとしても、それは別メーカーのGPUでは再現ができないことが当たり前だった。「せっかく時間を掛けてつくり込んだリアルな表現も、特定メーカーのGPUでしか再現されない」ということになれば、ゲーム開発側は、どのGPUでも再現できる「必要最低限のグラフィックス表現」を用いてしか、ゲームグラフィックスを制作しなくなってしまう。つまり、各GPUメーカーが新機能を追加していったとしても、それらが使われる確証がないのだ。こうした事象が積み重なっていけば、GPUには、ほとんど使われない機能が増殖していってしまうことになる。

これを危惧した業界は、新しいグラフィックス技術を直接ハードウェアで実行するのではなく、「GPUで実行できるソフトウェア」の形で実装していける新技術「プログラマブルシェーダー」アーキテクチャを提唱する。

現在のPCやスマートフォンが、さまざまな用途で使え、さまざまな機能が実現できているのは、そのPCやスマートフォン上でアプリ(アプリケーション・ソフトウェア)が実行できるからだ。昔は、文書を作成するためだけの専用コンピュータとして「ワードプロセッサ」(ワープロ)がもてはやされたが、今では完全に姿を消した。それは、どのPCでも、ワープロソフトを動かすことができるようになったためだ。

そんなイメージで、「微細な凹凸表現を行いたい」「人間の肌の質感を再現したい」「液体に濡れている質感を表現したい」といった、多様なグラフィックス表現を"プログラムできる"ようにし、さらにそれを"実行できる"ようにする仕組みが「プログラマブルシェーダー」アーキテクチャだ。

そう、プログラマブル(Programmable)とは「プログラムできる」の意である。シェーダー(Shader)は、直訳的には「陰影を司るもの」という意味になるが、ここでは「グラフィックス表現」の意味……くらいの理解でよい。

ちなみに、このプログラマブルシェーダーの概念は、現在では、PC、ゲーム機はもちろん、スマートフォンにまで採用されている。今、目にしている、ほとんどの現行3Dゲームグラフィックス表現は、GPUが実行している「シェーダープログラム」によって実現されているのである。次回は、このプログラマブルシェーダー技術が激烈な進化を迎える時代を取り上げていくことにしたい。

2001年に発売された初代「Xbox」は世界初のプログラマブルシェーダー技術採用の家庭用ゲーム機。NVIDIA GeForce3をベースとしたGPUを搭載し、APIにDirectXを採用したマイクロソフト初のゲーム専用機。同世代のドリームキャスト、PS2はプログラマブルシェーダー技術には未対応だった