Mises à jour de WebGL dans Developer Channel

Internet Explorer Developer Channel propose un certain nombre d’améliorations de WebGL.

Remarque  Ces mises à jour sont disponibles uniquement dans Internet Explorer Developer Channel que les clients Windows 8.1 et Windows 7 SP1 exécutant Internet Explorer 11 peuvent télécharger.

 

Améliorations de WebGL

Nous avons mis à jour le convertisseur WebGL dans Internet Explorer Developer Channel pour accroître les performances et prendre en charge davantage de fonctionnalités. Voilà ce qui a changé :

Triangles en éventail

Les triangles en éventail sont désormais pris en charge pour les API drawArrays et drawArraysInstancedANGLE.

Les triangles en éventail utilisent moins d’espace que les techniques traditionnelles. Ils servent à décrire des géométries et tous les triangles partagent un sommet. Pour créer l’image ci-dessous avec TRIANGLES, vous devez décrire des triangles adjacents de sommets répétés en remplissant une mémoire tampon avec A, B, C, A, C, D, A, D, E, A, E et F. Pour faire de même avec TRIANGLE_FAN, vous envoyez les sommets A, B, C, D, E et F, et l’unité GPU se charge de générer les triangles en éventail.

Vous obtenez une zone en forme d’éventail avec un nombre moins important de sommets. Le sommet dans la mémoire tampon est le sommet partagé de tous les triangles dans l’éventail. Chaque point supplémentaire décrit un autre triangle, à l’aide du dernier sommet du triangle précédent (ABC ACD, MDE et ainsi de suite).

Image illustrant comment une figure de triangles en éventail réduit le nombre de sommets nécessaires pour décrire une zone.

Les triangles en éventail ne sont pas encore pris en charge pour les API drawElements ou drawArraysInstancedANGLE.

Prise en charge de l’instanciation

Avant, quand vous dessiniez des géométries dans l’unité GPU, les versions antérieures de Windows Internet Explorer ne prenaient pas en charge l’instanciation. Cela signifiait que pour créer une forêt de 10 000 arbres, vous deviez créer un groupe de sommets qui représentait tous ces arbres, ou encore créer une géométrie d’arbres unique et lancer 10 000 appels à dessiner.

Internet Explorer Developer Channel prend en charge l’instanciation. Ainsi, vous pouvez maintenant charger une géométrie unique et lancer un appel à dessiner que l’unité GPU reproduit. L’unité GPU gère la reproduction de la géométrie à l’aide des attributs que vous spécifiez. En utilisant cette géométrie comme point de départ, vous pouvez étirer, aplatir ou modifier les couleurs et les ombres de vos 10 000 arbres. Pour introduire des variations en fonction des données de l’instance, créez une mémoire tampon de sommets avec les attributs et configurez la façon dont vous souhaitez les répéter à l’aide de la fonction vertexAttribDivisor.

Les nouvelles API suivantes prennent en charge l’instanciation.

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

En vous aidant de l’instanciation et de ANGLE_instanced_arrays, vous pouvez réduire le nombre de sommets que vous transférez vers l’unité GPU. Pour plus d’informations sur l’utilisation de ANGLE_instanced_arrays, voir Instanciation de WebGL avec ANGLE_instanced_arrays et Spécification des extensions WebGL ANGLE_instanced_arrays de Kronos.

Vous pouvez instancier les modes LINES, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP et TRIANGLE_FAN. Vous ne pouvez pas instancier le mode POINTS. Internet Explorer Developer Channel ne prend pas en charge LINE_LOOP. TRIANGLE_FAN est pris en charge uniquement avec les méthodes drawArrays et drawArraysInstancedANGLE.

L’instanciation fonctionne uniquement sur les modèles d’objets similaires, par exemple une forêt d’arbres, un moulage d’un millier de soldats ou un million de singes tapant du Shakespeare. Elle ne fonctionne pas si vous essayez de créer un ensemble d’objets non similaires.

L’instanciation est prise en charge sur les unités GPU compatibles Microsoft Direct3D 10. Elle n’est pas prise en charge sur les unités GPU compatibles Microsoft Direct3D 9.

Améliorations de la conformité GLSL

GLSL prend maintenant en charge les éléments suivants :

  • Instruction de contrôle de flux continue

  • Littéraux d’entier Octal et hex

  • Variables intégrées :

    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;

     

  • Vérification de la précision

  • Court-circuitage conditionnel et exécution conforme de l’opérateur ternaire de la branche « prise » uniquement

Prise en charge des textures 16 bits

Internet Explorer Developer Channel prend en charge les textures 16 bits pour l’entrée ArrayBuffer. Vous pouvez remplir les textures avec des données et ce, de trois façons différentes : éléments d’une image, éléments de zone de dessin et mémoires tampons de tableau. Pour les textures 16 bits, seules les mémoires tampons de tableau sont prises en charge pour Internet Explorer Developer Channel.

Rubriques associées

Téléchargement d’Internet Explorer Developer Channel pour Windows 8.1

Téléchargement d’Internet Explorer Developer Channel pour Windows 7 SP1