4 septembre 2001

3 Le modèle de rendu


Contenu


 

3.1 Introduction

Les implémentations de SVG sont sensées se comporter comme si elles implémentaient un modèle de rendu (ou d'imagerie) correspondant à celui qui est décrit dans ce chapitre. Une implémentation réelle n'est pas obligée d'implémenter le modèle de cette même manière, mais le résultat sur tout appareil auquel cette implémentation est destinée devra correspondre à celui décrit par ce modèle.

L'appendice sur les critères de conformité indique les limites dans lesquelles une implémentation réelle peut s'écarter de cette description. En pratique, une implémentation réelle va légèrement s'en écarter à cause des limitations de l'appareil de sortie (par exemple, un éventail de couleurs limité seulement est reconnu) et à cause de limitations pratiques dans l'implémentation d'un modèle mathématique précis (par exemple, pour des performances réalistes, les courbes sont approximées par des droites, l'approximation ne devant être suffisamment précise que pour le respect des critères de conformité).

3.2 Le modèle des peintres

SVG utilise un « modèle des peintres » pour le rendu. La peinture est appliquée en opérations sucessives sur l'appareil de sortie, de telle manière que chaque opération peigne par-dessus certaines aires sur l'appareil de sortie. Quand l'aire recouvre une aire précédemment peinte, la nouvelle peinture fait disparaître partiellement ou complètement l'ancienne peinture. Quand la peinture n'est pas complètement opaque, le résultat sur l'appareil de sortie est défini par les règles (mathématiques) de composition décrite au chapitre Une composition avec couche alpha simple.

3.3 L'ordre de rendu

Les éléments dans un fragment de document SVG possède un ordre de dessin implicite, le premier élément du fragment de document étant « peint » en premier. Les éléments suivants sont peints par-dessus les précédents.

3.4 Le rendu des groupes

Le regroupement des éléments, comme avec l'élément 'g' (voir les éléments conteneurs), a pour effet de produire un canevas temporaire distinct, initialisé en noir transparent sur lequel les éléments enfants sont peints. Au terme de cette opération, les effets de filtre, éventuellement spécifiés pour le groupe, sont appliqués pour créer un canevas temporaire modifié. Ce canevas temporaire est ensuite composé avec l'arrière-plan, en prenant en compte, le cas échéant, tous les paramètres de masquage et d'opacité de niveau groupe concernant le groupe.

3.5 Le rendu des éléments

Les éléments graphiques individuels sont rendus comme si chacun d'eux représentait son propre groupe ; comme si un canevas temporaire séparé était créé pour chaque élément graphique. L'élément est d'abord peint sur le canevas temporaire (voir plus loin La peinture des contours et du texte et La peinture des images pixélisées). Puis les éventuels effets de filtre spécifiés pour l'élément sont appliqués pour créer un canevas temporaire modifié. Ce canevas temporaire est alors composé avec l'arrière-plan, en prenant en compte, le cas échéant, tous les paramètres de rognage, de masquage et d'opacité de l'objet concernant l'élément graphique.

3.6 Les types des éléments graphiques

SVG reconnaît trois types fondamentaux d'éléments graphiques pouvant être rendus sur le canevas :

3.6.1 La peinture des contours et du texte

Les formes et le texte peuvent être remplis (i.e., appliquer de la peinture à l'intérieur de la forme) et tracés (i.e., appliquer de la peinture le long du contour de la forme). Le traçage est centré sur le contour de l'objet ; ainsi, dans les faits, la moitié de la peinture tombe dans l'intérieur de la forme et l'autre moitié en dehors de celle-ci.

Pour certains types de formes, des symboles marqueurs (eux-mêmes pouvant résulter d'une combinaison de formes, de texte et d'images) peuvent être dessinés sur des sommets déterminés. Chaque symbole marqueur est peint comme si son contenu graphique était développé dans l'arbre du document SVG juste après l'objet forme qui utilise le symbole marqueur en question. Le contenu graphique d'un symbole marqueur est rendu de la même façon que pour les éléments graphiques. Les symboles marqueurs ne s'appliquent pas au texte.

Le remplissage intervient en premier, puis suivent le tracé et ensuite les symboles marqueurs. Les symboles marqueurs sont rendus en ordre le long du contour de la forme, du début à la fin de la forme.

Chaque opération de remplissage et de tracé comporte ses propres réglages d'opacité ; ainsi, on peut remplir et/ou tracer une forme avec une couleur semi-transparente, avec différentes valeurs d'opacité pour les opérations de remplissage et de tracé.

Le remplissage et le tracé sont des opérations de peinture entièrement indépendantes ; ainsi, si à la fois, on remplit et trace une forme, la moitié du tracé sera peint par dessus une partie du remplissage.

SVG reconnaît en interne les types de peinture suivants qui peuvent être employés pour des opérations de remplissage et de tracé :

3.6.2 La peinture des images pixélisées

Lors du rendu d'une image pixélisée, les échantillons originaux sont « ré-échantillonnés » en utilisant des algorithmes standards pour produire des échantillons aux positions requises sur l'appareil de sortie. Les conditions de ré-échantillonnage sont abordées au chapitre Les critères de conformité.

3.7 L'application de filtres sur les régions peintes

SVG autorise l'application de filtres pour toute opération de peinture (voir Les effets de filtre.)

Dans ce cas, le résultat doit être comme si les opérations de peinture avait été appliquées sur un canevas intermédiaire, initialisé en noir transparent et d'une taille déterminée par les règles données au chapitre Les effets de filtre, ce canevas étant ensuite filtré selon les processus définis dans Les effets de filtre.

3.8 Le rognage, le masquage et l'opacité de l'objet

SVG permet que toute opération de peinture se limite à une sous-région sur le dispositif de sortie par rognage et masquage. Ceci est décrit au chapitre Le rognage, le masquage et la composition.

Le rognage utilise un tracé pour définir la région du dispositif de sortie dans laquelle la peinture peut s'appliquer. Toute opération de peinture, effectuée dans le champs d'application du rognage, doit être rendue de telle façon que seules les parties de la sortie, qui tombent à l'intérieur de ce champs, soient concernées par cette opération. On peut se représenter un tracé de rognage comme un masque où les pixels qui se trouvent en-dehors du tracé sont noirs avec une valeur alpha de zéro et les pixels en-dedans du tracé blancs avec une valeur alpha de un. On définit « en-dedans » selon les mêmes règles utilisées pour déterminer l'intérieur d'un tracé pour la peinture. Le tracé de rognage est en général anti-aliasé sur les appareils en basse résolution (voir la propriété 'shape-rendering'). Le rognage est décrit dans la section Les tracés de rognage.

Le masquage utilise la luminance des canaux de couleur et le canal alpha d'un élément SVG appelé pour définir un jeu supplémentaire de valeurs alpha qui sont multipliées avec les valeurs alpha déjà présentes dans les graphiques sur lequel ce masque est appliqué. Le masquage est décrit à la section Le masquage.

On peut spécifier également une opération de masquage supplémentaire en appliquant une opacité « globale » sur un jeu d'opérations de rendu. Dans ce cas, le masque est infini, celui-ci ayant une couleur de blanc et un canal alpha avec la valeur d'opacité indiquée (voir la propriété 'opacity'.)

Dans tous les cas, l'implémentation SVG doit se comporter comme si toutes les opérations de peinture et de filtre sont d'abord effectuées sur un canevas intermédiaire, initialisé au noir transparent. Ensuite, les valeurs alpha sur ce canevas intermédiaire sont multipliées par les valeurs alpha implicites du tracé de rognage, celles du masque et celles de la propriété 'opacity'. Le canevas résultant est composé dans l'arrière-plan en utilisant une composition alpha simple. Ainsi, si une région du dispositif de sortie est peinte selon une opacité de groupe de 50% avec une peinture rouge opaque suivie d'une peinture verte opaque, le résultat final serait équivalent à région qui aurait été peinte avec la peinture verte et une opacité de 50%. La raison en est que la peinture verte opaque oblitère complètement la peinture rouge sur le canevas intermédiaire avant le rendu de celui-ci comme un tout sur le dispositif de sortie.

3.9 La composition avec le parent

Les fragments de document SVG peuvent être semi-opaques. Dans de nombreux environnements (par exemple, les navigateurs Web), le fragment de document SVG passe par une étape de composition finale dans laquelle le document comme un tout est fondu de manière translucide dans l'arrière-plan du canevas.