Les filtrages 3D : présentation et explication

Le par Manuel D. C.  |  5 commentaire(s)
Article n° 229 - Les filtrages 3D (120*120)

Depuis toujours, les éléments graphiques d'un jeu vidéo sont soumis aux contraintes matérielles, et permettent aux développeurs de recréer un univers bien particulier. Un univers correspondant à leur vision et indispensable pour permettre au joueur de s'immerger dans le jeu. Et si l'évolution matérielle permet d'atteindre un niveau de modélisation 3D toujours plus élevé, toujours plus proche du réalisme de la photo, il en résulte de nouveaux besoins de filtrages pour répondre et s'adapter aux résolutions toujours plus élevées de nos écrans. L'occasion d'expliquer les différents filtrages mis à notre disposition et leur utilité.

L'environnement 3D

Pour représenter un environnement 3D (décors, personnages, etc.), on utilise essentiellement le polygone qui est une forme géométrique fermée en 2D et composée de plusieurs points et segments. Et c’est en assemblant les polygones entre eux, que l’on parvient à créer des environnements, des objets, des personnages complexes en 3D dans les jeux vidéo.

Une fois créées, les formes 3D sont représentées sous leur forme la plus simple, c'est-à-dire en « fil de fer ». Il faut alors appliquer des textures sur la surface 3D pour ajouter la couleur et les différents effets.
Modélisation       Image finale

Par définition, la texture est composée d’un ensemble de pixels 2D (Picture Element). Mais en appliquant la texture sur une surface 3D, ces pixels sont alors déformés et constituent un texel (TEXture ELementS). Le texel représente la plus petite unité graphique 2D appliquée à une surface et peut occuper l’espace de plusieurs pixels ou au contraire, être inférieur à la taille d’un pixel.

Pour enrichir le rendu 3D, ces textures contiennent d’autres informations permettant de définir quels polygones seront visibles ou masqués, quelles déformations devront être appliquées sur la surface 3D, ou encore quels motifs et effets utiliser.

Par facilité, on pourrait appliquer une même texture sur une surface 3D. Mais si cette surface 3D s’avère volumineuse, les besoins en mémoire et en bande passante deviennent tels que la carte graphique aura besoin de plusieurs « passes » pour calculer et appliquer la texture. Ce qui implique une chute de performance conséquente. Il est donc préférable d’appliquer de nombreuses « petites » textures sur la surface 3D. Les besoins en ressources sont alors moindres et la carte graphique est alors capable de le faire en une seule passe.

En contrepartie, l’utilisation de plusieurs textures introduit un problème. On voit en effet apparaître une sorte de jointure entre chaque texture. Sans oublier qu’en appliquant les textures sur une surface 3D, les texels subissent des transformations et/ou des déformations qui introduisent un effet de pixellisation, également appelé aliasing.

../..



Les filtrages bilinéaire et trilinéaire

Introduit par 3dfx, le filtrage bilinéaire permet de limiter cet effet de pixellisation (Aliasing), et de gommer ces jointures caractérisant la frontière entre chaque texture. Pour aller un peu plus loin, le filtrage bilinéaire consiste à interpoler en 2D (axes x, y), la couleur de quatre texels d’une texture, afin d’obtenir la couleur du cinquième texel. Les textures en premier plan sont alors lissées, et l’aliasing en arrière plan est légèrement réduit. Ceci s’explique par le fait que les textures conservent leurs dimensions, que ce soit en premier plan ou en arrière plan.

Filtrage Bi_Tri
Sur l'image de gauche, on remarque bien que le filtrage bilinéaire génère un flou assez
grossier en arrière plan ainsi que l'effet de pixellisation en premier plan.
Avec le filtrage trilinéaire, on réduit cet effet de flou tout en améliorant le niveau de détail.
 


