WebGL
| 作者 | WebGL Working Group |
|---|---|
| 初版 | 2011年03月3日 |
| 最新版 | 1.0.1 / 2012年01月27日 |
| 種別 | API |
| 公式サイト | www.khronos.org/webgl/ |
| HTML |
|---|
WebGL[1](ウェブジーエル)は、ウェブブラウザで3次元コンピュータグラフィックスを表示させるための標準仕様。OpenGL 2.0もしくはOpenGL ES 2.0をサポートするプラットフォーム上で、特別なブラウザのプラグインなしで、ハードウェアでアクセラレートされた三次元グラフィックスを表示可能にする。技術的には、JavaScriptとネイティブのOpenGL ES 2.0のバインディングである。WebGLは非営利団体のKhronos Groupで管理されている。
目次 |
対応ブラウザ [編集]
対応ウェブブラウザは以下の通り[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 は利用できない。
- PC
- Mozilla Firefox 4
- Google Chrome 8 (8は要設定、9から標準で有効)
- Safari 5.1 (要設定)
- Opera 12[3] (要設定)
- モバイル
- 対応
- Firefox for Mobile (Maemoは1.0から, Androidは4から)
- Opera Mobile 12 (Android のみ)
- Tizen 1.0
- Google Chrome for Android 25 (chrome://flags/ で要設定)
- 非対応・部分対応
- 対応
また、関連して、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]。マイクロソフトは、元々 OpenGL ではなく自社規格の Direct X を推進していることもあり[要検証 ]、セキュリティ上有害であるとして WebGL に反対の立場を明確にしている[9]。
Firefox 4 と Chrome 12 は標準状態でWebGLが有効になっており、セキュリティ問題を防ぐには手動でWebGLを無効にする必要がある。その後、Chrome 13 ではクロスドメイン問題が修正され、Firefox 5 ではクロスドメインは無効になったが、Firefox 8 から Cross-Origin Resource Sharing が利用可能になった。
DoS攻撃の方は、GL_ARB_robustness[10](OpenGL 3.x) もしくは GL_EXT_robustness[11](OpenGL ES) を利用できるウェブブラウザに制限することで解決している[12][13]。
なお、Adobe Flash 11.0 のプログラマブルシェーダはforループなどが使えないので、DoS攻撃の問題が発生しない。
ライブラリ [編集]
C3DLやWebGLUなど、WebGLを使ったライブラリが開発されている。
関連項目 [編集]
参照 [編集]
- ^ Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet
- ^ Demo Repository - WebGL Public Wiki
- ^ Opera Core Concerns - WebGL and Hardware Acceleration
- ^ JavaScript typed arrays - MDC Doc Center
- ^ Canvas 3D: GL power, web-style
- ^ Taking the canvas to another dimension
- ^ WebGL - A New Dimension for Browser Exploitation
- ^ 3D表示規格の「WebGL」に深刻なセキュリティ問題、主要ブラウザに影響 - ITmedia、2011年5月11日
- ^ 米Microsoft、3D技術のWebGLは「セキュリティ的に有害な技術」と懸念を表明 - Impress INTERNET Watch、2011年6月17日
- ^ GL_ARB_robustness
- ^ GL_EXT_robustness
- ^ Bug 93379 - WebGL Add support for EXT_robustness
- ^ Support GL_EXT_robustness in Chrome's WebGL implementation