En bref
- RVT génère les textures sur le GPU à l’exécution et peut servir avec des matériaux procéduraux ou superposés.
- SVT charge dans la mémoire du GPU, sous forme de tuiles, les parties visibles à l’écran des textures stockées sur disque.
- Dans les matériaux utilisant des textures SVT, les nœuds Texture Sample doivent utiliser un type de sampler Virtual approprié.
- Le coût de la virtualisation des textures peut être examiné avec les commandes `stat virtualtexturing` et `stat virtualtexturememory`.
La documentation officielle d’Unreal Engine publiée par Epic Games présente la virtualisation des textures comme un moyen de traiter les textures volumineuses à l’exécution, avec une utilisation de la mémoire plus faible et plus régulière. Le système comprend deux méthodes : Runtime Virtual Texturing (RVT) et Streaming Virtual Texturing (SVT). Ce guide explique leurs usages en visualisation architecturale et dans les scènes temps réel, la liaison des textures SVT aux matériaux et le contrôle des performances. La documentation source ne précise pas de version particulière d’Unreal Engine à laquelle ces informations s’appliquent.
1. RVT ou SVT ? Choisir selon l’usage
Avec RVT, les données de texture sont générées par le GPU à l’exécution. La documentation d’Epic indique que cette méthode convient aux textures procédurales, aux matériaux superposés et aux matériaux complexes pour les paysages. Les workflows Landscape Spline, l’utilisation de decals sur des meshes et le fondu général entre paysages et objets figurent également parmi les cas où RVT peut être utile. Cela ne signifie pas que les decals se fondent directement avec les paysages ou les objets.
SVT, en revanche, utilise des textures préparées sur disque. Le système divise les niveaux de mip des textures en tuiles de taille fixe ; le GPU détermine quelles parties sont nécessaires aux pixels visibles à l’écran, puis charge ces tuiles dans le cache de la mémoire du GPU. Ainsi, avec les textures haute résolution, seules les zones nécessaires sont traitées, au lieu de charger la texture entière, y compris ses parties invisibles. SVT convient aux données dont la production prend du temps, comme les lightmaps et les grandes textures préparées par les artistes.
| Méthode | Flux de données | Usages mentionnés dans la documentation |
|---|---|---|
| RVT | Les données de texture sont générées sur le GPU à l’exécution. | Matériaux procéduraux ou superposés, matériaux complexes pour les paysages |
| SVT | Les données de texture sont chargées depuis le disque ; les tuiles nécessaires sont mises en mémoire. | Lightmaps et textures volumineuses et détaillées |
2. Convertir les textures SVT et les matériaux
Pour utiliser SVT, l’option Virtual Texture Streaming doit être activée sur le Texture Asset. De plus, les nœuds Texture Sample des matériaux qui échantillonnent cette texture doivent utiliser un type de sampler Virtual approprié. L’option de conversion du Content Browser peut inclure dans la liste de conversion les textures sélectionnées ainsi que les matériaux qui y font référence.
Dans le Content Browser, sélectionnez le Texture Asset à convertir en SVT.
Faites un clic droit sur l’asset et choisissez
Convert to Virtual Texture.Dans la fenêtre de conversion, vérifiez les textures répertoriées et les matériaux qui y font référence.
Cliquez sur
Okpour lancer la conversion.Ensuite, vérifiez que les nœuds Texture Sample des matériaux concernés utilisent le bon type de sampler Virtual.
La conversion d’une texture peut aussi se faire manuellement. Ouvrez le Texture Asset et activez Virtual Texture Streaming dans la section Texture du panneau Details. À la suite de cette opération, les matériaux existants qui utilisent la texture peuvent devenir invalides. Il faut alors attribuer le type de sampler Virtual approprié au nœud Texture Sample des matériaux concernés. Dans l’exemple de la documentation, Virtual Color est utilisé pour une texture de couleur virtuelle ; le type de sampler Color ne convient pas.
Quand une texture virtuelle est ajoutée au graphe du matériau, Unreal Engine attribue automatiquement le type de sampler Virtual approprié. Toutefois, si un Texture Sample Parameter destiné à être utilisé dans des Material Instances est créé, le type de sampler du matériau de base est important : les instances enfants reprennent le type défini dans le matériau de base. Il n’est pas possible d’assigner une texture virtuelle à un emplacement de paramètre du matériau de base dont le type n’est pas Virtual.
3. UDIM et lightmaps en textures virtuelles
Unreal Engine peut importer des images conformes à la convention de nommage UDIM comme un seul Virtual Texture Asset. Les fichiers doivent partager le même nom de base et comporter un numéro de coordonnées à quatre chiffres. La documentation présente le format suivant :
BaseName.####.[Support Image Format]Par exemple, le fichier MyTexture.1001.png permet également de rechercher des images portant le même nom de base, mais avec des numéros de coordonnées différents. Les images UDIM peuvent avoir des résolutions différentes. Dans l’exemple fourni par la source, deux images de 2048x2048 et deux images de 128x128, disposées sur une grille de 2x2, sont échantillonnées comme une seule texture virtuelle. Selon la documentation source, le fait que les petites images occupent une plus grande zone dans cette disposition n’augmente pas l’utilisation de la mémoire sur disque ou à l’exécution.
Pour activer les lightmaps en textures virtuelles, ouvrez Engine › Rendering dans Project Settings, puis sélectionnez Enable virtual texture lightmaps. Epic indique que cette fonctionnalité peut améliorer la qualité de génération des lightmaps et les performances du streaming. La documentation décrit également les variables de console r.IncludeNonVirtualTexturedLightmaps et r.VT.EnableLossyCompressLightmaps. La seconde active la compression avec perte pour les lightmaps en textures virtuelles ; il est précisé que cela peut réduire la qualité des textures de lightmap.
4. Mesurer les performances et éviter les erreurs fréquentes
L’échantillonnage de textures virtuelles coûte plus cher que celui des textures classiques. Chaque échantillon de texture virtuelle dans le graphe du matériau crée un lookup. Les stacks d’échantillons qui utilisent les mêmes UV et la même Sampler Source peuvent être fusionnées ; jusqu’à 8 échantillons partageant les mêmes conditions peuvent être regroupés dans une seule stack. Si les UV diffèrent, les stacks peuvent rester séparées et entraîner des accès supplémentaires aux textures.
Pour examiner le coût dans une scène, ouvrez la console et exécutez la commande suivante :
stat virtualtexturingCette commande affiche le coût de la virtualisation des textures dans la scène, en millisecondes, ainsi que des compteurs liés aux tables de pages. Pour les compteurs mémoire :
stat virtualtexturememoryPour afficher la grille de visualisation des mip dans les matériaux utilisant SVT :
r.VT.Borders 1Une fois le contrôle terminé, désactivez la grille :
r.VT.Borders 0Erreurs fréquentes
Ne pas corriger le type de sampler : une conversion manuelle peut invalider les matériaux. Vérifiez que les nœuds Texture Sample utilisent le type Virtual approprié.
Considérer les textures virtuelles comme gratuites : l’avantage mémoire ne supprime pas le coût d’échantillonnage. Mesurez la scène avec les commandes de statistiques.
Négliger l’utilisation de différents UV : les stacks des échantillons qui utilisent des UV différents ne peuvent pas toujours être fusionnées ; le coût du matériau peut augmenter.
Ne pas tenir compte des artefacts visuels : avec des textures bruitées ou très détaillées, la limitation des mip de faible résolution peut créer de l’aliasing ou des effets de moiré. Le chargement réactif de SVT peut également entraîner l’arrivée tardive de certaines tuiles lors des mouvements de caméra et provoquer des apparitions visibles.
Pour les projets d’architecture, d’intérieur et d’archviz, RVT peut être une option à envisager pour les équipes travaillant sur des paysages procéduraux, des surfaces superposées et des transitions entre objets et paysages. SVT peut aider à gérer l’utilisation de la mémoire dans les scènes qui comprennent de grandes textures, des jeux UDIM ou des lightmaps. Avant de l’intégrer au workflow, vérifiez la compatibilité des matériaux, le coût GPU et le chargement des tuiles lorsque la caméra bouge. Comme la documentation ne précise pas de version, les résultats doivent également être vérifiés avec la version d’Unreal Engine utilisée.
Sources
2 sourcesLes textes sources ne sont pas republiés ; les courtes citations sont signalées, le reste est notre propre résumé et commentaire.
Pour les agences d’architecture et de visualisation en Turquie, la virtualisation des textures peut contribuer à la gestion de la mémoire dans les scènes comportant de grands jeux de textures ou de nombreux éléments de paysage. Cela ne signifie toutefois pas que le rendu sera automatiquement plus rapide dans tous les projets ; il faut tenir compte du coût supplémentaire de l’échantillonnage des textures virtuelles et de l’impact de l’utilisation de différents UV.
L’approche la plus sûre consiste à tester la méthode sur une scène représentative avant de l’étendre à tout le projet. Après la conversion, vérifiez ensemble la compatibilité des matériaux, les compteurs de mémoire GPU, la qualité visuelle des détails fins et le chargement des tuiles lors des mouvements de caméra. La vérification du comportement avec la version d’Unreal Engine utilisée doit également figurer sur la liste de contrôle des équipes.
Questions fréquentes
Quelle est la différence entre RVT et SVT dans Unreal Engine ?
RVT génère les données de texture sur le GPU à l’exécution. SVT charge sous forme de tuiles les parties visibles des textures stockées sur disque.
Comment utiliser les textures SVT dans les matériaux ?
Virtual Texture Streaming doit être activé sur la texture et les nœuds Texture Sample du matériau doivent utiliser un type de sampler Virtual approprié. Le menu de conversion répertorie les textures ainsi que les matériaux qui y font référence.
Comment mesurer les performances des textures virtuelles dans Unreal Engine ?
`stat virtualtexturing` affiche le coût dans la scène et les compteurs liés aux tables de pages. `stat virtualtexturememory` affiche les compteurs de mémoire des textures virtuelles de la scène.