La technique du mip-mapping permet de résoudre ce problème. Le mip-mapping permet de créer plusieurs textures de taille intermédiaire et identiques à la texture originale, avant de les appliquer sur la surface 3D. Pour cela, on utilise la texture de base pour créer une seconde texture à une résolution inférieure de moitié. Puis on recommence autant de fois que nécessaire. Prenons l’exemple d’une texture de 512 x 512 pixels. On obtiendra des mips-maps de 256 x 256 pixels, 128 x 128 pixels pour le mip-map suivant, puis 64 x 64, 32 x 32, 16 x 16, etc.

De cette façon, on peut adapter le niveau de détail en fonction de l’éloignement ou du rapprochement de la texture. Ce qui réduit davantage l’effet d’aliasing en arrière plan. À noter que la quantité mémoire nécessaire est également réduite, puisqu’on utilise des textures de tailles plus petites.

Mais comme rien n’est jamais parfait, un nouveau problème fait son apparition avec la transition notable d’un mip-map à un autre qui est visible. Le filtrage trilinéaire a alors été mis au point pour réduire cet effet de transition entre plusieurs mip-maps. S’appuyant tout simplement sur le filtrage bilinéaire, le filtrage trilinéaire permet de filtrer les mip-maps, en plus des textures. Mais cette fois-ci, l’interpolation s’effectue dans un espace en 3D (axes x, y et z).


    FarCry bilinéaire

Sous Far Cry, en utilisant le filtrage bilinéaire,
on remarque que le sol est moins détaillé et plus flou
en regardant au loin


   FarCry Trilinéaire
          
En utilisant le filtrage trilinéaire, on distingue légèrement mieux les dalles du sol.

../..


Le filtrage Anti Aliasing ou Full Scene Anti Aliasing (FSAA)

Egalement connu sous le nom d’anti-crénelage, l’anti-aliasing permet d’adoucir l’effet « d’escalier » (pixellisation) apparaissant sur les bords de chaque objet, provoqué par l’insuffisance de la définition d’une image. Si par le passé, le passage à une résolution plus élevée permettait de réduire cet effet indésirable, il n’est pas toujours possible d’utiliser une résolution plus élevée compte tenu des contraintes matérielles. Car une résolution plus élevée implique une plus grosse charge de travail du GPU entraînant une grosse chute de performances et de la jouabilité dans un jeu. Ou d’autre part, si vous ne possédez qu’un écran pouvant afficher une résolution maximale de 1280 x 1024 pixels, ce qui est pour le moins courant.


hl2_2 sans AA

On distingue aisément l'effet d'escalier sur tous les contours du véhicule
(fenêtre, porte latérale, barre en arrière plan...)


    hl2_2 avec AA

En activant l'anti-crénelage, on réduit distinctement cet effet d'escalier.


Le principe de l’anti-aliasing est assez proche du filtrage de texture, puisque cette technique mélange la couleur de plusieurs pixels adjacents pour déterminer la couleur à appliquer à un pixel. Ce qui permet d’appliquer un dégradé de couleur sur chaque dent-de-scie ou crénelage. Il en résulte un léger flou qui réduira cet effet d’escalier (c’est en réalité un effet d’optique donnant l’impression d’une continuité). À la différence près que ce pixel est ici ajouté pour augmenter le nombre de pixels, et la définition.

Aujourd’hui, c’est surtout la technique du FSAA (Full Scene Anti Aliasing) qui est utilisée. Celle-ci ne s’applique plus seulement sur un objet, mais sur une image 3D complète. Les techniques d’anti-crénelage diffèrent du constructeur ATI à nVidia, et l’on distingue essentiellement deux types différents.

Technique mise au point par 3dfx, le super-sampling permet de calculer une image 3D, par interpolation, dans une résolution supérieure, avant d’être filtrée dans une résolution inférieure.
Cette technique filtre la totalité d’une scène 3D (bordures, textures,…), et offre d’excellents résultats. En contrepartie, elle consomme beaucoup de ressources, et entraîne une forte chute des performances.

hl2_1 sans AA

