Une solution simple consiste à garder un cache en lecture seule, et à invalider les données mises à jour lors d’une écriture. Le tout est suivi d’un bloc de 64 bits identique au bloc du DXT1. On pourrait croire que plaquer des textures sans autre forme de procès suffit à garantir des graphismes d’une qualité époustouflante. Le bloc de mémoire contiendra:. Acceptez En savoir plus.
| Nom: | dxt texture compression |
| Format: | Fichier D’archive |
| Système d’exploitation: | Windows, Mac, Android, iOS |
| Licence: | Usage Personnel Seulement |
| Taille: | 54.15 MBytes |
Ses cartes se trouvent notamment dans l’ipad, l’iPhone, et bien d’autres smartphones actuels. Elles prennent ainsi moins de place en mémoire vidéo. Pour comprendre l’idée, nous allons supposer que notre pixel est aligné avec deux autres texels. Il recommence l’opération avec les quatre texels de la mip-map de niveau de détail inférieur, et stocke le résultat dans un autre registre. De plus, cela pourrait créer des artefacts visuels: Le circuit qui s’occupe de calculer un filtrage trilinéaire est une amélioration du circuit utilisé pour le filtrage bilinéaire.
Comme je l’ai dit précédemment, nos textures sont du papier peint. Ce sont des images numériques comme les autres, que l’on va plaquer sur la surface d’un cimpression.
Cela peut permettre de simuler un matériau: Ces textures servent aussi à d’autres choses, comme simuler du relief via du bump-mapping, etc. Version PDF Version hors-ligne. Comme je l’ai dit, une texture est, en première approximation, une image qui stocke du papier peint. Cette image est donc composée de pixels.
Pour bien faire la différence entre les pixels d’une texture et les pixels de l’écran, les pixels d’une texture sont couramment appelés des texels.

Les cartes graphiques supportent divers formats de textures, qui servent à indiquer comment les texels sont stockés en mémoire. Chacun de ces texels sera attribué à un sommet. Attribuer un texel à un sommet consiste simplement à plaquer la texture sur notre objet géométrique.
Cette attribution est faite à la fabrication du modèle de l’objet: Chaque sommet contient donc des coordonnées de texture, en plus de sa position, de ses couleurs et de sa normale. Ces coordonnées de textures identifient quel texel appliquer sur le sommet. Elles précisent également la position du texel dans la texture. Par exemple, la coordonnée de texture peut dire: À partir de ces coordonnées de texture, un circuit placé dans la carte graphique se chargera d’aller lire le contenu de cette texture dans la mémoire vidéo.
Évidemment, cela ne marche que pour les pixels qui sont tout pile sur un sommet. Pour les autres, ce sont les coordonnées barycentriques qui sont utilisées pour déterminer quel texel utiliser. Sur certaines architectures assez anciennes, les textures disposaient conpression leur propre mémoire, séparée de la dxh vidéo.
Mais c’est du passé: On pourrait croire que simplement plaquer nos textures sur nos sommets sans aucune forme de procès suffit à rendre les graphismes de notre application d’une qualité époustouflante.
Seulement, il y a tedture léger problème avec cette technique: Nos texels sont appliqués sur une surface dans un espace 3D. Leur coordonnées sont donc des flottants. Une fois mappés sur la surface de l’écran, nos texels sont placés à une position bien précise.
dxt texture compression sur le forum NASCAR Thunder – –
Mais celle-ci n’est pas forcément exactement sur le pixel. Le sommet peut être un petit peu trop en haut, ou trop à gauche, etc. Pour résoudre ce problème, on peut appliquer une solution simple: Chaque pixel sera colorié avec le texel correspondant au sommet le plus proche. Autant être franc, le résultat est assez dégoûtant. Pour améliorer la qualité de l’image, la carte graphique va effectuer un filtrage de la texture.
Ce filtrage consiste à compressiion le texel à appliquer sur un pixel du mieux possible. La carte graphique va alors calculer les coordonnées du texel par un calcul mathématique compresdion simple. Suivant la qualité d’image voulue, on peut utiliser divers traitements.
Pour donner un exemple, voici ce que peut donner un filtrage. À gauche, pas de filtrage. Au milieu, un filtrage dit bilinéaire, utilisé dans pas mal de cartes graphiques. À droite, un filtrage bicubique, pas encore utilisé dans les cartes graphiques actuelles. La différence est flagrante.

