Menu
jeuxvideo.com / Actualités à la une / Derniers dossiers / Au Clair de la Tech : Plongée dans la jungle des paramètres graphiques des jeux PC /

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief - Au Clair de la Tech : Plongée dans la jungle des paramètres graphiques des jeux PC

Page Dossier
Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief
Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief
PC
Partager sur :

La gestion des textures est un élément fondamental du rendu 3D, car elle a un impact direct et très important sur la qualité de l'image affichée à l'écran. Une gestion qui passe notamment par des opérations de filtrage. Celles-là même qui avaient fait la gloire de la 3dfx en son temps.

Prenons quelques instants pour revenir aux bases de la gestion des textures : dans le cadre du rendu d’une scène 3D, les textures sont de simples images que l'on vient apposer sur des polygones, qui eux-même, vont former des objets, des éléments de décor, etc... Toutefois, selon le point de vue qui sera utilisé pour calculer l'image d'une scène 3D, ces textures plaquées apparaitront sous différents angles, et à diffentes distances. De fait, un pixel de l'image ne correspondra jamais à un pixel d'une texture (nommé Texel). En l’absence de filtrage, c’est la couleur du texel le plus proche qui est appliquée, afin de colorer le pixel lui correspondant sur l'image . Cette solution est évidemment très performante, mais le rendu visuel a une tendance à tourner à la bouillie, en particulier lorsque la texture est plus petite que l’élément sur lequel elle est plaquée (on se retrouve alors avec des gros carrés uniformes).

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief

C'est là qu'intervient la notion de filtrage. Ce procédé va permettre d'adapter les textures à la forme et à la taille des objets tels qu'ils apparaitront dans l'image finale, la couleur exacte de chaque pixel étant calculé à partir de celle des texels. Le but est d'obtenir des textures qui conservent la finesse de leur motif et de leur relief en toutes circonstances. Avec le temps, les techniques de filtrage se sont largement développés, comme vous allez le constater.

M comme Mipmapping

Il s'agit la de la solution la plus triviale pour limiter cette pixelisation dont nous parloins plus haut. Elle consiste simplement à avoir plusieurs versions de chaque texture, dans différentes tailles, baptisée mipmap. En sélectionnant la version la mieux adaptée à la taille de l’objet à texturer, on réduit les défauts visuels liés au redimensionnement de la texture. Revers de la médaille : on peut par contre engendrer un effet très désagréable quand une texture est répétée plusieurs fois de suite sur une surface en perspective (par exemple une façade d’immeuble vue de biais ou une route) : on voit nettement les passages d’une taille de texture à l’autre.

Le mipmapping permet d’augmenter les détails et de réduire l’aliasing des textures

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief

B comme Bilinear filtering

Filtrage le plus répandu, le filtrage bilinéaire consiste à calculer la couleur de chaque pixel non pas en prenant celle du texel le plus proche, mais en faisant une interpolation à partir de quatre texels (le plus proche dans chaque direction), et en calculant une moyenne pondérée par la distance. Ce traitement adouci les contours lorsque la texture est agrandie, et réduit l’aliasing lorsqu’elle est réduite.

Le filtrage bilinéaire a l'avantage de réduire nettement les effets de pixelisation

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief

Le filtrage bilinéaire ne s’appliquant qu’au niveau d’une même texture, il a par contre tendance à rendre plus visibles les frontières entre les différentes textures. Dans le cas d’un objet en perspective ou plusieurs tailles d’une même texture sont utilisées, le filtrage bilinéaire adouci donc le rendu de chaque section, mais accentue la frontière entre deux sections.

T comme Trilinear filtering

Le filtrage trilinéaire est une évolution du filtrage bilinéaire qui vise à rendre moins visibles les différences entre les différents mipmap. Il s’agit en fait d’un filtrage bilinéaire, mais appliqué deux fois, sur deux tailles de mipmap différentes (normalement, la plus petite taille supérieure à la taille de l’objet et la plus grande taille inférieure à la taille de l’objet). Une interpolation linéaire est ensuite appliquée pour combiner les couleurs obtenues par les deux filtres bilinéaires. Bien que le filtrage trilinéaire améliore la qualité du rendu, il faut avouer que le gain visuel n’est pas forcément flagrant, et ne justifie pas toujours le surcoût en puissance de calcul.

A comme Anisotropic filtering