Suivant l'angle de vision, les contours de certains objets peuvent afficher une continuité
n'indiquant aucun effet d'aliasing apparent. Mais il suffit de se déplacer, et donc de
changer d'angle, pour que les textures soient déformées, entrainant au passage
un effet d'aliasing plus prononcé.


    hl2_1 avec AA

Suivant la puissance de calcul de votre carte graphique, vous pourrez échelonner
le filtrage anti-crénelage pour que cela ne se répercute pas trop sur la jouabilité.



Moins gourmand, le multi-sampling ne s’applique que sur les extrémités des polygones, et permet de calculer plusieurs images (décalées les unes des autres d’un ou plusieurs pixels) d’une même scène 3D. Ces images sont ensuite superposées pour recréer la scène 3D à afficher. En optant pour un réglage FSAA 2X, le multi-sampling calculera deux images pour recréer l’image finale. Tandis qu’en utilisant le super-sampling, on calculera une image deux fois plus grande avant de filtrer l’image et de réduire la résolution. Les constructeurs utilisent des algorithmes de filtrage anti-crénelage plus complexes en mélangeant par exemple le super-sampling avec le multi-sampling, afin d’associer le meilleur filtrage aux performances.

Mais aujourd’hui, ces techniques servent essentiellement de base à ATI et nVidia qui utilisent des algorithmes d’anti-crénelage optimisés, plus complexes et offrant de meilleurs résultats en général. L’inconvénient du FSAA reste, quant à lui, de générer un effet de flou. En particulier sur les petits détails.

../..



Le filtrage Anisotropique

Comme nous l'avons vu précédemment, le mip-mapping permet de réduire l'effet de pixellisation "brouillon" et rend invisible les transitions entre chaque mip-maps. Mais en contrepartie, le passage d'un mip-map à un autre occasionne une perte de résolution. Les textures en arrière plan sont alors moins détaillées, et un effet de flou "grossier" apparaît.

Le filtrage anisotropique (Anisotropic Filtering ou AF) permet de corriger ceci en interpolant un plus grand nombre de texels. Car contrairement à la technique du mip-mapping, le filtrage anisotropique prend en compte deux informations : l’orientation et l’angle de la surface 3D. Il en résulte un gain en précision et en détail, tout en réduisant cet effet de flou notable.

Pour illustrer le filtrage anisotropique, nous avons réalisé quelques captures. A commencer par le jeu Half Life 2: episode 1.


hl2 sans Aniso     hl2 avec Aniso


Sur la capture de gauche, il suffit d'observer le sol en partant du milieu vers le fond. On remarquera un effet de flou "grossier". Au contraire, sur la capture de droite, nous avons activé le filtrage anisotropique. Ce qui a pour conséquence de réduire cet effet de flou, en améliorant sensiblement le niveau de détail du sol.


FarCry Aniso 2X     FarCry Aniso 4X
                            Filtrage anisotropique 2x                           Filtrage anisotropique 4x

  FarCry Aniso 8X
Filtrage anisotropique 8x

Nous avons cette fois-ci utilisé le filtrage anisotropique sous Far Cry. En partant d'en haut à gauche,  vers la droite, puis en bas au centre, nous avons appliqué un filtrage anisotropique 2X, 4X puis 8X. Si la différence entre le filtrage anisotropique 2X et 8X est facilement notable, la différence entre un filtrage anisotropique 4X et 8X l'est nettement moins. Dans ce cas, le filtrage anisotropique entrainant une baisse des performances, il sera plus intéressant d'opter pour un filtrage intermédiaire (ici 4X) alliant à la fois performances et qualité d'image.

Suivant les jeux et la carte graphique utilisés (chaque constructeur utilisant ses propres algorithmes "fait maison"), l'impact du filtrage anisotropique n'est pas le même.

../..



Le High Dynamic Range Rendering (HDR)

