Che cosa è la texture virtuale?

La visualizzazione virtuale è una tecnica di gestione della scena originariamente popolare nei motori di gioco come id Tech 5 (utilizzato in Rage) e successivamente adottato ampiamente attraverso il rendering in tempo reale. Al suo core, virtual texturing decouples la texture logica indirizzo spazio dalla memoria GPU fisica, permettendo la creazione di enormi atlanti di texture – talvolta chiamato megatextures – che possono coprire interi mondi di gioco con

La tecnica è stata inizialmente sviluppata per affiancare il tradizionale trade-off tra il budget della memoria della texture e la varietà della superficie. Sotto la classica mappatura, gli sviluppatori hanno dovuto scegliere tra ripetere piccole texture (che sembrano tinte e artificiali) o utilizzando una manciata di grandi texture uniche che si esauriscono rapidamente VRAM.

Come funziona la texture virtuale

Pagine Tavoli e Piastrelle Streaming

Il cuore di qualsiasi sistema di texturing virtuale è una tabella di pagina – una struttura di traduzione gestita dall'hardware che mappa le coordinate della texture virtuali alle posizioni di memoria fisica. La GPU utilizza la tabella di pagina per calcolare quali 128×128 o 256×256 pixel piastrelle della texture risiedono nella memoria GPU e che sono mancanti.

Feedback e Granularità di Streaming

I motori moderni tipicamente implementano un canale di streaming a tre livelli: (1) la GPU rende una versione a bassa risoluzione dell'immagine mentre registra simultaneamente le mancanze della cache; (2) la CPU legge il buffer di feedback, predispone il movimento della fotocamera futura e le richieste di carico di problemi; (3) le piastrelle del sistema I/O decodificano le piastrelle compresse e le trasferiscono alla memoria GPU.

Gestione del Mip-Chain

Invece di memorizzare una catena di mip per l’intera texture virtuale, la tabella delle pagine contiene piastrelle da ogni livello di mip. La GPU campiona il livello corretto di mip basato su derivati dello schermo-spazio, e lo stesso meccanismo di streaming assicura che solo le piastrelle di livello mip necessarie siano residenti.

Vantaggi in ambienti di grande scala

Il test virtuale brilla molto brillantemente nei giochi open-world e in ambienti di simulazione in cui la superficie è misurata in chilometri quadrati piuttosto che metri quadrati. I vantaggi chiave vanno oltre i semplici risparmi di memoria:

  • Unico dettaglio in tutto il mondo. Poiché la texture virtuale può essere terabyte in dimensioni, ogni patch di terra, ogni faccia di scogliera, e ogni parete di costruzione può avere un proprio aspetto distinto. I manufatti di tiling che affliggono la testurizzazione convenzionale sono completamente eliminati.
  • La complessità di autore redotto] Gli artisti dipingono una singola texture ad alta risoluzione direttamente sul modello 3D o sul paesaggio, o utilizzano tecniche di proiezione per fondere più sorgenti fotografiche. Non c'è bisogno di confezionare manualmente centinaia di mappe di texture individuali in un atlante condiviso, né preoccuparsi di sovrapposizione texture-coordinate.
  • Le prestazioni più importanti su hardware limitato. In streaming solo piastrelle visibili, la texturing virtuale permette scene che altrimenti richiedono 16–32 GB di VRAM per eseguire su hardware con soli 4–8 GB. Questo è stato un fattore critico nell'originale Rage[]]]] che funziona su Xbox 360 (che aveva solo 512 MB di memoria unificata).
  • Carico più veloce e impronta di memoria più bassa per la geometria statica. Combinato con sistemi di compressione efficienti come codec a blocchi persi (BCn o ASTC), l'impronta totale del disco può essere mantenuta gestibile, e la memoria runtime è proporzionale alla vista frustum, non alla dimensione mondiale.
  • Semplificare lo streaming a livello.[ La virtual texturing completa naturalmente lo streaming live-of-detail per la geometria. Entrambi i sistemi possono utilizzare lo stesso meccanismo di feedback, consentendo una gestione delle risorse più coerente.

Attuazione in motori di gioco moderni

Motore irreale 4/5 – Sistema di Texture Virtuale

I giochi EpicLT hanno introdotto la funzionalità di ERP (RVT) in un motore Unreal 4 e l'hanno estesa in modo significativo in UE5. RVT permette di realizzare materiali di rete statici e paesaggistici in tempo reale, che altri materiali (come i livelli di paesaggio di vertex-blended) possono quindi essere utilizzati in modo da eliminare gli ingressi di materiale per pixel durante il rendering, riducendo enormemente la complessità dell'ombra.

Streaming avanzato di texture di unity

Unity utilizza un approccio diverso chiamato Tesoro Streaming] (parte delle impostazioni di qualità) che sfrutta lo streaming mip-map piuttosto che la texturing virtuale completo. Tuttavia, Unity’s High Definition Render Pipeline (HDRP) include una funzione sperimentale Virtual Texturing che funziona come un sistema di feedback basato su tile simile ai megatexture tradizionali.

id Tech e Megatextures

Il concetto di "Granth" è stato lanciato da John Carmack e id Software in Quake Wars: Enemy Territory] (2007) e perfezionato in Rage]] (2010). Il motore id Tech 5 ha usato una sola texture gigantesca (fino a 128k-128k) per l'intero mondo di gioco

