3次元グラフィックス(OpenGLやDirect3Dなど)を操作する他の技術とは異なり、WebGLはWebページで使用するように設計されており、特別な拡張機能やライブラリをインストールする必要はありません。 WebGLの利点の1つは、アプリケーションがWebページとして設計されていることです。つまり、同じプログラムがさまざまなデバイス(スマートフォン、タブレット、ゲームコンソールなど)で正常に実行されます。 これは、WebGLが開発者コミュニティにますます影響を与え、主要なグラフィックプログラミングツールの1つになることを意味します。

WebGLの利点
HTMLの開発により、開発者にはますます複雑なWebアプリケーションを作成する機会が与えられています。 開発の夜明けに、HTML言語は静的コンテンツを表示する機能のみを提供しましたが、JavaScriptサポートの追加により、要素のより複雑な相互作用を実装し、動的コンテンツを表示することが可能になりました。 HTML5標準の実装により、canvasタグ形式の2次元グラフィックスのサポートなど、新しい機能を使用できるようになりました。 WebGLテクノロジーの作成により、JavaScriptを使用してWebページに3次元グラフィックスを表示および操作できるようになりました。 開発者はWebGLを使用して、まったく新しいユーザーインターフェイス、3次元ゲームを作成し、3次元グラフィックスを使用してさまざまな情報を視覚化できます。 その優れた機能にもかかわらず、WebGLはアクセシビリティと使いやすさの点で他のテクノロジーとは異なり、迅速な普及に貢献しています。
ブラウザのサポート
WebGLは現在、次のブラウザーでサポートされています。
デスクトップブラウザ
- Mozilla Firefox(バージョン4以降)
- Google Chrome(バージョン9以降)
- Safari(バージョン6以降、WebGLサポートはデフォルトで無効になっています)
- Opera(バージョン12以降、WebGLサポートはデフォルトで無効になっています)
- IE(バージョン11以降、他のバージョンでは、IEWebGLなどのサードパーティプラグインを使用できます)
モバイルブラウザとプラットフォーム
- Androidブラウザー(一部のデバイスでのみWebGLをサポート)
- Opera Mobile(バージョン12以降、Android OSのみ)
- IOS(バージョン8.1以降の完全サポート)
- Firefox for mobile(バージョン4以降)
- Android向けGoogle Chrome(バージョン25以降)
WebGLを使用する利点:
- ブラウザー間の互換性と特定のプラットフォームへのバインドの欠如。 Windows、MacOS、Linux-これらはすべて重要ではありません。主なことは、ブラウザがWebGLをサポートしていることです。
- JavaScriptを使用します。これはかなり一般的です。
- 自動メモリ管理。 OpenGLとは異なり、WebGLでは、メモリを割り当ててクリアするための特別なアクションを実行する必要はありません。
- WebGLはビデオカード(GPU)上のグラフィックプロセッサを使用してグラフィックをレンダリングするため、このテクノロジの特徴は高いパフォーマンスであり、ネイティブアプリケーションのパフォーマンスに匹敵します。
創造の歴史
パーソナルコンピューターでコンピューターグラフィックスを表示するための最も一般的なテクノロジは、Direct3DとOpenGLです。
Direct3Dは、Microsoft DirectXテクノロジースイートの一部です。
代替のOpenGLテクノロジーは、そのオープン性により、はるかに広く普及しています。 OpenGLの実装は、さまざまなオペレーティングシステムとハードウェアプラットフォームで利用できます。 OpenGL仕様は、Silicon Graphics Incによって開発されました。 1992年にオープンスタンダードとして公開されました。 テクノロジーは、3次元グラフィックスの開発に大きな影響を与えました。
WebGLはOpenGLに根ざしていますが、直接の子孫と呼ぶことはできません。 WebGLの直接プロトタイプは、OpenGL ES(Embedded Systems for Embedded Systems)と見なされ、2003-2004年に作成され、2007(ES 2.0)および2012(ES 3.0)に更新されました。 OpenGL 2.0への移行は、新しい重要な機能-ソフトウェアシェーダーのサポート-の登場によって特徴付けられました。 このサポートはOpenGL ES 2.0に移植され、WebGL 1.0仕様の中核要素の1つになりました。
2009年初頭、クロノスグループコンソーシアム(さまざまなオープンスタンダードの開発、公開、および促進のために設立された非営利の産業コンソーシアム)は、WebGLワーキンググループを設立し、OpenGL ES 2.0に基づくWebGL標準化プロセスを開始しました。 2011年、彼の支援の下、WebGLの最初のバージョンがリリースされました。 ただし、その年の6月に、MicrosoftはWebGLテクノロジのセキュリティについて懸念を表明し、機器への過剰なアクセス権と信頼性の低い保護メカニズムを挙げました。 Mozillaの副社長Mark Schaverは、Microsoftへの批判を拒否し、恐れを誇張していると呼びました。 当時、MicrosoftはWebGLと同じ原則に基づいた独自の3D Silverlight 5 Webテクノロジーを備えていましたが、WebGLは非常に信頼性が高いと考えていました。 マイクロソフトは後にInternet Explorer 11ブラウザーでWebGLのサポートを実装することにより、WebGLテクノロジーに対する態度を変え、Appleは2014 WWDCカンファレンスでSafariでWebGLをサポートすることにしました。
WebGL開発フレームワークの概要
WebGLテクノロジーは低レベルAPIを使用します。この側面により、ブラウザー開発者による製品へのテクノロジーの導入が容易になりますが、インターフェースの作成にかなりの困難が生じます。 ウェブサイト開発者の作業を簡素化するライブラリ、フレームワーク、サードパーティソフトウェアツールの開発に多くの時間と労力が費やされました。
WebGLUライブラリ
最初のパブリックライブラリは、WebGLアプリケーションを開発するための低レベルおよび高レベルのユーティリティセットであるWebGLUでした。 WebGLUは、開発者が最小限の手間とコードで最終結果に集中できるように設計されていますが、ライブラリは、より多くの制御を必要とする開発者を制限しません。 これは、低レベル関数を使用してWebGL APIを操作できる可能性があるために実現されています。
機能の不完全なリスト:
- .frag / .vert / .vp / .fpファイルからシェーダーを直接ロードできます
- 自動ロードとシェーダーのセットアップ
- すべてのコンパイルとレイアウトは自動的に処理されます。
- モデルの投影とタイプの自動インストール
- OpenGLのマトリックスモードにほぼ対応する投影とマトリックスタイプのモデルスタックを提供します。
- 必要に応じて、バッファの配列/要素を自動的に作成し、レンダリング中に必要に応じてそれらをバインドします
- 各オブジェクトに個別のシェーダープログラムを割り当てることができます。
- シェーダー属性データストレージ、単純な呼び出し
- オブジェクトをロードするために実装された部分的な.objパーサー
- オブジェクト階層をサポート
- 静止画像とビデオテクスチャ
- 手続き型アニメーションのサポート
- フレームアニメーションのサポート
- アニメーションタイプとオブジェクト階層を混在させる機能
- GameGLU-簡単なキーボードイベントトラッキングを提供するコンパニオンライブラリ
GLGEライブラリ
WebGLを使用してアプリケーションを開発するための有名なライブラリ。 ライブラリは、シーンの動的な変化により重点を置いています。 ただし、リポジトリの最新の変更は2014年のものであるため、今日のライブラリの関連性を疑う理由があります。
機能の不完全なリスト:
- フレームアニメーション
- 一般照明、スポット照明、スポットライトのサポート
- 法線マップのサポート
- マテリアルのアニメーション化
- 骨格アニメーション
- Collada形式のサポート
- オフセットマップのサポート
- テキストレンダリング
- 霧
- 影の深さ
- 環境マップ
- 反射/屈折
- Collada Animation
- 2Dフィルター
- カリング-シーンの隠された部分を処理から削除する
- LODサポート-オブジェクト詳細レベル
- 物理学
3つのJSライブラリ
これまでで最も人気があり、活発に開発されているライブラリ。 詳細でアクセス可能なドキュメントと膨大な数の実例により、このライブラリは同様のシステムのリーダーの1つとなっています。
機能の不完全なリスト:
- レンダラー-Canvas、SVGまたはWebGL
- オブジェクトをリアルタイムで追加および削除します
- 霧
- 遠近法カメラまたは正投影カメラ
- フレームアニメーション、さまざまな種類の運動学、フレームごとのアニメーション
- いくつかのタイプの光源-外部、指向性、点
- 投げられた影
- シェーダー(GLSL)
- オブジェクト-ネットワーク、パーティクル、スプライト、ライン、骨格アニメーションなど
- 多くの事前定義されたタイプのジオメトリ-平面、立方体、球、トーラス、3Dテキストなど
- アクティブモディファイヤのサポート-ファブリック押出
- 複数のデータタイプ(バイナリ、画像、JSON、シーン)をロードする機能
- Blender、openCTM、FBX、3D Studio Max、Wavefront .objオブジェクトのエクスポートとインポート
バビロンJSライブラリ
サードパーティのプラグインと拡張機能を使用せずに、Webブラウザで実行される本格的な3Dアプリケーションとゲームを作成するためのオープンソースライブラリ。 Babylon JSの機能はThreeJSに近いですが、Three JSではすぐに使用できないビルトイン機能がいくつかあります。 このような優れた機能には、組み込みの物理エンジンoimo.jsが含まれています。これは、高さマップを使用して現実的な風景を作成するかなり簡単な方法です。 もちろん、3つのjsにもこのような機能がありますが、さまざまな追加アプリケーションを使用して実装されます。 ただし、ライブラリの機能については、800 kbの控えめな重みを支払う必要があります。
機能リスト:
- シーン-既成のメッシュ、フォグ、スカイボックスを使用
- 物理エンジン(oimo.jsモジュール)
- スムージング
- アニメーションエンジン
- サウンドエンジン
- パーティクルシステム
- ハードウェアのスケーリング
- LODサポート
- シーンの段階的な読み込み
- 自動シーン最適化
- デバッグパネル
- 4つの光源-スポット、どこでも放射、スポットライト、リアル
- カスタムマテリアルとシェーダー
- 幅広いテクスチャリング機能
- SSAO
- グレア
- タッチコントロール用を含む9種類のカメラ
- 3ds Max、Blender、Unity3D、Cheetah 3dのエクスポーター
- 高さマップ
ユーザーの日々の活動にコンピューターグラフィックスがますます積極的に導入されるため、開発者は新しい視野を身につける必要があります。 もちろん、さまざまなタスクには、アプリケーションの実装に対する個別のアプローチが必要です。 この記事で紹介するライブラリは、氷山の一角にすぎません。
各開発者は、特定のニーズに合わせてライブラリを選択できます-誰かが骨格アニメーションを必要とし、誰かが現実的な光や物理学を必要とし、誰かが最も純粋なWebGL API以外は何も認識せず、メモ帳にシェーダーを書き込む真正統派の専門家です。 ただし、3次元グラフィックスの機能を積極的に使用する、高品質で軽量で生産性の高いWebアプリケーションを作成したいという願望により、誰もが団結しています。