Effet à la mode, le rendu HDR (High Dynamic Range Rendering) permet « simplement » d’obtenir des effets de lumière plus aboutis en utilisant une plage dynamique plus étendue. Bien que ce soit en réalité plus compliqué, de nombreux effets pouvant être ajoutés et traités (bloom / glare, motion blur, tone mapping, etc.), nous simplifierons en affirmant que le rendu HDR permet de bénéficier d’une palette de couleurs moins ternes, d’une plus grande intensité de lumière, d’effets d’éblouissements, de plus de contraste, etc. On peut ainsi mieux adapter la gamme de couleur perçue en fonction de l’environnement, et obtenir une meilleure réflexion de la lumière sur l’environnement pour encore plus de photo réalisme.

Comme ici, sous Far Cry. Avec le rendu HDR activé, on redécouvre un tout autre jeu.

FarCry sans HDR
Avec un rendu 3D classique, la lumière et la réflexion de celle-ci sur l'environnement
offrent une intensité assez "fade".

    FarCry avec HDR
En utilisant le mode de rendu HDR, l'intensité lumineuse est plus proche de la réalité,
et on observe davantage de nuances dans les parties sombres.



Avec Half-Life 2, les effets sont également saisissants et donnent une toute autre dimension au jeu (à gauche sans HDR, à droite avec).

HL2_1 sans HDR     HL2_1 HDR


HL2_2 sans HDR     HL2_2 HDR

Les zones obscures sont davantage nuancées, et la réflexion de la lumière sur chaque élément du décor est poussée à l'extrême. L'impression de se trouver à l'intérieur d'un monument religieux est accentuée. L'immersion dans le jeu n'en est que meilleure. Seul le taux de contraste de votre moniteur LCD pourra limiter le rendu HDR à l'affichage.

../..


Trouver le bon compromis avec les filtrages

Si l'intérêt des filtrages que nous venons de voir n'est pas à démontrer, vous devrez toutefois adapter le niveau de filtrage en fonction de chacun de vos jeux.

Evitez par exemple de vous contenter de la détection automatique effectuée par votre jeu pour adapter le niveau de qualité visuel. Ce type de détection privilégie les performances au détriment du rendu 3D de qualité, comme c'est par exemple le cas avec Oblivion. Notre Radeon X1950Pro a par exemple été mal détectée par le jeu, au point de régler le rendu 3D des textures en basse qualité. Plutôt frustrant lorsque l'on découvre la rendu de l'eau. Mais après quelques modifications, le résultat est plus que satisfaisant et on redécouvre une surface de l'eau plus réaliste.

Oblivion basse qualité
En laissant le moteur du jeu régler le rendu 3D automatiquement en fonction
de votre configuration PC, on privilégie les performances à l'aspect visuel.
Comme c'est le cas ici avec le rendu de l'eau sous Oblivion.


    Oblivion haute qualité
En réglant le rendu 3D manuellement, on obtient un rendu de l'eau et
de l'environnement bien plus réaliste. On redécouvre le jeu Oblivion.

Tous les jeux ne requièrent pas forcément l'emploi de filtrages. Comme par exemple les jeux de stratégie en temps réel. Si le Seigneur des Anneaux : la bataille pour la terre du milieu II n'offre aucun filtrage dans les options graphiques, il reste possible de forcer le filtrage anisotropique et l'anti-crénelage en passant directement par les pilotes de votre carte 3D. Mais cela reste sans aucun intérêt, compte tenu de l'angle et la distance de vue.

LOTR 2
Les jeux de stratégie en temps réel n'intègrent généralement pas de filtrages
Anti-Aliasing ou Anisotropique avec leur moteur de rendu 3D.



         LOTR 2LOTR 2_2
L'angle de vue sur ce genre de jeu étant assez éloigné pour avoir une meilleure
vue d'ensemble du champ de bataille, on ne verrait absolument aucune différence
graphiquement. Que les différents modes de filtrages soient activés ou non.