Sfide e soluzioni

Streaming di manufatti e pop-in

Il problema più visibile della texturing virtuale è l’aspetto di piastrelle a bassa risoluzione mentre le versioni ad alto dettaglio sono in fase di caricamento. Questo “pop‐in” può essere invaso se il sistema di streaming non può tenere il passo con il movimento della fotocamera. La soluzione prevede algoritmi prefetching attenti che anticipano la traiettoria della fotocamera e carichi bene prima che diventino visibili.

Larghezza di banda e stoccaggio

Poiché le texture virtuali sono enormi (spesso centinaia di gigabyte su disco), richiedono una compressione aggressiva e un layout efficiente su-disk. La maggior parte delle implementazioni utilizzano BCn (blocco di compressione) per i dati di runtime e uno schema di compressione più alto (come LZ4 o Kraken) per il file di archivio. La densità di compressione deve bilanciare la necessità di accesso casuale ad alta velocità a livello di piastrella.

Memoria Overhead della tabella di pagina

Per una texture virtuale con 128k×128k pixel e 128×128 tile size, ci sono 1024×1024 piastrelle, che si eguaglia a circa 4 milioni di pagine-table voci. Se ogni voce è 4 byte (un indirizzo fisico), la tabella utilizza 16 MB di memoria GPU.

Integrazione con Rendering Deferred

I rendering differiti richiedono texture multiple (GBuffer) per pixel. La texturing virtuale deve essere applicata a ciascuna di queste texture singolarmente, che moltiplica il numero di canali di streaming. Un'alternativa è quella di memorizzare l'ID materiale in una texture virtuale e quindi di provare le proprietà materiali da un set di piastrelle separato.

Supporto virtuale di test di hardware

Le funzioni di GPU moderne di NVIDIA (a partire dalle 9 serie, e soprattutto dall’architettura di Turing) includono il supporto hardware per le tabelle di pagina e la texturing virtuale basata su piastrelle tramite l’unità Virtual Memory Management].

Virtual Texturing Oltre i giochi

I principi della texturing virtuale sono sempre più applicati al di fuori dell'intrattenimento in tempo reale. In visualizzazione architettonica, la texturing virtuale permette di camminare attraverso i modelli di scala urbana dove ogni facciata di costruzione ha una propria fotografia ad alta risoluzione. Nei simulatori di volo, come Microsoft Flight Simulator 2020, il sistema di streaming è effettivamente una texture virtuale massiccia di immagini satellitari e dati di elevazione.

Nel settore cinematografico, la texturing virtuale viene utilizzata in tempo reale pre-visualizzazione (previz) strumenti e fasi di produzione virtuali (ad esempio, il Volume utilizzato in Il Mandalorian]). Le pareti a LED visualizzano ambienti enormi che sono effettivamente resi in tempo reale sui motori di gioco; i dettagli della texture vengono gestiti attraverso lo streaming di piastrelle per mantenere i frame rate.

Anche le simulazioni scientifiche, come i modelli climatici o i gemelli digitali delle città, hanno bisogno di visualizzare fenomeni su più scale, dalla visione globale a livello di costruzione individuale, senza dover caricare e scaricare più volte i dataset.

Il futuro della texture virtuale

Generazione e streaming di texture AI-Driven

Uno degli sviluppi più interessanti è l’utilizzo di modelli di machine learning (come modelli di super risoluzione o diffusione) per generare o scalare piastrelle di texture in volo. Invece di trasmettere piastrelle ad alta risoluzione dal disco, il motore potrebbe trasmettere una rappresentazione latente compressa e quindi eseguire una efficiente rete neurale sulla GPU per ricostruire la texture a piena risoluzione, riducendo drasticamente i requisiti di storage e larghezza di banda.

Sistemi virtuali di materiali

La stessa idea di tabella di pagina può essere estesa per memorizzare non solo texture di colore, ma anche grafici materiali, payload di ombrer, e anche piastrelle di geometria (tramite geometria virtuale).La Nanite di Unreal Engine è un esempio diretto della geometria virtuale con una simile organizzazione di tabella di pagina. In futuro, intere descrizioni di scena – geometria, materiali, texture e illuminazione – possono essere gestite come flusso di dati non specificato.

Avanzamento e standardizzazione dell'hardware

Attualmente, ogni motore implementa testualmente un texturing leggermente diverso, che rende difficile il porting e l'ottimizzazione.

Maggiore adozione in Mobile e XR

Le GPU mobili hanno budget di memoria stretti (3-6 GB di RAM di sistema condiviso) e larghezza di banda di memoria limitata. La testurizzazione virtuale può essere un cambia-gioco qui, permettendo ai giochi mobili di visualizzare ambienti intricati senza superare i vincoli di memoria.

Conclusioni

La virtual texturing si è evoluta da una tecnica di nicchia utilizzata in una manciata di motori avanzati in un blocco di costruzione fondamentale per ambienti 3D su larga scala. Trattando il mondo come una texture unica e fluida, elimina i soffitti di memoria, consente dettagli senza precedenti, e riduce il carico di lavoro dell'artista. Le sfide di artefatti di simulazione di streaming, larghezza di banda e sovraccarico pagina-tabile sono state ampiamente superate attraverso un'ingegnering-based supporto di ingegneria e hardware.