Skip to content

WebGLとはなんなのか、ゲーム好きの大学生に説明してみる

さて、wise9編集部の近辺では連日WebGLの話題で持ち切りだ。
WebGLはなにが面白いのか、先日こんな会話があった。

「清水さん、すみません。いまさら聞くのは恥ずかしいんですけど、WebGLって何ですか?」

「WebGLね。凄く簡単に言うと、インターネットブラウザをプレイステーションにしてしまう魔法の技術・・・かな」

「えーっ!それって凄いじゃないですか」

「凄いよ。だからみんな注目してるんだよね」

「でも具体的にどうプレイステーションになるんですか?」

WebGLは、2011年の3月に1.0が勧告されたばかりの今一番ホットな仕組みだ。
WebGLのもとになっているOpenGLは、1991年にシリコングラフィックス社が開発したグラフィックスエンジンであるIRIS GL(GLはグラフィックス・ライブラリの略)をもとに、移植性の高いライブラリとして開発したものだ。

つまり、今年でちょうど20年の歴史を持つ、グラフィックスエンジンのスタンダードと言える。

余談だが、シリコングラフィックス社の創設者、ジム・クラークはその後、ネットスケープ社を設立した。ネットスケープのブラウザは現在のFirefoxのもとになっている。

「へえ。意外と古くさい技術なんですね」

「とんでもない。シリコングラフィックス社が開発したジオメトリパイプラインはつい最近まで最新だったし、最新のPlayStation3やPS VITAもOpenGL ES 2.0を採用してるんだよ。歴史が古いことが即座に最先端でないとは限らないよ」

PS VITA

「そうだったんですか!じゃあXbox360は何を使っているんですか?」

「XboxはDirectXというテクノロジーを一貫して使っている。けど、本質的にはOpenGLとそうは変わらないものだよ。むしろOpenGLをお手本にして作ったのがDirectXだからね」

しかもここ数年のDirectXは、OpenGLとほぼ同様のシェーダー記述言語を使えるようになっている。ここまで来ると、DirectXはOpenGLのかなり訛りのつよい方言と言っても良い。

DirectXの方がMicrosoftの独裁政策によって仕様が決められているので進化が速いが、基本的な部分はOpenGLと似たようなイメージで使えるようになっている。

「それでその・・・OpenGLっていうのは、なにをするためのものなんですか?」

「ああそうか。OpenGLは、グラフィックスを高速に描画するための専用ハードウェアを使うためのAPIなんだ」

「グラフィックス描画って専用のハードウェアが必要なんですか?」

「そうだよ。コンピュータの基本的な仕組みについて説明したほうがいいかな?」

「そうですね、できれば」

「この図をみてくれ。これが一般的なコンピュータの概念図だ」

「へえ。コンピュータの中ってこうつながってるんですか」

「そうだよ。なにか気がついたことはあるかな?」

「うーん・・・僕はイメージとして、CPU(中央演算処理装置;Central Processing Unit)が中心にあるのかと思ってました。I/Oの方がいろんなものがつながってるんですね」

「その通り。いいところに気がついたね。I/O、つまりインプット/アウトプットはCPUに対して適切な入出力をするためになくてはならないものだ。処理の中心はあくまでもCPUだが、実際にはI/Oを経由してほとんどの部品がつながっている。ということは、CPUがいくら速くても、I/Oを速くしないと処理が追いつかないことになるのがわかるだろ?」

「たしかに。バランスが大事なんですね」

「グラフィックスの処理は特殊だから逆に高機能なCorei7のような汎用CPUを使うよりも、機能が少ないグラフィックス専用CPUコアを作って大量に搭載した方が高速だということが解ったんだ。それがGPU(Graphics Processing Unit)と呼ばれる部品だ」

「ああ!GPUって聞いたことあります」

nVidiaのGPU

「3Dグラフィックスを描画するには膨大なかけ算と足し算が必要で、気の遠くなるような演算をひたすらしなければいけない。一昔前ならスーパーコンピュータでもお手上げだったような膨大な計算を瞬時にするわけだ。それで3D描画専用のハードウェアが必要になった」

「じゃあプレステとかVITAとかは全部3D対応ハードウェアを搭載してるんですか?」

「その通り。いまやゲームを実現するには不可欠といってもいいのが3Dハードなんだよね」

「へぇ。でもそれとWebブラウザと何の関係が?」

「うん。まず3D対応ハードウェアを搭載したコンピュータの構成を説明しよう」

「I/Oの先に3D対応ハードウェアがあるんですね。VRAMって何ですか?」

「VRAMはビデオRAM。画面表示専用のRAMだよ。VRAMの先にディスプレイが接続されていて、実際の画面を表示するんだ」

「GPUとCPUの距離って意外と離れてるんですね」

