WebGLとは

 WebGL(ウェブジーエル)はWebブラウザで3Dグラフィックスを表示するためのAPIです。

 業界団体による標準規格であるため、Google ChromeやApple Safariなどの代表的なWebブラウザーがWebGLに対応しています。
スマートフォンやタブレットのWebブラウザも2020年現在、ほぼすべてWebGLに対応しています。

 WebGLはブラウザのJavaScriptから利用するAPIです。
そのため、従来の3DグラフィックスAPIと異なり、ブラウザとテキストエディタがあれば、すぐに3Dグラフィックスプログラミングを行うことができます。

WebGLのなりたち

 WebGLはOpenGLという3DグラフィックスAPIの流れをくむAPIです。

 OpenGLは1990年代からある歴史あるAPIで、現在に至るまで3D CADやゲームといったリアルタイムの3Dグラフィックスを扱うためのAPIとして発展を続けてきました。
(2020/12/25現在、バージョン4.6が最新です)

 OpenGLが他の3DグラフィックスAPIと一線を画していた特徴は、複数の企業が協力して仕様を策定することによる、複数のOS環境のサポートです。
古くからWindowsやLinux、Macなど多くのパソコンで動作しました。

 2003年頃になると、高機能携帯電話などの組み込み機器の隆盛を受けて、サブセット規格であるOpenGL ES(OpenGL for Embedded Systems)が生まれました。
(2020/12/25現在、OpenGL ESはバージョン3.2が最新です)

 WebGLはOpenGL ESをベースに、Webブラウザ向けに一部仕様を調整して策定された規格です。

 WebGLにはWebGL1とWebGL2の2つのメジャーバージョンがあります。WebGL1はOpenGL ES 2.0を、WebGL2はOpenGL ES 3.0をベースにしています。

 WebGL2では、WebGL1に存在したプログラミング上の制約が取り除かれ、多くの機能追加が行われています。

image.png

WebGLは長期の存続が期待できる

WebGLは今やWebブラウザの主要機能であり公益性の高いAPIですので、今後も長期的なサポートが期待されます。ベースとなる3D APIであるネイティブのOpenGLが廃れても、他の3D APIを通して末永くサポートされつづけるでしょう。1

このことからも、WebGLは末永く安心して学べる3D APIであると言えます。

WebGLの進化版であるWebGL2

WebGL2はOpenGL ES 3.0をベースにした新しいWebGL規格です。

従来のWebGL1はOpenGL ES 2.0をベースにしていました。
そのためOpenGL ES 2.0相当からOpenGL ES 3.0相当へと機能性が向上しています。

GPU機能の対応度合いとしては、大雑把な比較になりますが、2006年冬に発売されたゲーム機PlayStation 3 程度と考えてよいでしょう。1

現在市販されているGPUは高度な機能を数多く搭載していますが、その機能をどこまで利用できるかは、使用する3D APIの仕様に制限されます。
WebGL2がベースとするOpenGL ES 3.0は、2012年に組み込み機器向けにリリースされた規格です。
そのため、WebGL2でも2012年当時の携帯電話のハードウェア水準の機能程度までしか、GPUの機能を活用することができません。

しかしながら、WebGL2ではWebGL1に存在したプログラミング上の制約が多く解消されているというメリットがあります。
機能面でも3DテクスチャのサポートやMSAA(アンチエイリアシング:ギザギザ感を低減する機能)など、今でも基本となる重要な機能追加がWebGL2では行われています。

C++言語などで利用できるネイティブな3D APIに比べると未だ機能は少ないですが、リアルタイムグラフィックスの学習という観点からは、WebGL2は今後も重要なAPIであり続けることでしょう。

image.png

これからWebGLを学ぶならWebGL2

2020年12月現在では、Apple社のSafari以外の殆どのブラウザが標準でWebGL2に対応しています。Safariブラウザも開発バージョンでは標準でWebGL2が有効になっていますので、正式バージョンでもいずれWebGL2が標準で利用できるようになるでしょう。

ハードウェア側も、今やどのような小型の機器でもWebGL2程度の機能はほぼ間違いなく搭載するようになっています。

WebGL1(OpenGL ES 2.0)はWebGL2(OpenGL ES 3.0)以降から現在までGL系のAPI体系と比べて、若干異なる古いAPI仕様とシェーダー仕様を引きずっています。時代遅れの仕様の癖をつけないためにも、これから学ぶ方はWebGL1の仕様はもう忘れてしまって大丈夫です。

今からWebGLを学ぶのであれば、WebGL2を前提に学習を進めることをお勧めします。

リンク

外部ページ概要
WebGL1の概要WebGL1はWebGl2と比較して多くの制約があります。
WebGL2の概要 WebGL2について概要を説明します。
WebGL2.0仕様書 業界標準化団体KhronosによるWebGLバージョン2の規格仕様書です。

Footnotes

  1. ただし、PlayStationなどのコンソールゲーム機は、よりハードウェアに近い高効率の専用APIを使ってGPUを駆動しますので、性能や最終映像品質についての単純な比較は困難です。 2