Neural Texture Compression
La compression neuronale des textures stocke les textures sous forme de caractéristiques apprises et les reconstruit à la demande, ce qui réduit la mémoire graphique tout en préservant les détails fins.
La compression neuronale des textures (NTC) est une technique de compression avec perte qui stocke les textures des matériaux sous forme de caractéristiques apprises compactes et d'un petit décodeur neuronal. Le décodeur reconstruit les valeurs des textures lorsque le moteur de rendu en a besoin. En pratique, cette technique remplace de grandes collections d'images détaillant les surfaces par une description apprise plus compacte, réduisant les besoins en stockage et en mémoire graphique tout en préservant les détails visuels fins.
Karthik Vaidyanathan, Marco Salvi, Bartlomiej Wronski, Tomas Akenine-Möller, Pontus Ebelin et Aaron Lefohn, de NVIDIA, ont présenté en 2023 une méthode NTC influente à accès aléatoire dans Random-Access Neural Compression of Material Textures. Cette méthode compresse conjointement les textures d'un matériau et leurs mipmaps, c'est-à-dire les versions progressivement réduites des textures utilisées lorsque les surfaces apparaissent plus éloignées.
Fonctionnement de la compression neuronale des textures#
Un matériau à rendu physiquement réaliste utilise plusieurs cartes de texture alignées : la couleur de base décrit la couleur de la surface, les cartes normales décrivent les petites variations d'orientation de la surface et la rugosité contrôle la netteté des reflets. Ces cartes partagent une structure commune. Une rayure, par exemple, peut affecter plusieurs canaux au même endroit. NTC exploite ces corrélations en représentant les cartes ensemble dans un espace latent partagé, composé de vecteurs de caractéristiques compacts répartis sur des grilles spatiales. Un petit réseau neuronal, généralement un perceptron multicouche, décode ces caractéristiques en valeurs de matériau.
Pendant la compression, les grilles de caractéristiques et les poids du modèle du décodeur sont optimisés pour le matériau. Une fonction de perte de reconstruction mesure les écarts par rapport aux textures d'origine, et la rétropropagation fournit les gradients nécessaires à l'optimisation. La méthode d'origine utilise l'optimiseur Adam et combine les caractéristiques échantillonnées avec des informations de position et le niveau de mipmap demandé. Lors du rendu, une requête de coordonnées reconstruit le texel correspondant, l'équivalent d'un pixel pour une texture.
Cette structure hybride relie NTC aux représentations neuronales implicites, qui représentent les signaux au moyen de fonctions apprises dépendant des coordonnées. Sa capacité graphique distinctive est l'accès aléatoire : le moteur de rendu reconstruit à la demande les emplacements demandés dans les textures, ce qui permet l'inférence en temps réel pendant le calcul de l'ombrage.
Économies de mémoire et compromis sur le rendu#
NTC échange de la mémoire de texture contre du calcul du décodeur sur le GPU. Deux modes de déploiement illustrent particulièrement bien ce compromis :
- Inférence au chargement : Les textures sont décodées au chargement d'un élément et peuvent être converties en textures conventionnelles compressées par blocs BCn. Cela réduit la taille des éléments stockés et transférés tout en conservant l'empreinte mémoire de la représentation de destination une fois chargée.
- Inférence sur échantillon : les shaders décodent les texels demandés pendant le rendu, ce qui maintient la représentation neuronale en mémoire graphique et ajoute du travail de décodage à l’échantillonnage des textures.
Un troisième mode, l’inférence sur rétroaction, décode les tuiles de texture demandées dans un cache de textures creux. Ces choix déterminent où les économies de compression sont préservées et où le travail de décompression a lieu.
La démonstration originale de l’encrier utilisait des textures NTC de 4096 x 4096 texels par rapport à des textures compressées par blocs de 1024 x 1024 texels : 16 fois plus de texels avec 30 % de mémoire de texture en moins. Cette comparaison montre qu’il est possible de préserver davantage de détails de surface en haute résolution tout en utilisant une allocation de texture plus petite.
Applications et concepts connexes#
Le rendu 3D interactif est une application directe. Les développeurs compressent les ressources des matériaux pendant la préparation du contenu, puis intègrent le décodage au moteur de rendu. Avec le SDK NVIDIA RTX de compression neuronale des textures, ntc-cli compresse les ensembles de textures, NTC Explorer compare les paramètres et l’exemple de moteur de rendu affiche des ressources glTF. Le modèle FlightHelmet inclus comprend des matériaux précompressés permettant de tester les modes de rendu.
Le rendu neuronal désigne plus largement l’utilisation de composants appris dans la synthèse d’images. NTC reconstruit spécifiquement des textures de matériaux stockées ; la super-résolution reconstruit des images de plus haute résolution à partir d’images de plus basse résolution. Ces techniques interviennent à différents endroits d’un pipeline graphique.
La quantification de modèle réduit la précision numérique des paramètres et des activations du réseau. Ultralytics YOLO applique cette technique connexe de faible précision avec l’exportation TensorRT, qui produit des moteurs YOLO26 INT8 réduisant les besoins en mémoire du modèle et accélérant les charges d’inférence prises en charge.
Qualité de reconstruction et artefacts#
La qualité de NTC dépend du budget en bits et de la complexité des matériaux. Un nombre de bits par texel plus élevé offre davantage de capacité pour reconstruire les détails ; l’ajout de canaux à budget fixe accentue la pression de compression. Le rapport signal sur bruit de crête (PSNR), mesuré en décibels, quantifie la fidélité de la reconstruction : des valeurs plus élevées indiquent une erreur plus faible. Le décodage partagé peut aussi entraîner une fuite de caractéristiques entre les canaux, ce qui modifie les propriétés des matériaux reconstruits. Dans l’implémentation de NVIDIA, un canal de masque alpha explicitement désigné bénéficie d’un traitement spécial afin de préserver plus fidèlement les valeurs proches de 0 et de 1.