Pour finir, il serait vraiment dommage (même carrément stupide) de ne pas profiter des filtrages avec des cartes graphiques puissantes, mais abordables telles que la RADEON X1950Pro ou encore la X1950XTX. Néanmoins, l'utilisation des filtrages occasionne un coût en performance réduisant la jouabilité, il vous faudra trouver le bon équilibre entre performance et qualité de filtrage, pour prendre plaisir à jouer tout en régalant vos yeux.

../..


Lexique des termes liés aux filtrages 3D


Polygone : figure géométrique fermée, composée de points et de segments.
Elément de base pour la modélisation en 3D.

Pixel (Picture Element) : unité de base d'une image numérique.

Texel (Texture Element) : unité de base d'une texture.

Interpolation : opération consistant à calculer une valeur intermédiaire.

Filtrage bilinéaire : technique permettant d'interpoler en 2D (suivants les axes x et y), les texels d'une texture que l'on change de taille.

Filtrage trilinéaire : technique permettant d'interpoler en 3D (suivants les axes x, y et z), les texels d'une texture que l'on change de taille.

Mip-mapping : technique permettant de créer plusieurs textures de taille intermédiaire et identiques à la texture originale, avant des les appliquer sur la surface 3D.

Aliasing : discontinuité dans la représentation numérique d'un objet. Une ligne droite sera ainsi perçue comme un escalier suivant l'angle de vision.

FSAA (Full Scene Anti Aliasing) : filtrage Anti-Aliasing appliqué à toute une image.

Temporal Anti-Aliasing : technique d'Anti-Aliasing s'appuyant sur la perception rétinienne. Le Temporal Anti-Aliasing applique un filtrage anti-crénelage différent à chaque image. Cette technique active par défaut le V-sync, et fonctionne de manière optimale avec un framerate supérieur ou égal à la fréquence de rafraichissment du moniteur. En dessous, un effet de scintillement désagréable apparaît.

Adaptive Anti-Aliasing et Transparency antialiasing : technique d'Anti-Aliasing s'appuyant sur les techniques du super-sampling pour filtrer les textures de type alpha (grillages, barrières...).

Alpha :  élément indiquant le niveau de transparence d'un pixel, d'un texel ou d'une texture.

Anisotropie : qualité d'un milieu dont les propriétés varient en fonction de l'angle et de la direction.

Filtrage Anisotropique : technique permettant d'améliorer la netteté en supprimant le flou sur les textures à moyenne et longue distance.

High Dynamic Range (HDR) : technique de rendu dynamique permettant d'afficher plus de contraste, et des effets de lumière de meilleur qualité, et plus riches.

V-sync : synchronisation de la fréquence de rafraichissement des images par seconde d’un moniteur avec la carte graphique.



  • Partager ce contenu :
Vos commentaires
Trier par : date / pertinence
Zobiuk offline Hors ligne Héroïque avatar 745 points
Le #169989
Un texel, c'est un TEXture ELement, soit un pixel sur une texture...:jap: La définition sur la premiere page de l'article est éronnée, à mon sens
Le #169990
super dossier bien expliqué pour les gros amateur comme moi
je vais revoir les reglages de mes jeux maintenant...
Manuel D.C. offline Hors ligne Héroïque avatar 792 points
Le #169991
Non, un Texel ce n'est pas un pixel sur une texture Zobiuk...Comme je l'ai dit, le texel représente la plus petite unité graphique 2D appliquée à une surface et peut occuper l?espace de plusieurs pixels ou au contraire, être inférieur à la taille d?un pixel.
Donc si tu pouvais être plus précis ca serait sympa
YoTsumi offline Hors ligne Héroïque avatar 721 points
Le #169992
Merci pour ce dossier trés intrustif !

J'avoue que tout ces filtres sa restait trés floue pour moi !
nemorensis offline Hors ligne Vénéré avatar 4635 points
Le #170046
Super! Et un grand merci pour le rédacteur !
icone Suivre les commentaires
Poster un commentaire