WebGL-Updates in Developer Channel

Internet Explorer Developer Channel bietet eine Reihe von Verbesserungen an WebGL.

Hinweis  Diese Updates sind nur in Internet Explorer Developer Channel verfügbar. Dort finden Sie Downloads für Kunden, die Internet Explorer 11 unter Windows 8.1 und Windows 7 SP1 verwenden.

 

Verbesserungen in WebGL

Der WebGL-Renderer in Internet Explorer Developer Channel wurde aktualisiert und weist eine verbesserte Leistung und erweiterte Funktionsunterstützung auf. Folgendes wurde geändert.

Dreiecksfächer

Dreiecksfächer werden jetzt für die APIs drawArrays und drawArraysInstancedANGLE unterstützt.

Dreiecksfächer bieten eine platzsparendere Möglichkeit, Geometrien zu beschreiben, bei denen alle Dreiecke einen gemeinsamen Vertex nutzen. Um das unten dargestellte Bild mit TRIANGLES zu erstellen, beschreiben Sie angrenzende Dreiecke mit wiederholten Vertices, indem Sie einen Puffer mit A, B, C, A, C, D, A, D, E, A, E, und F füllen. Um dasselbe mit TRIANGLE_FAN zu erreichen, senden Sie die Vertices A, B, C, D, E und F. Daraufhin wird der Dreiecksfächer vom GPU erstellt.

Das Ergebnis ist eine fächerförmige Fläche, zu deren Beschreibung weniger Vertices benötigt werden. Der Vertex im Puffer ist der gemeinsame Vertex aller Dreiecke im Dreiecksfächer. Jeder zusätzlicher Punkt beschreibt unter Verwendung des letzten Vertexes des vorherigen Dreiecks ein weiteres Dreieck (ABC, ACD, ADE usw.).

Veranschaulicht, wie die Anzahl von zur Beschreibung einer Fläche benötigten Vertices durch den Dreiecksfächer reduziert wird.

Für die API drawElements oder drawArraysInstancedANGLE werden noch keine Dreiecksfächer unterstützt.

Unterstützung der Instanziierung

In früheren Versionen von Windows Internet Explorer wurde beim Zeichnen von Geometrien im GPU keine Instanziierung unterstützt. Wenn Sie einen Wald mit 10.000 Bäumen erstellen wollten, hatten Sie zwei Möglichkeiten: Sie mussten entweder ein Array mit so vielen Vertices erstellen, wie Bäume erforderlich waren. Oder Sie mussten eine einzelne Baumgeometrie erstellen und 10.000 Mal „Draw“ aufrufen.

Da Internet Explorer Developer Channel die Instanziierung unterstützt, können Sie jetzt eine einzelne Geometrie hochladen und den GPU mit einem Draw-Aufruf anweisen, diese zu reproduzieren. Der GPU reproduziert die Geometrie mit den von Ihnen angegebenen Attributen. Während die einzelne Geometrie als Vorlage dient, können die 10.000 Bäume gestreckt, abgeflacht, farblich verändert und schattiert werden. Um die Bäume anhand von Instanzdaten zu variieren, erstellen Sie einen Vertexpuffer mit den Attributen und legen die gewünschten Wiederholungen mit der vertexAttribDivisor-Funktion fest.

Die Instanziierung wird unter Verwendung der folgenden neuen APIs unterstützt.

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); 
};

Mithilfe der Instanziierung und ANGLE_instanced_arrays können Sie die Anzahl von auf den GPU hochgeladenen Vertices verringern. Weitere Informationen zur Verwendung von ANGLE_instanced_arrays finden Sie unter WebGL-Instanziierung mit ANGLE_instanced_arrays und Spezifikation der WebGL ANGLE_instanced_arrays-Erweiterung von Khronos.

Die Instanziierung wird für die Modi LINES, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP und TRIANGLE_FAN unterstützt. Der POINTS-Modus kann nicht instanziiert werden. LINE_LOOP wird von Internet Explorer Developer Channel nicht unterstützt. TRIANGLE_FAN wird nur mit den Methoden drawArrays und DrawArraysInstancedANGLE unterstützt.

Die Instanziierung wird nur bei Modellen ähnlicher Objekte unterstützt, z. B. bei Bäumen in einem Wald, Tausenden Soldaten in einer Truppe oder einer Million Affen, die Shakespeare schreiben (gemäß dem Theorem der endlos tippenden Affen). Bei der Erstellung vieler nicht ähnlicher Objekte funktioniert dies nicht.

Die Instanziierung wird auf Microsoft Direct3D 10-fähigen GPUs unterstützt. Auf Microsoft Direct3D 9-fähigen GPUs wird sie nicht unterstützt.

Verbesserungen der GLSL-Konformität

Die folgenden Elemente werden jetzt in GLSL unterstützt:

  • continue-Flusssteuerungsanweisung

  • Ganzzahlliterale Octal und hex

  • Integrierte Variablen:

    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;

     

  • Überprüfung der Genauigkeit.

  • Bedingte Ausführung von Kurzschlussoperatoren und konformen ternären Operatoren ausschließlich für die „verwendete“ Verzweigung.

Unterstützung für 16-Bit-Texturen

Internet Explorer Developer Channel unterstützt 16-Bit-Texturen für die ArrayBuffer-Eingabe. Texturen können auf drei verschiedene Arten mit Daten gefüllt werden: mit image-Elementen, canvas-Elementen und Arraypuffern. Bei 16-Bit-Texturen werden nur Arraypuffer für Internet Explorer Developer Channel unterstützt.

Verwandte Themen

Download von Internet Explorer Developer Channel für Windows 8.1

Download von Internet Explorer Developer Channel für Windows 7 SP1