Come funziona Megatexture?


21

Ho pensato di sviluppare un piccolo motore non solo per sviluppare piccoli giochi sperimentali, ma anche come base per testare varie tecniche di rendering e cose del genere. In questo momento ho pensato molto a come gestire le trame e inciampato su megatexture, ma questo è qualcosa che è un po 'sconcertante. Si parla molto del fatto che sia migliore dell'approccio tradizionale di avere un sacco di trame e caricarle in base alle necessità, ma come fa Megatexture a evitarlo, ho letto che usano lo streaming e puoi semplicemente trasmettere bit e pezzi invece di caricare ogni trama singolarmente, ma in che modo offre prestazioni migliori e non è solo un'altra forma di lavorazione?

Come campioniamo una trama simile quando siamo in uno shader, ne facciamo streaming parte in memoria e poi ci lavoriamo sopra. Ho visto gli ultimi video di Rage e la trama ha un bell'aspetto, ma è solo il risultato di grandi artisti o la tecnologia entra in gioco.

Per riassumere, come funziona, perché è fantastico e come posso fare qualcosa di simile.

Risposte:


15

L'idea di base delle mega trame è l'uso di un atlante delle trame in cui racchiudi tutte le diverse trame in una grande e usi gli UV per indicizzare in questa immagine. Sono necessarie buone euristiche per sapere quale parte della trama è necessaria per lo streaming dal disco in base a ciò che vedi sullo schermo. L'aspetto positivo è che puoi avere trame completamente uniche in tutto il mondo di gioco e mantenere solo i dati visibili nella RAM. È necessario un buon sistema di streaming e memorizzazione nella cache per renderlo accessibile.

Consiglio di consultare il materiale in questa pagina per informazioni più dettagliate su un approccio: http://silverspaceship.com/src/svt/


4

Controlla il clipmapping per l'implementazione hardware SGI preesistente.

Più di recente Megatexture è stata utilizzata come nome di pr per Sparse Virtual Texturing (SVT)

SVT esegue il rendering di una telecamera con risoluzione ridotta, rilevando la trama e la mipmap necessarie. Quindi una routine della CPU genera caricamenti sul sistema del disco per portare quei blocchi trama / mip in memoria (se non in memoria) e quindi il blocco trama caricato viene inserito in una sezione di un grande atlante trama (di solito in blocchi di 128x128)

Man mano che vengono introdotti blocchi di trama, viene aggiornata una trama di reindirizzamento (una mappa di pagina virtuale) che accetta le trame richieste dai modelli e la reindirizza alla parte particolare della trama di grandi dimensioni in cui è effettivamente memorizzata.


Questo spiega un bel po '. Mi chiedevo, se c'era solo streaming in corso, come sono riusciti a trasmettere in streaming pezzi di quella trama enorme, in un HDD o in un disco abbastanza velocemente da essere di qualche utilità, l'atlante intermedio risponde abbastanza bene. Inoltre ora posso vedere perché è più efficiente della memoria rispetto ai metodi tradizionali. Mi guarderò intorno per maggiori dettagli su SVT (il link di Flawe sembra un buon punto di partenza per questo)
Daemoniorum

1

Puoi pensare a Megatexture come una sorta di trama "streaming". È necessario visualizzare un'immagine di trama massiccia e completamente dettagliata (in parole povere) che viene letta come sezioni di essa. Sono sicuro che c'è molto di più, tuttavia, come LOD / mipmapping, caricamento e gestione delle risorse tra le cose ovvie.

Wikipedia ha un articolo su di esso.


2
Ho letto l'articolo prima, ma è un po 'di luce sui dettagli. È un po 'difficile ottenere dettagli reali su quella tecnica. Vorrei che ID ne
avesse
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.