WebGL

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
WebGL
作者 WebGL Working Group
初版 2011年3月3日(3年前) (2011-03-03
最新版 1.0.2 / 2013年3月1日(21か月前) (2013-03-01
種別 API
公式サイト www.khronos.org/webgl/
テンプレートを表示

WebGL[1]ウェブジーエル)は、ウェブブラウザ3次元コンピュータグラフィックスを表示させるための標準仕様。OpenGL 2.0もしくはOpenGL ES 2.0をサポートするプラットフォーム上で、特別なブラウザのプラグインなしで、ハードウェアでアクセラレートされた三次元グラフィックスを表示可能にする。技術的には、JavaScriptとネイティブのOpenGL ES 2.0のバインディングである。WebGLは非営利団体のKhronos Groupで管理されている。

WebGLはHTMLcanvas要素を使う。

対応ブラウザ[編集]

対応ウェブブラウザは以下の通り[2]。主要なブラウザは最新版では全てのブラウザが対応している。ただし、ビデオカードが OpenGL 2.0 をサポートしている必要がある。また、後述のセキュリティ上の問題から GL_ARB_robustness (OpenGL 3.x) もしくは GL_EXT_robustness (OpenGL ES) の対応が必要である。そのため、例えば Intel HD Graphics では OpenGL 3.x に対応している Sandy Bridge 以降の世代が必要であり、OpenGL 2.x 世代はウェブブラウザ側で強制的に利用する設定をしないと WebGL は利用できない。

また、関連して、WebGL が使えるブラウザでは JavaScript で型付き配列が使える[4]。なお、Internet Explorer 10, Android ブラウザ, Google Chrome for Android, iOS 5 は WebGL に対応・有効にしていないが、型付き配列が使える。

歴史[編集]

WebGLはMozillaのCanvas 3Dの実験から始まった。Mozillaは2006年に最初のCanvas 3Dのプロトタイプのデモンストレーションをした。2007年末に、Mozilla[5]とOpera[6]がそれぞれ別々の独自の実装をした。2009年初頭に、MozillaとKhronosがWebGLワーキンググループを始めた。WebGLワーキンググループはApple, Google, Mozilla, Operaを含んでいる。

セキュリティの懸念[編集]

2011年5月9日、WebGLに深刻なセキュリティホールが指摘された[7]。問題点は以下の2点。現在は解決済み。

  • サービス拒否(DoS)攻撃 - プログラマブルシェーダが使えるが、ビデオカード自体にバグなどがあると、OS全体を落としたり、無限ループなどでOSを停止させることが出来るビデオカードがある。
  • クロスドメイン画像盗取 - Cross-Origin Resource Sharing に未対応で、他のドメインで使われている画像を取得できた

規格そのものに脆弱性が存在するため、米国のセキュリティ機関US-CERTはブラウザでWebGLを無効にするよう勧告していた[8]

Firefox 4 と Chrome 12 は標準状態でWebGLが有効になっており、セキュリティ問題を防ぐには手動でWebGLを無効にする必要があった。その後、Chrome 13 ではクロスドメイン問題が修正され、Firefox 5 ではクロスドメインは無効になったが、Firefox 8 から Cross-Origin Resource Sharing が利用可能になった。

DoS攻撃の方は、GL_ARB_robustness[9](OpenGL 3.x) もしくは GL_EXT_robustness[10](OpenGL ES) を利用できるウェブブラウザに制限することで解決した[11][12]

なお、Adobe Flash 11.0 のプログラマブルシェーダはforループなどが使えないので、DoS攻撃の問題が発生しない。

ライブラリ[編集]

C3DLやWebGLUなど、WebGLを使ったライブラリが開発されている。

関連項目[編集]

参照[編集]

外部リンク[編集]