Ce filtrage est réalisé par un circuit spécialisé: L’ensemble des circuits chargés de gérer les textures est donc composé de deux grands circuits:. Le plus simple de ces filtrages est le filtrage bilinéaire. Dans le cas le plus simple, le pixel est situé à égale distance des quatre texels.
Les cartes graphiques/Les unités de texture
Tout change quand le pixel n’est pas situé au centre du carré formé par les quatre texels environnants. Dans ce cas, le filtrage va effectuer une opération mathématique très simple qu’on appelle une interpolation linéaire. Pour comprendre l’idée, nous allons supposer que notre pixel est aligné avec deux autres texels. Dans ces conditions, on peut obtenir une approximation de sa couleur.
Pour cela, nous allons faire une première supposition: En supposant cela, on peut calculer la couleur de notre pixel par un petit calcul mathématique. Il suffit de calculer la pente de la courbe, en prenant un des deux texels comme point de départ.
Texture semi-transparente et compression ACE DXT1 –
Ensuite, il suffit de multiplier cette pente par la distance entre le texel choisi et le pixel. Et enfin, il faut ajouter la couleur de base texutre texel choisi. Seul problème, cela marche pour deux pixels, pas quatre. Avec quatre pixels, nous allons devoir calculer la couleur de points intermédiaires:.
Le calcul de la couleur de ces deux points s’effectue par interpolation linéaire, comme indiqué plus haut. Ces deux points sont alignés avec le pixel, et il suffit d’utiliser une troisième interpolation linéaire pour obtenir le résultat. Le circuit qui permet de faire ce genre de calcul est particulièrement simple. Celui-ci est composé de circuits, chacun étant chargé d’effectuer une interpolation linéaire, reliés comme suit:.
On trouve un circuit pour chaque composante de couleur de chaque texel: Utiliser des textures brutes a un léger désavantage. Si jamais cette texture est plaquée sur un objet lointain, une bonne partie des détails de la texture sera invisible pour l’utilisateur.
Par exemple, un objet assez lointain peut très bien ne prendre que quelques dizaines de pixels à l’écran. Plaquer une texture de pixels de côté serait vraiment du gâchis en termes de performances: De plus, procéder comme cela pourrait créer des artefacts visuels: Cela se voit à l’écran et donne un résultat assez perturbant.
Pour limiter la casse, les concepteurs de jeux vidéo utilisent souvent la technique du mip-mapping. Cette technique consiste simplement à utiliser plusieurs exemplaires d’une même texture, chaque exemplaire étant adapté à une certaine distance. Ce qui différenciera ces exemplaires, ce sera leur résolution. Le bon exemplaire sera choisi lors de l’application de la texture. Ainsi, les objets proches seront rendus avec la texture la plus grande par dans notre exemple.
Au-delà d’une certaine distance, les textures par seront utilisées. Encore plus loin, les textures par seront utilisées, etc. Évidemment, cette technique consomme de la mémoire RAM: On peut remarquer une chose: Pour faire en sorte que la bonne mip-map soit choisie, les circuits chargés de calculer l’adresse de la texture doivent recevoir des informations supplémentaires pour choisir la mip-map à appliquer.
De plus, ils doivent être adaptés pour calculer l’adresse du texel correctement: Pour faciliter ces calculs, les mip-maps d’une texture sont stockées les unes après les autres en mémoire. Pas besoin de se souvenir de la position en mémoire de chacune des mip-maps: Avec le mip-mapping, les textures sont un peu plus belles. Mais cette technique a un léger défaut: Par exemple, pensez à une texture de sol: La transition est malheureusement visible pour un joueur attentif.
Le filtrage trilinéaire permet d’adoucir ces transitions. Son principe est simple: Le filtrage trilinéaire fonctionne comme suit. Il consiste à effectuer deux filtrages bilinéaires: Les résultats obtenus lors des deux filtrages sont ensuite multipliés par des coefficients, avant de subir une interpolation linéaire. Le circuit qui s’occupe de calculer un filtrage trilinéaire est une amélioration du circuit utilisé pour le filtrage bilinéaire.
Activitysimulatorworld.net
Il est constitué d’un circuit effectuant un filtrage bilinéaire, de deux registres, d’un interpolateur linéaire et de quelques circuits de gestion, non-représentés. Son fonctionnement est simple: Il recommence l’opération avec les quatre texels de la mip-map de niveau de détail inférieur, et stocke le résultat dans un autre registre. Enfin, le tout passe par un circuit qui interpole les couleurs finales en tenant compte des coefficients, ces coefficients étant précisés dans des registres.
Bien sûr, il s’agit d’un schéma de principe: Qui plus est, ces huit pixels ne sont pas consécutifs en mémoire. Utiliser ce genre de circuit nécessiterait d’adapter la mémoire et le cache, ce qui ne vaut généralement pas la peine. Modifier le circuit de filtrage ne suffit pas.

Comme je l’ai dit plus haut, la dernière étape d’interpolation linéaire utilise des coefficients, qui lui sont fournis par des registres. Durant tout ce temps, ces coefficients doivent être mémorisés.
