Internet Explorer Developer Channel には、WebGL の機能強化が多く含まれています。

  これらの更新は、Internet Explorer Developer Channel でのみ入手できます。Internet Explorer 11 を実行している Windows 8.1 および Windows 7 SP1 ユーザー向けのダウンロードが用意されています。

 

WebGL の機能強化

Internet Explorer Developer Channel に含まれる WebGL レンダラーが更新され、パフォーマンスが向上して機能のサポートが追加されました。次のような変更が行われました。

三角形ファン

drawArrays API と drawArraysInstancedANGLE API で、三角形ファンがサポートされるようになりました。

三角形ファンは、すべての三角形が 1 つの頂点を共有するジオメトリを記述するための、領域効率の良い方法です。TRIANGLES を使って以下のイメージを作成するには、バッファーに A、B、C、A、C、D、A、D、E、A、E、F を入力することで頂点を繰り返して隣接する三角形を記述します。TRIANGLE_FAN で同じことを行うには、頂点 A、B、C、D、E、F を送信すると、GPU により三角形ファンがビルドされます。

この結果、少ない頂点でファンの形をした領域が記述されます。バッファー内の頂点は、三角形ファン内のすべての三角形で共有された頂点です。点を追加するたびに、前の三角形の最後の頂点を使って (ABC、ACD、ADE など) 追加の三角形が記述されます。

三角形ファンにより、領域の記述に必要な頂点の数が減ることを示す図。

drawElements API や drawArraysInstancedANGLE API では、まだ三角形ファンがサポートされていません。

インスタンス化のサポート

以前のバージョンの Windows Internet Explorer では、GPU で図形を描画するときにインスタンス化がサポートされていませんでした。これは、10,000 個のツリーのフォレストを作成する場合、その数のツリーを表す頂点の配列を作成するか、単一のツリー ジオメトリを作成して、描画を 10,000 回呼び出す必要があることを意味していました。

Internet Explorer Developer Channel では、インスタンス化がサポートされるため、単一のジオメトリをアップロードし、GPU の描画呼び出しを 1 回行って再現できるようになりました。GPU は、指定した属性を使ってジオメトリの再現を処理します。1 つのジオメトリをガイドとして使って、10,000 個のツリーをストレッチまたはフラット化したり、色や形状を変更したりすることができます。これらのインスタンスごとのデータに変化を持たせるには、属性を含む頂点バッファーを作成し、vertexAttribDivisor 関数を使って繰り返す方法を設定します。

インスタンス化は、次の新しい API を使ってサポートされます。

interface ANGLE_instanced_arrays {
    const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE;
    void drawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
    void drawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei primcount);
    void vertexAttribDivisorANGLE(GLuint index, GLuint divisor); 
};

インスタンス化と ANGLE_instanced_arrays を使うと、GPU にアップロードする頂点の数を削減できます。ANGLE_instanced_arrays を使う方法について詳しくは、ANGLE_instanced_arrays を使った WebGL のインスタンス化に関するページと、Khrono の WebGL ANGLE_instanced_arrays 拡張機能の仕様に関するページをご覧ください。

インスタンス化は、LINES、LINE_STRIP、TRIANGLES、TRIANGLE_STRIP、TRIANGLE_FAN の各モードではサポートされません。 POINTS モードをインスタンス化することはできません。LINE_LOOP は、Internet Explorer Developer Channel によりサポートされていません。TRIANGLE_FAN は、drawArrays メソッドと drawArraysInstancedANGLE メソッドでのみサポートされます。

インスタンス化は、ツリーのフォレスト、1000 人の兵士のキャスト、シェイクスピアを書く 100 万頭の猿など、似たオブジェクトのモデルでのみ機能します。似ていないオブジェクトを多数作成する場合は機能しません。

インスタンス化は、Microsoft Direct3D 10 に対応する GPU でサポートされます。Microsoft Direct3D 9 対応 GPU ではサポートされません。

GLSL への準拠の向上

GLSL では、次のものがサポートされるようになりました。

  • continue フロー制御ステートメント。

  • Octal および hex 整数リテラル。

  • 組み込み変数

    const mediump int gl_MaxVertexAttribs;
    const mediump int gl_MaxVertexUniformVectors;
    const mediump int gl_MaxVaryingVectors;
    const mediump int gl_MaxVertexTextureImageUnits;
    const mediump int gl_MaxCombinedTextureImageUnits;
    const mediump int gl_MaxTextureImageUnits;
    const mediump int gl_MaxFragmentUniformVectors;
    const mediump int gl_MaxDrawBuffers;
    struct gl_DepthRangeParameters {
        highp float near; // n
        highp float far; // f
        highp float diff; // f - n
    };
    uniform gl_DepthRangeParameters gl_DepthRange;

     

  • 正確性の検証。

  • "taken" ブランチのみの条件付き短絡および適合 3 演算子の実行。

16 ビットのテクスチャのサポート

Internet Explorer Developer Channel では、ArrayBuffer 入力の 16 ビット テクスチャがサポートされます。テクスチャには、3 つの異なる方法 (イメージ要素、キャンバス要素、配列バッファー) でデータを入力することができます。 16 ビット テクスチャの場合、Internet Explorer Developer Channel では配列バッファーのみサポートされます。

関連トピック

Windows 8.1 向け Internet Explorer Developer Channel のダウンロード

Windows 7 SP1 向け Internet Explorer Developer Channel のダウンロード