structural-engineering-and-design
Le rôle de la Texturation virtuelle dans la gestion des environnements 3d à grande échelle
Table of Contents
Qu'est-ce que la Texturation virtuelle?
La texturation virtuelle est une technique de gestion de scène initialement popularisé dans les moteurs de jeu tels que id Tech 5 (utilisé dans Rage) et ensuite largement adoptée dans le rendu en temps réel. Au cœur de cette technique, la texturation virtuelle découple l'espace d'adresse logique de la mémoire GPU physique, permettant la création d'atlas de textures massives – parfois appelés mégatextures – qui peuvent couvrir des mondes de jeu entiers avec des détails uniques et non répétitifs. Au lieu de forcer le GPU à tenir la texture entière définie dans VRAM, seules les tuiles (ou pages) de la texture qui sont réellement visibles à l'écran résident en mémoire à tout moment. Ce système de streaming basé sur page est géré par un mécanisme de texturation virtuel : le GPU rapporte les tuiles nécessaires pour le cadre actuel, et le CPU planifie les données correspondantes à être diffusées à partir du disque ou d'un pool de textures compressées.
La technique a été initialement développée pour éviter le compromis traditionnel entre le budget de la mémoire de texture et la variété de surface. Sous mappage classique, les développeurs ont dû choisir entre répéter de petites textures (qui semblent carrelées et artificielles) ou utiliser une poignée de grandes textures uniques qui épuisent rapidement la VRAM. La texturation virtuelle fournit un terrain intermédiaire : elle traite l'ensemble de l'environnement comme une texture géante, ne faisant que diffuser la région d'intérêt au niveau approprié du mip. Cela permet d'attribuer à chaque mètre carré d'un paysage son apparence unique – chaque roche, chaque tache d'herbe et de saleté peut être distincte sans que des tâches de texture par objet soient distinctes.
Comment fonctionne la Texturation Virtuelle
Tableaux de page et flux de tuiles
Le cœur de tout système de texturation virtuel est une table de page – une structure de traduction gérée par le matériel qui map les coordonnées de texture virtuelle vers les emplacements de mémoire physique. Le GPU utilise la table de page pour calculer les tuiles 128×128 ou 256×256 pixels de la texture qui résident dans la mémoire GPU et qui sont manquantes. Un tampon de rétroaction enregistre ensuite les coordonnées de n'importe quelle tuile référencée mais non résidente, et cette information est renvoyée au CPU. Le CPU, à son tour, planifie les requêtes de streaming, parfois à partir d'un cache hautement prioritaire, pour charger les tuiles manquantes d'un fichier de texture massivement compressé stocké sur disque.
Rétroaction et diffusion de la granularité
Les moteurs modernes mettent en place un pipeline de diffusion en trois étapes : (1) le GPU rend une version à basse résolution de l'image tout en enregistrant simultanément les pannes de cache; (2) le CPU lit le tampon de rétroaction, prévoit le mouvement futur de la caméra et émet des demandes de chargement; (3) le système E/S décode les tuiles compressées et les transfère à la mémoire GPU. La granularité de la taille des tuiles affecte directement les performances : les tuiles plus grandes réduisent les pages-tables en hauteur mais augmentent les chances de chargement des données qui ne seront pas utilisées, tandis que les tuiles plus petites offrent un contrôle plus fin mais nécessitent plus de cycles CPU pour gérer la table de page.
Manipulation du Mip-Chain
La texturation virtuelle s'intègre également au mip-mapping. Au lieu de stocker une chaîne complète de mip pour toute la texture virtuelle, la table de page contient des tuiles de chaque niveau de mip. Le GPU échantillonne le niveau de mip correct basé sur des dérivés d'espace d'écran, et le même mécanisme de streaming garantit que seules les tuiles de niveau mip nécessaires sont résidentes.
Avantages dans les environnements à grande échelle
La texture virtuelle brille de façon éclatante dans les jeux ouverts et les environnements de simulation massifs où la surface est mesurée en kilomètres carrés plutôt qu'en mètres carrés.
- Détail unique dans le monde entier. Parce que la texture virtuelle peut être téraoctets de taille, chaque parcelle de terre, chaque face de falaise et chaque mur de construction peuvent avoir son propre aspect distinct. Les artefacts de carrelage qui endommagent la texture conventionnelle sont complètement éliminés.
- Retombée de la complexité de l'auteur Les artistes peignent une texture à haute résolution sur le modèle ou le paysage 3D, ou utilisent des techniques de projection pour mélanger plusieurs sources photographiques. Il n'est pas nécessaire de charger manuellement des centaines de cartes de textures individuelles dans un atlas partagé, ni de s'inquiéter du chevauchement texto-coordonné.
- Meilleure performance sur matériel limité. En streaming uniquement des tuiles visibles, la texturation virtuelle permet aux scènes qui nécessiteraient autrement 16–32 Go de VRAM pour fonctionner sur matériel avec seulement 4–8 Go. C'était un facteur critique dans l'original Rage fonctionnant sur Xbox 360 (qui n'avait que 512 Mo de mémoire unifiée).
- Charge de la grille et empreinte de mémoire inférieure pour la géométrie statique. Combiné à des schémas de compression efficaces tels que les codecs à base de blocs perdus (BCn ou ASTC), l'empreinte totale du disque peut être gérée, et la mémoire d'exécution est proportionnelle à la vue du frustum, et non à la taille du monde.
- Simpler le niveau de diffusion. La texturation virtuelle complète naturellement le niveau de diffusion des détails pour la géométrie.Les deux systèmes peuvent utiliser le même mécanisme de rétroaction, permettant une gestion des ressources plus cohérente.
Implémentation dans les moteurs de jeux modernes
Unreal Engine 4/5 – Système virtuel de texture
Epic Games introduit Runtime Virtual Texturing (RVT) dans Unreal Engine 4 et l'a étendu de façon significative dans UE5. RVT permet de transformer en temps réel les matériaux paysage et maillage statique en une couche de texture virtuelle, que d'autres matériaux (comme les couches de paysage en vertex) peuvent ensuite échantillonner. Cela élimine la nécessité de mélanger plusieurs entrées de matériaux par pixel pendant le rendu, réduisant massivement la complexité de l'ombrage. Le système de streaming en UE5 supporte jusqu'à 16 couches de texture virtuelle avec des pages de 128 à 1024 pixels et une résolution totale de 16384×16384 pixels par couche. Les développeurs peuvent également utiliser le système Virtual Heightfield Mesh conjointement avec RVT pour atteindre un terrain très détaillé sans contraintes triangle-budget traditionnelles.
Unity Texture avancée Streaming
Unity utilise une approche différente appelée Texture Streaming[ (partie des paramètres de qualité) qui exploite le streaming mip-map plutôt que la texturation virtuelle complète. Cependant, Unity Texture Render Pipeline (HDRP) comprend une fonctionnalité expérimentale de Texturation virtuelle qui fonctionne comme un système de rétroaction basé sur des tuiles semblable à des mégatextures traditionnelles. Le magasin d'actifs fournit également des plugins tiers tels que Texture Atlas Creator[ et Virtual Texture for Shader Graph qui mettent en œuvre la technique de table de page. Unity pointe vers une intégration plus étroite du streaming basé sur des tuiles, surtout pour les plateformes mobiles et AR/VR où les budgets de mémoire sont serrés. Vous pouvez en savoir plus sur Unity Texture Streaming Pipeline dans le .Unity Texture Streaming Manual[.
id Tech et mégatextures
Le concept de mégatexture original a été lancé par John Carmack et id Software dans Quake Wars: Enemy Territory (2007) et perfectionné dans Rage (2010). Le moteur id Tech 5 a utilisé une texture gigantesque (jusqu'à 128k×128k) pour tout le monde du jeu, avec une table de page matérielle dont les mises à jour ont été animées par des retours GPU. Les limites pratiques – en particulier la bande passante élevée nécessaire au streaming dur sur le matériel console – ont été partiellement abordées dans les itérations ultérieures en réduisant la résolution de texture mondiale et en utilisant une compression plus agressive. id Tech 6 (Doom 2016) a conservé le concept mais l'a appliqué de façon plus sélective, en utilisant la vitesse d'entrée et d'entrée du matériel et la capacité du moteur à charger asynchrone les carreaux sans dépasser le pipeline.
Défis et solutions
Artéfacts et pop-in en streaming
Le problème le plus visible avec la texture virtuelle est l'apparition de tuiles à basse résolution pendant que les versions à haute précision sont chargées. Ce --pop-in-- peut être jarring si le système de streaming ne peut pas suivre le mouvement de la caméra. La solution consiste à pré-fetching soigneusement algorithmes qui anticipent la trajectoire de la caméra et charge les tuiles bien avant qu'ils deviennent visibles. De nombreux moteurs utilisent également une technique --blur-ou -fade-in--où la tuile à haute résolution entrante se mélange avec la tuile à basse résolution existante sur un ou deux cadres, éliminant la transition dure.
Bande passante et stockage
La plupart des implémentations utilisent BCn (compression par blocs) pour les données d'exécution et un schéma de compression plus élevée (comme LZ4 ou Kraken) pour le fichier d'archive. La densité de compression doit être équilibrée par rapport à la nécessité d'un accès aléatoire à grande vitesse au niveau des tuiles. Une approche consiste à stocker les tuiles dans un système de fichiers qui utilise un hachage spatial pour placer les tuiles adjacentes dans l'espace mondial, en minimisant la recherche pendant la diffusion.
Mémoire de la Table de Page
Pour une texture virtuelle avec 128k×128k pixels et 128×128 tuiles, il y a 1024×1024 tuiles, ce qui équivaut à environ 4 millions d'entrées de table de page. Si chaque entrée est de 4 octets (une adresse physique), le tableau utilise 16 Mo de mémoire GPU. Ceci est normalement acceptable, mais si le moteur supporte plusieurs textures virtuelles (p. ex., des textures diffuses, normales et rugosités distinctes), la mémoire de table de page multiplie. Certains moteurs l'atténuer en utilisant une table de page multi-niveaux (similaire à la mémoire virtuelle OS) qui réduit le nombre total d'entrées résidentes ou en partageant une seule table de page sur plusieurs canaux de texture combinés dans une tuile RGBA.
Intégration avec le rendu différé
Les rendus différés nécessitent plusieurs textures (GBuffer) par pixel. La texturation virtuelle doit être appliquée à chacune de ces textures individuellement, ce qui multiplie le nombre de canaux de diffusion. Une alternative est de stocker l'ID du matériau dans une texture virtuelle et ensuite d'échantillonner les propriétés du matériau d'un ensemble de tuiles séparé. Cela découple la complexité et permet au système de diffusion de se concentrer sur les canaux les plus sensibles à la bande passante.
Support de Texturation Virtuelle du Matériel
Les GPU modernes de NVIDIA (à partir de la série 9 et surtout de l'architecture Turing) incluent le support matériel pour les tables de pages et la texturation virtuelle basée sur des carrelages via l'unité .La gestion virtuelle de la mémoire.Le GPU peut désormais gérer les pages directement manquantes, en envoyant une faute au pilote au lieu d'exiger du CPU qu'il effectue un sondage sur un tampon de rétroaction. Cela réduit la latence et décharge le travail du CPU. L'architecture RDNA prend également en charge des fonctionnalités similaires par son moteur DMA et les fonctionnalités .
Texturation virtuelle au-delà des jeux
Dans les simulateurs de vol, comme Microsoft Flight Simulator 2020, le système de streaming est en fait une texture virtuelle massive d'imagerie satellitaire et de données d'élévation. Bien que non identique à la technique classique de mégatexture (le simulateur diffuse asynchronement des tuiles géométriques entières), il partage la même idée de base : seul le domaine d'intérêt est chargé à pleine résolution, et le reste reste reste comme données proxy de faible précision.
Dans l'industrie cinématographique, la texturation virtuelle est utilisée dans les outils de pré-visualisation (previz) et les étapes de production virtuelle (p. ex., le volume utilisé dans Le Mandalorian. Les murs LED affichent des environnements énormes qui sont effectivement rendus en temps réel sur les moteurs de jeu; les détails de texture sont gérés par la diffusion de tuiles pour maintenir les taux d'images.
Les simulations scientifiques, comme les modèles climatiques ou les jumelles numériques de villes, sont également bénéfiques. Ces applications doivent souvent visualiser des phénomènes à plusieurs échelles – depuis l'aperçu global jusqu'au niveau individuel – sans charger et décharger à plusieurs reprises des ensembles de données.
L'avenir de la Texturation Virtuelle
Production et streaming de textures pilotées par l'IA
L'un des développements les plus excitants est l'utilisation de modèles d'apprentissage automatique (comme les modèles de super-résolution ou de diffusion) pour générer ou mettre à l'échelle des tuiles de texture à la volée. Au lieu de diffuser des tuiles haute résolution à partir du disque, le moteur pourrait diffuser une représentation latente comprimée et ensuite exécuter un réseau neuronal efficace sur le GPU pour reconstruire la texture à résolution complète.
Systèmes de matériaux entièrement virtuels
La ligne entre la texture virtuelle et l'ombrage virtuel est floue. Le même concept de table de page peut être étendu pour stocker non seulement des textures de couleur mais aussi des graphiques matériels, des charges utiles shader, et même des tuiles de géométrie (via la géométrie virtuelle). Unreal Engine , Nanite est un exemple direct de géométrie virtuelle avec une table de page similaire.
Avances et normalisation du matériel
À l'heure actuelle, chaque moteur implémente la texturation virtuelle légèrement différemment, ce qui rend difficile le portage et l'optimisation. Direct3D 12 et Vulkan ont tous deux des extensions (par exemple VK EXT texture compression astc hdr ou D3D12 GPU VIRTUAL ADDRESS) qui peuvent être utilisées pour construire des systèmes de texturation virtuels personnalisés, mais un standard unifié permettrait un intergiciel hors-shelf et un streaming async plus facile. L'API Microsoft DirectStorage, combinée à la décompression GPU, rend déjà le genre de streaming de tuiles à bande haute que la texturation virtuelle a besoin de beaucoup plus d'efficacité sur Windows et Xbox.
Une adoption accrue en mobile et en XR
Les GPU mobiles ont des budgets de mémoire serrés (3 à 6 Go de RAM système partagé) et une bande passante de mémoire limitée. La texturation virtuelle peut être un changeur de jeu ici, permettant aux jeux mobiles d'afficher des environnements complexes sans dépasser les contraintes de mémoire. AppleS Metal framework inclut le support pour le rendu différé basé sur des tuiles et peut être adaptée pour la texturation virtuelle via des rétroactions de niveau d'ombre. L'augmentation de la réalité augmentée (AR) sur les téléphones mobiles, où l'appareil doit rendre des objets numériques de haute précision sur le monde réel, va probablement pousser l'adoption de systèmes de texture en streaming.
Conclusion
La texturation virtuelle est passée d'une technique de niche utilisée dans une poignée de moteurs avancés à un bloc de construction fondamental pour les environnements 3D à grande échelle. En traitant le monde comme une texture unique et streamable, elle élimine les plafonds de mémoire, permet des détails sans précédent et réduit la charge de travail des artistes. Les défis liés au streaming des artefacts, à la bande passante et aux frais généraux de page-table ont été largement surmontés grâce à un soutien technique et matériel minutieux.