「ああ。PCの場合はね。ゲーム専用機の場合、CPUとGPUの間は特別なバスで直結されている場合もある。PS3の場合はそうだね。また、Xboxの場合、ユニファイドメモリアーキテクチャ(UMA)という特殊なアーキテクチャになっているからこの限りではないんだけど、全部説明すると本が一冊書けちゃう分量になっちゃうからここでは省略。とにかく重要なのは、CPUとGPUはぜんぜん違う、ということだよ」

「これって、つまりひとつの箱のなかに二つのコンピュータがまるごとあるって感じですか?」

「その通り!するどいね。PCでいえば、VGAカード一枚がまさに一台のコンピュータなんだよ」

VGAカード

「CPU-RAMの関係が、GPU-VRAMの関係になってるんですね。I/Oはディスプレイへの出力だけ」

「そう。つまり3D対応ハードウェアというのは、要はミニ版のコンピュータなんだ」

「なるほど。でもこれだと普通のウィンドウとか、2Dの描画ってどうなるんですか?」

「大は小を兼ねる、じゃないけど、今のコンピュータはほぼすべて、3D対応ハードウェアが2Dの描画にも対応していて、普通に使う分には2Dのグラフィックスと同じように使えるんだ」

「従来のブラウザ、とりわけHTMLでは、本体の方のCPUとメモリしか使えなかった。GPUへのアクセスは2D的なものしかないんだ」

「だからWebページってみんなプレステの画面と違って平面的なんですね」

「そうだよ。そもそもCPUとGPUじゃ使用するAPIも違うんだ」

「そのAPIが、OpenGLというわけですか」

「飲み込みがいいじゃないか。ちょっと説明はまわりくどくなってしまったけどね」

「ただ、OpenGLはもともとネイティブアプリでしか使えないのが普通なんだ。だからPCゲームやiPhoneのゲームでは3Dハードウェアを使えたけど、Webブラウザからは使えなかった。ところが・・・」

「HTML5とWebGLならそれを使うことができる・・・と」

「その通り。いま、すべてのアプリケーションはHTML5で記述できるように日々いろいろな環境が揃えられているんだ。もちろんこの方針を最も強く推進しているのはGoogleやAppleといった会社だね。だからその二社が共通して使用しているWebkitもWebGLに対応している」

「どうしてMicrosoftはWebGLに消極的なんでしょう?」

「それはDirectXが原因かもしれないね」

「え、でもDirectXはOpenGLをお手本に作られたんじゃないですか?」

「うん。だけど政治的な駆け引きとして、MicrosoftとしてはDirectXの開発者にOpenGLを覚えて欲しくはないのかもしれないね。大昔に、DirectXとOpenGLを統合しようとして失敗してるしね。DirectXを推進するMicrosoftにとって、Web上だけとはいえどもOpenGLを再び搭載するのは社内に歓迎しない人たちがいるのかもしれないよ」

「ふーん、なんだか大人の事情っぽいけど、くだらないですね」

「くだらないと思うよ。とはいえ、HTML5でさえMicrosoftは抵抗勢力だったし、今も表向きはHTML5に対して有効的な態度をとりつつも頑なに保守的な態度を崩さない。このままいくと、IEにはWebXとでもいうべき、DirectXのWebブラウザ版が搭載されることになってもおかしくないね」

「ええっ!?そんな噂があるんですか?」

「いや、ないけど(笑)。ただ、MicrosoftはWindows8でHTML5アプリケーションを第一級アプリとして扱うと明言している以上、いつまでもWebGLに遅れをとってばかりもいられないだろうからね。WebGLに対応するか、そうでなければ代替手段を用意する可能性はあるよね。ま、これは本当に想像の話だけど」

「そうなると、Xbox360 vs プレステ、の対決の構図がそのままWebブラウザにやってくるわけですか」

「まあそこまで極端なことにはならないだろうけど、技術戦争としてみたらそうなる可能性もあるね」

「でもOpenGLやDirectXを通してGPUブラウザから使えるようになると、普通のWebアプリケーションのUIも大きく進化しそうですね。ちょっと想像つかないですけど。誰も見たことが無いものになるような・・・」

「いや、実はGPUを使った普通のアプリケーションのUIは既に普及してるんだ」

「ええっ!?そうなんですか?」

「ああ。君がいま手に持ってる、iPhoneだよ。MacOSやiOSのUIはGPUを使って高度なアニメーションを実現しているんだ」

「iOSがAndroidに比べてものすごく滑らかに見えるのはそれが原因なんですか?」

「それだけではないだろうけど、すごく重要な要素になっているのは間違いないだろうね。Androidでも3.0や4.0ではGPUをかなり活用したUIにしようとしてきているね」

「なるほど。この先いろんな可能性が広がっているということですね」

「そういうこと。勉強しといても損はないかもしれないね」

このエントリーをはてなブックマークに追加
はてなブックマーク - WebGLとはなんなのか、ゲーム好きの大学生に説明してみる
Post to Google Buzz
Share on GREE

Related posts:

  1. InternetExplorerでWebGLできる!? IEWebGL

Facebook comments:

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*