Les filtrages bilinéaires et trilinéaires donnent des résultats corrects pour tous les objets situés dans le même plan que la surface de rendu (par exemple, un mur vu de face), mais leur rendu se dégrade (il devient flou) d’autant plus que l’angle entre la surface de l’objet et la surface de rendu est grand. En effet, dans ce cas un mipmap bien adapté dans un sens ne l’est pas forcément dans l’autre. Imaginez par exemple qu’une texture soit disponible avec des mipmaps de 32x32, 64x64, 128x128 et 256x256 et que cette texture doive être appliqué à un carré vu sous un angle tel qu’il devient un trapèze de 256 pixels de large à la base et seulement 32 pixels de hauteurs. Dans le sens de la largeur, c’est le mipmap 256x256 qui devrait être le plus adapté, alors que dans le sens de la hauteur c’est le mipmap 32x32 qui est le mieux adapté.

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief

C’est là qu’intervient le filtrage anisotrope : avant d’appliquer le filtrage bilinéaire ou trilinéaire, le filtrage anisotropic va tout d’abord recalculer le mipmap sous différents angles, pour obtenir des mipmap en forme de trapèze, puis c’est le mipmap le mieux adapté qui sera passé à la moulinette du filtre bi/trilinéaire. Le résultat est un rendu beaucoup plus précis sur les objets vus en perspective, surtout lorsqu’ils sont éloignés. Dernière précision : le filtrage anisotropique peut généralement se régler sur plusieurs niveaux (2x, 4x, 8x ou 16x). Plus le niveau est élevé, plus le filtre va produire des mipmap vus sous des angles élevés.

E Comme Environment mapping

L’environment mapping ou reflection mapping est une technique utilisée pour simuler des surfaces réfléchissantes. Il s’agit pour ce faire d’appliquer à l’objet une texture spécifique, qui représente la scène censée se réfléchir sur la surface. Le changement d’angle de la surface réfléchissante est alors reproduit en déplaçant et en déformant la texture sur la surface. Cette texture peut être soit une texture pré-calculée, soit, pour un meilleur résultat, une texture recalculée en temps réel en effectuant un rendu de la scène réfléchie.

B comme Bump mapping

Le bump mapping est un « détournement » du principe du texturing pour créer du relief sur une surface, sans avoir à ajouter de polygones supplémentaires (comme c'est le cas pour la Tessalation, par exemple). Une texture spécifique, la bump map, est appliquée pour créer des ombres sur la surface de l’objet et simuler ainsi du relief. Il peut être combiné à l’environment mapping pour simuler des réflexions sur des surfaces bosselées (par exemple, un plan d’eau) sans avoir besoin de multiplier les polygones.

Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief
Gestion des textures et performances en jeu
Autrefois, la gestion des textures monopolisaient une grande partie des capacités de calcul des cartes graphiques. Aujourd'hui, ces opérations sont triviales pour tous les GPU modernes. De fait, la gestion des textures n'aura que rarement un impact sur les performances d'un jeu. Et lorsque ce sera le cas, il s'agira d'un impact indirect : plus la qualité des textures augmente, plus ces dernières prennent une place importante en VRAM. Et si la mémoire vidéo venait à manquer, des échanges plus soutenus interviendraient avec la RAM, voire, avec les unités de stockage, engendrant des problèmes de saccades. A titre d'information, et selon les essais que nous avons réalisés, les triple A sortis ces 6 derniers mois consomment entre 1,5 et 3,5 Go de VRAM, selon le niveau de textures choisi. Quant au filtrage, là encore, il restera peu consommateur en ressources GPU, un FA 4X restant la plupart du temps indolore.
Mis à jour le 25/04/2016
PC

COMMENTAIRES

Vous devez être connecté pour poster un commentaire.
Jtbtr
Jtbtr
MP
le 25 avr. 2016 à 14:47

Dès la première phrase :
"La gestion des textures est l’un des éléments fondamentals du rendu 3D"

fondamentals ? :hap:

Lire la suite...
scarfacemperor
scarfacemperor
MP
le 25 avr. 2016 à 13:53

On comprend vraiment le niveau des textures actuelles quand on se met à admirer sous tous les angles un objet en métal :p)

Lire la suite...
Top commentaires
Jtbtr
Jtbtr
MP
le 25 avr. 2016 à 14:47

Dès la première phrase :
"La gestion des textures est l’un des éléments fondamentals du rendu 3D"

fondamentals ? :hap:

Lire la suite...
Sommaire Dossier
  • Au Clair de la Tech : La gestion des textures : qualité, filtrage et relief
  • Au Clair de la Tech : L'anti-aliasing, ou la valse des sigles
  • Au Clair de la Tech : Occlusion ambiante, lens flare ou bloom : vers toujours plus de réalisme