In questa terza sezione, dove approfondiamo la creazione di giochi 3D, ci concentreremo su ciò che accade al mondo 3D dopo l'elaborazione degli angoli e la scena viene rasterizzata. La configurazione è una delle fasi più importanti del rendering, anche se tutto ciò che accade viene calcolato e sostituito da una griglia bidimensionale di blocchi colorati.

La maggior parte degli effetti visivi visti oggi nei giochi dipendono dall'uso intelligente delle trame: i giochi senza di essi diventano noiosi e senza vita. Quindi facciamo immersioni e vediamo come funzionano!

Come sempre, se non sei pronto a fare un tuffo profondo nel tessuto, non farti prendere dal panico: puoi iniziare Creazione di giochi 3D 101. Ma una volta superate le basi, continua a leggere per il nostro prossimo sguardo al mondo della grafica 3D.

Cominciamo semplice

Scegli i giochi 3D più venduti negli ultimi 12 mesi e condivideranno tutti qualcosa di comune: mappe di trama (o solo textures). Questo è un termine molto comune, la maggior parte delle persone creerà la stessa immagine quando considerano le trame: un quadrato o un rettangolo semplice, piatto (erba, pietra, metallo, vestiti, faccia, ecc.) Che contiene un'immagine di una superficie.

Tuttavia, se utilizzato in più livelli e combinato utilizzando aritmetica complessa, l'utilizzo di queste immagini di base sulla scena 3D può produrre immagini sorprendentemente realistiche. Per vedere come questo è possibile, saltiamoli completamente e vediamo come possono apparire senza di loro gli oggetti nel mondo 3D.




Come abbiamo visto negli articoli precedenti, il mondo 3D è composto da angoli: forme semplici che possono essere spostate e colorate in seguito. Questi vengono quindi utilizzati per creare primitive, che sono anche compresse nella griglia di pixel 2D. Poiché non useremo le trame, dobbiamo colorare questi pixel.




Si chiama un metodo che può essere utilizzato ombreggiatura dirittaimplica prendere il colore del primo vertice della sostanza primitiva e quindi usare quel colore per tutti i pixel che rientrano nell'ambito della forma nel raster. Sembra così:




Ovviamente questa non è una teiera realistica, almeno il colore della superficie è sbagliato. I colori saltano da un livello all'altro, senza transizione graduale. Una soluzione a questo problema potrebbe essere quella di utilizzare qualcosa chiamato Ombreggiatura Gouraud.




Questo è un processo che prende i colori degli angoli e calcola come il colore cambia attraverso la superficie del triangolo. Matematica usata interpolazione lineareCiò significa che sebbene sembri elegante, in realtà, se il colore di un lato primitivo è 0,2 rosso e l'altro lato è 0,8 rosso, la forma ha un colore tra 0,2 e 0,8 (cioè 0,5).

È relativamente semplice da fare e il suo principale vantaggio è la velocità. Molti primi giochi 3D utilizzavano questa tecnica perché l'hardware che effettuava i calcoli era limitato a ciò che potevano fare.




Ma anche questo ha i suoi problemi, perché se una luce punta proprio nel mezzo di un triangolo, i suoi angoli (angoli) potrebbero non catturarla correttamente. Ciò significa che i punti salienti causati dalla luce possono essere completamente trascurati.




Mentre l'ombreggiatura piatta e Gouraud è inclusa nell'arsenale di rendering, gli esempi sopra riportati sono candidati aperti per l'uso di trame per curarli. E per capire bene cosa succede quando una trama viene applicata su una superficie, torneremo indietro nel tempo ... fino al 1996.

Una breve storia di gioco e GPU

Quake è un gioco emblematico rilasciato 23 anni fa Software id. Sebbene non sia stato il primo gioco a utilizzare poligoni e trame 3D per creare l'ambiente, è stato uno dei primi a usarli tutti in modo così efficace.

Un'altra cosa che ha fatto è stato mostrare cosa si poteva fare con OpenGL (l'API grafica era ancora nella sua prima revisione), e ha anche fatto molto per aiutare a vendere il primo prodotto con scheda grafica. Commento di Verite ve 3Dfx Vudu.

Rispetto agli standard odierni, Voodoo era estremamente semplice: nessun supporto per la grafica 2D, nessuna elaborazione degli angoli e solo le basi dell'elaborazione dei pixel. Era ancora una bellezza:

Aveva un intero chip (TMU) per ottenere un pixel da una trama, e quindi un altro chip (FBI) per mescolarlo con un pixel dal raster. Può fare alcune cose aggiuntive come creare effetti di nebbia o trasparenza, ma era quasi tutto.

Se diamo una panoramica dell'architettura alla base della progettazione e del funzionamento della scheda grafica, possiamo vedere come funzionano questi processi.

Il chip FBI prende due valori di colore e li combina; uno di questi può essere un valore di un tessuto. Il processo di fusione è matematicamente abbastanza semplice, ma differisce leggermente tra ciò che viene mischiato esattamente e quale API viene utilizzata per eseguire le istruzioni.

Quello che guardiamo Offerte Direct3D In termini di funzioni di fusione e operazioni di fusione, possiamo vedere che ogni pixel viene prima moltiplicato per un numero compreso tra 0,0 e 1,0. Ciò determina la quantità di colore del pixel che influirà sull'aspetto finale. I due colori di pixel impostati vengono quindi aggiunti, sottratti o duplicati; In alcune funzioni, l'operazione è sempre un'espressione logica in cui è selezionato qualcosa come il pixel più luminoso.

L'immagine sopra è un esempio di come funziona in pratica; del fattore utilizzato per il pixel sinistro alfa valore. Questo numero, trasparente pixel.

Il resto dei passaggi prevede l'applicazione di un valore di nebbia (tratto da una tabella di programma creata dal programmatore, quindi esegue la stessa matematica di miscelazione); effettuare controlli e adeguamenti in termini di visibilità e trasparenza; prima di scrivere finalmente il colore del pixel in memoria sulla scheda grafica.

Perché lezione di storia? Nonostante la relativa semplicità del design (soprattutto rispetto ai giganti moderni), il processo spiega le basi di base della trama: ottenere alcuni valori di colore e mescolarli in modo che i modelli e gli ambienti guardino come dovrebbe essere in una situazione particolare.

I giochi di oggi fanno ancora tutto questo, l'unica differenza è la quantità di texture utilizzata e la complessità dei calcoli di fusione. Insieme simulano gli effetti visivi visti nei film o il modo in cui la luce interagisce con materiali e superfici diversi.

Nozioni di base sulla trama

Per noi, una trama è un'immagine 2D piatta applicata ai poligoni che compongono le strutture 3D nella cornice visualizzata. Per un computer, non è altro che un piccolo blocco di memoria sotto forma di un array 2D. Ogni voce nella matrice rappresenta un valore di colore per uno dei pixel nell'immagine trama (meglio noto) riempitore di testo - pixel di trama).

Ogni vertice in un poligono ha 2 coordinate (di solito sen, v) indica a quale pixel della trama è associato. L'angolo stesso ha 3 serie di coordinate (X ve Z) e digitando il testo agli angoli. mappatura delle trame.

Per vederlo in azione, passiamo a uno strumento che usiamo più volte in questa serie di articoli: Creazione in tempo reale WebGL attrezzo. Per adesso, z coordinare dagli angoli e mantenere tutto su un piano piatto.

Abbiamo la trama da sinistra a destra sen, v coordinate mappate direttamente agli angoli degli angoli x, y coordinate. Quindi gli angoli superiori y le sue coordinate aumentarono, ma poiché la trama è ancora direttamente mappata su di esse, la trama viene allungata verso l'alto. Nell'immagine all'estrema destra, questa volta cambia trama: u i valori sono aumentati, ma questo fa sì che il tessuto venga schiacciato e quindi ripetuto.

Perché la trama ora è effettivamente più lunga, più alta u Il suo valore dovrebbe adattarsi al primitivo - essenzialmente la trama è stata parzialmente ripetuta. Questo è un modo per fare qualcosa visto in molti giochi 3D: tripetere. Esempi comuni di questo possono essere trovati in scene con paesaggi rocciosi o erbosi o muri di mattoni.

Ora impostiamo la scena in modo che sia più primitiva e ripristineremo la profondità del gioco. Quello che abbiamo di seguito è una classica vista del paesaggio, ma la trama della cassa viene copiata e ripetuta tra i primitivi.

Ora questa trama della cassa è di 66 chili nel suo formato gif originale e ha una risoluzione di 256 x 256 pixel. La risoluzione originale della parte del frame coperta dalle texture della cassa è 1900 x 680, quindi questa regione dovrebbe essere in grado di visualizzare solo 20 texture della cassa in termini di 'area' di pixel.

Ovviamente prendiamo più di 20 percorsi, così tante trame sullo sfondo molto Più piccolo di 256 x 256 pixel. In effetti lo sono e hanno attraversato un processo riduzione dei tessuti (sì, questa è una parola!). Riproviamo, ma questa volta si è avvicinato a uno dei forzieri.

Si noti che la trama ha una dimensione di soli 256 x 256 pixel, ma qui possiamo vedere che una trama è più della metà della larghezza di un'immagine larga 1900 pixel. Questa trama ha attraversato qualcosa chiamato aumento dei tessuti.

Questi due processi di trama si verificano sempre nei giochi 3D, perché tutte le trame applicate alle primitive devono essere ridimensionate insieme ai poligoni mentre la telecamera si sposta sul palco o mentre i modelli si avvicinano e si allontanano. Matematicamente, questo non è un grosso problema, infatti, anche i chip grafici integrati più semplici lampeggiano in un lavoro del genere. Tuttavia, la riduzione e l'allargamento dei tessuti pongono nuovi problemi che devono essere risolti in qualche modo.

Inserisci mini trame

Il primo problema da risolvere è per i tessuti distanti. Se guardiamo di nuovo la prima immagine orizzontale della cassa, quelle giuste all'orizzonte hanno solo pochi pixel di dimensione. Non ha senso per due motivi provare a comprimere un'immagine di 256 x 256 pixel in un'area così piccola.

Innanzitutto, una trama più piccola occupa meno spazio di memoria sulla scheda grafica, utile per cercare di adattare una piccola quantità di cache. Ciò significa che è meno probabile che venga rimosso dalla cache e l'uso ripetuto di questa trama trarrà pieno vantaggio dai dati nella memoria vicina. Il secondo motivo viene per un momento perché dipende dallo stesso problema per le trame ingrandite.

Una soluzione comune all'uso di tessuti di grandi dimensioni schiacciati da piccoli primitivi, accoppiamento. Queste sono versioni minimizzate della trama originale; il motore di gioco stesso può essere creato (usando il comando API corrispondente per fare ciò) o può essere fatto in anticipo dai progettisti del gioco. Ogni livello di tessuto mipmap ha metà delle dimensioni lineari di quello precedente.

Per la trama della cassa, succede qualcosa del genere: 256 x 256 → 128 x 128 → 64 x 64 → 32 x 32 → 16 x 16 → 8 x 8 → 4 x 4 → 2 x 2 → 1 x 1.

Le mipmap sono tutte impacchettate insieme, quindi la trama ha sempre lo stesso nome file ma ora è più grande. Il tessuto è confezionato in modo tale sen, v le sue coordinate non solo determinano quale texel applicare a un pixel nel frame, ma anche da quale mipmap. I programmatori quindi codificano il renderer per determinare la mipmap da utilizzare in base al valore di profondità del pixel quadrato, quindi se è troppo alto, il pixel è a distanza, in modo da poter utilizzare una piccola mipmap.

I lettori con gli occhi acuti potrebbero aver visto lo svantaggio delle mipmap e venire a scapito di trame più grandi. La trama originale della cassa ha una dimensione di 256 x 256 pixel, ma come puoi vedere nella figura sopra, la trama mipmapped ora è 384 x 256. Sì, c'è molto spazio libero, ma indipendentemente da come lo comprimi in trame più piccole, l'aumento totale di almeno una delle dimensioni del tessuto è del 50%.

Tuttavia, questo vale solo per le mipmap pre-preparate; Se il motore di gioco è programmato per produrli correttamente, l'aumento non può mai superare il 33% delle dimensioni della trama originale. In questo modo si ottengono vantaggi prestazionali e miglioramenti visivi per un aumento relativamente piccolo della memoria nelle mipmap dei tessuti.

Di seguito è riportato un confronto chiuso / aperto delle mipmap dei tessuti:

Sul lato sinistro dell'immagine, le texture della cassa vengono utilizzate "così come sono", dando origine a un aspetto sgranato e presumibilmente modelli di moiré lontano. Tuttavia, sul lato destro, l'uso delle mipmap comporta una transizione molto più morbida attraverso il paesaggio, dove la trama della cassa si trasforma in un colore coerente all'orizzonte.

Tuttavia, qualcuno vuole trame sfocate che interrompono lo sfondo del loro gioco preferito?

Bilineer, triple strisce, anisotropico - tutto greco per me

Il processo di selezione dei pixel da una trama da applicare a un pixel in una cornice campionamento dei tessutie in un mondo perfetto, le sue dimensioni, posizione, direzione, ecc. indipendentemente dalla sua trama, sarebbe una trama che corrisponde esattamente al suo principio. In altre parole, il campionamento delle trame non è altro che un processo di mappatura da 1 a 1 da pixel piatto a pixel.

Poiché non è così, il campionamento dei tessuti deve tenere conto di una serie di fattori:

  • La trama è ingrandita o ridotta?
  • La trama è originale o una mipmap?
  • A che angolo viene mostrata la trama?

Analizziamoli uno per uno. Il primo è abbastanza chiaro: se la trama viene ingrandita, ci sarà più testo che copre il pixel primitivo più del necessario; Con la riduzione sarà il contrario, ogni texel dovrebbe ora coprire più di un pixel. Questo è un po 'un problema.

In secondo luogo, le mipmap lasciano i tessuti ad angolo, poiché vengono utilizzati per aggirare il problema del campionamento dei tessuti con primitivi distanti. E sì, anche questo è un problema. Perché? Poiché tutte le trame vengono create "aperte a faccia in su" per una vista o tutte sono simili alla matematica: la superficie normale della trama è la stessa della superficie visualizzata sul tessuto.

Pertanto, per avere troppe poche o troppe trame e avere trame ad angolo, filtraggio dei tessuti. Se non usi questo processo, ecco cosa ottieni:

Qui abbiamo sostituito la trama della cassa con una trama lettera R per mostrare più chiaramente quanta confusione avrà senza filtrare la trama!

Le API grafiche come Direct3D, OpenGL e Vulkan offrono tutti gli stessi tipi di filtro di intervallo, ma usano nomi diversi per loro. In effetti, tutto va così:

  • Campionamento del punto più vicino
  • Filtraggio lineare delle trame
  • Filtraggio del tessuto anisotropico

A tutti gli effetti, campionamento del punto più vicino se non filtra, ciò è dovuto al fatto che è il pixel più vicino al pixel che richiede il campionamento (ovvero copiarlo dalla memoria) e quindi fondere il pixel con il suo colore originale.

Ecco che arriva il filtraggio lineare in soccorso. necessario sen, v le coordinate texel vengono inviate all'hardware per il campionamento, ma invece di ottenere il texel più vicino a quelle coordinate, il campionatore quattro texel. Questi sono direttamente sopra, sotto, a sinistra ea destra di quello selezionato usando il campionamento del punto più vicino.

Questi 4 tessuti vengono quindi miscelati utilizzando una formula ponderata. Ad esempio, la formula in Vulkan:

T "Colore", f Quattro tessuti campionati per il drenato e da 1 a 4. valori alfa ve beta Quanto lontano dal punto definito da sen, v le coordinate provengono dal centro del tocco.

Fortunatamente, chiunque sia coinvolto in giochi 3D, sia giocando che giocando, avviene automaticamente in questo chip di elaborazione grafica. In effetti, il chip TMU in 3dfx Voodoo ha fatto questo: ha campionato 4 singoli e poi li ha mescolati. Direct3D lo chiama in modo strano filtro bilineare, tuttavia, sin dai tempi del chip TMU di Quake e Voodoo, le schede grafiche sono state in grado di filtrare solo per un ciclo di un'ora (se la trama si trova comodamente nella memoria chiusa), ovviamente.

Il filtro lineare può essere usato insieme alle mipmap e se vuoi davvero essere fantasioso con il tuo filtro, puoi prendere 4 testi da una trama, quindi altri 4 dal successivo livello di mipmap e poi combinarli. E il nome di Direct3D per questo? trilineare filtrazione. Che cosa tri su questo processo? La tua ipotesi è buona come la nostra ...

Viene chiamato l'ultimo metodo di filtraggio menzionato anizotrop. Si tratta in effetti di un aggiustamento secondo il processo di filtraggio bilaterale o trilineare. inizialmente grado di anisotropia superficie primitiva (e sorprendentemente complicato) - questo valore modifica le proporzioni della primitiva a causa del suo orientamento:

L'immagine sopra mostra lo stesso principio quadrato con bordi di uguale lunghezza; ma mentre ci allontaniamo dalla nostra prospettiva, il quadrato appare come un rettangolo e la sua larghezza supera la sua altezza. Quindi la primitiva a destra ha un'anisotropia più grande rispetto a sinistra (e nel caso di un quadrato, il grado è esattamente zero).

La maggior parte dei giochi 3D di oggi ti consente di abilitare il filtro anisotropico e quindi di regolarne il livello (da 1x a 16x), ma cosa cambia effettivamente? L'impostazione controlla il numero massimo di campioni texel aggiuntivi prelevati per campionamento lineare originale. Ad esempio, supponiamo che il gioco sia impostato per utilizzare il filtro bilineare anisotropico 8x. Ciò significa che invece di prendere solo 4 valori di testo, porterà 32 valori.

È chiaro che l'uso del filtro anisotropico può notare:

Basta scorrere un po 'verso l'alto e confrontare il punto più vicino per il filtraggio trilineare anisotropico massimo 16x. Così liscio, quasi delizioso!

Ma deve esserci un prezzo per ripagare tutto questo meraviglioso sapore di consistenza del burro e sicuramente prestazioni: tutto il massimo, il filtro trilineare anisotropico porterà 128 campioni da una trama per ogni pixel elaborato. Anche per le migliori GPU più recenti, questo non può essere fatto in un singolo ciclo di clock.

Se otteniamo qualcosa come AMD Radeon RX 5700 XTcontrassegnare ciascuna unità di tessuto all'interno del processore in grado di chiudere 32 indirizzi texel in un loop di clock, quindi caricare 32 texel dalla memoria (ogni dimensione di 32 bit) in un altro ciclo di clock, quindi assemblarne 4 in seguito. Pertanto, è stato miscelato per 128 campioni di texel che richiedono un ciclo di almeno 16 ore.

Ora la velocità di clock di base del 5700 XT è di 1605 MHz, quindi sedici cicli impiegano solo 10 nanosaniye. Fallo solo per ogni pixel nel frame 4K. uno l'unità tissutale impiegherebbe comunque solo 70 millisecondi. Ok, forse le prestazioni non contano!

Anche nel 1996, artisti del calibro di 3Dfx Voodoo erano piuttosto eleganti nella gestione delle trame. Il massimo può essere dato in 1 ciclo di texel filtrato bilineare all'ora e mentre il chip TMU oscillava a 50 MHz, ciò significava che si potevano tagliare 50 milioni di texin al secondo. In un gioco che funziona a 800 x 600 e 30 fps, sono richiesti solo 14 milioni al secondo di testo.

Tuttavia, tutto ciò presuppone che le trame siano nella memoria vicina e che solo un texin sia mappato su ciascun pixel. Venti anni fa, l'idea di dover applicare più di una trama a un principio era quasi del tutto sconosciuta, ma ora è ordinaria. Vediamo perché questo cambiamento è avvenuto.

Illumina il percorso verso immagini spettacolari

Dai un'occhiata a questa scena di Quake per capire come il tessuto è diventato così importante:

Questa immagine oscura era la natura di questo gioco, ma puoi vedere che l'oscurità non è la stessa ovunque: le macchie delle pareti e del pavimento sono più luminose di altre per dare un senso generale di illuminazione in quella zona.

I primitivi che formano i lati e il pavimento hanno la stessa trama applicata a loro, ma c'è una seconda trama chiamata. mappa della luceviene miscelato con valori texel prima che vengano associati a pixel quadrati. Durante i giorni di Quake, le mappe luminose sono state pre-calcolate e realizzate dal motore di gioco e utilizzate per creare livelli di luce statici e dinamici.

Il vantaggio di usarli era che venivano eseguiti calcoli di illuminazione complessi sulle trame anziché sugli angoli, in particolare migliorando l'aspetto di una scena e costi di prestazione molto bassi. Ovviamente non perfetto: come puoi vedere sul terreno, il confine tra le aree illuminate e quelle all'ombra è molto semplice.

In molti modi, una mappa luminosa è solo un'altra trama (ricorda che sono tutti tranne che array di dati 2D), quindi quello che stiamo guardando qui è l'uso iniziale di ciò che è noto. trama multipla. Come suggerisce il nome, è un processo in cui due o più tocchi vengono applicati a un principio. L'uso delle mappe luminose in Quake è stata una soluzione per superare i limiti dell'ombreggiatura di Gouraud, ma con l'aumentare delle capacità delle schede grafiche, sono cresciute anche le applicazioni multi-drive.

3Dfx Voodoo, come altre carte della sua epoca, era limitato a quanto poteva fare in un rendering passaggio. Questa è essenzialmente una sequenza di rendering completa: dall'elaborazione degli angoli alla rasterizzazione del frame e dalla modifica dei pixel a un buffer del frame finale. Venti anni fa, i giochi facevano quasi sempre un singolo passaggio.

Il motivo era che era molto costoso in termini di prestazioni, dal momento che si desidera elaborare gli angoli due volte solo per applicare più trama. Pochi anni dopo Voodoo, abbiamo dovuto aspettare fino a quando le schede grafiche ATI Radeon e Nvidia GeForce 2 fossero disponibili per poter effettuare il multi-draw in una singola transizione di rendering.

Queste GPU avevano più unità di trama per sezione di elaborazione dei pixel (ad es. tubaturaÈ stato un gioco da ragazzi portare un texel filtrato da due trame separate. Ciò ha reso la mappatura della luce ancora più popolare e ha cambiato i valori della luce a causa dei cambiamenti nell'ambiente di gioco, rendendo i giochi completamente dinamici.

Ma c'è molto di più che può essere fatto con più trame, quindi diamo un'occhiata.

È normale moltiplicare l'altezza

In questa serie di articoli sul rendering 3D, non abbiamo esaminato come il ruolo della GPU si adatti davvero all'intero problema (lo faremo ancora, non ancora!). Ma se torni Episodio 1e guarda tutto il complicato lavoro di elaborazione degli angoli, potresti pensare che questa sia la parte più difficile dell'intero array per il rendering del processore grafico.

È da molto tempo che i programmatori di giochi hanno fatto del loro meglio per ridurre questo carico di lavoro. Ciò significava raggiungere la borsa dei trucchi visivi e rimuovere quante più scorciatoie e trucchi possibili, dando lo stesso aspetto visivo di usare angoli multipli ovunque, ma in realtà non usarne molti per avviarlo.

E la maggior parte di questi trucchi, mappe di elevazione ve mappe normali. I due si riferiscono al fatto che il secondo può essere creato dal primo, ma per ora, diamo un'occhiata a una tecnica chiamata: bump mapping.

La mappatura del tubero implica l'uso di una sequenza 2D chiamata mappa di elevazione, che assomiglia a una singola versione del tessuto originale. Ad esempio, nell'immagine sopra, c'è una trama di mattoni realistica applicata a 2 superfici piane. La mappa di trama e altezza è simile alla seguente:

I colori della mappa dell'altezza rappresentano le norme della superficie del mattone (abbiamo coperto ciò che è normale Episodio 1 questa serie di articoli). Quando la sequenza di rendering raggiunge il punto di applicare la trama del mattone alla superficie, viene eseguita una serie di calcoli per regolare il colore della trama del mattone alla normalità.

Di conseguenza, sebbene i mattoni siano ancora completamente piatti, sembrano più 3D. Soprattutto se guardi attentamente i bordi dei mattoni, puoi vedere i confini della tecnica: la trama sembra un po 'contorta. Tuttavia, per un rapido numero di aggiungere ulteriori dettagli a una superficie, la mappatura dei tuberi è molto popolare.

Una mappa normale è come una mappa di altezza, ma i colori di quella trama sono normali. In altre parole, non è necessario un calcolo per normalizzare la mappa dell'altitudine. Potresti chiederti come utilizzare i colori per rappresentare una freccia nello spazio. La risposta è semplice: ogni texel è specifico R, G, B valori (rosso, verde, blu) e questi numeri sono direttamente X ve Z valori per il vettore normale.

Nell'esempio sopra, il diagramma a sinistra mostra come la direzione della normale cambia su una superficie irregolare. Per rappresentare le stesse normali in una trama piatta (diagramma centrale), assegniamo loro un colore. Nel nostro caso, R, G, B Aumentando i valori (0.255.0) per la scala e poi la quantità di rosso per la sinistra e blu per la destra.

Si noti che questo colore non si fonde con il pixel originale: indica al processore in quale direzione si trova il normale in modo che la fotocamera possa calcolare con precisione gli angoli tra le luci e la superficie strutturata.

Quando si utilizza l'illuminazione dinamica sul palco, i vantaggi di bump e matching normale brillano davvero e il processo di rendering calcola gli effetti dei cambiamenti di luce per pixel, non per ogni angolo. I giochi moderni usano molta consistenza per migliorare la qualità della magia ora.

Questa parete dall'aspetto realistico è incredibilmente solo una superficie piana: i dettagli su mattoni e malta non sono realizzati con milioni di poligoni. Invece, fa solo 5 trame e molti lavori matematici intelligenti.

La mappa di elevazione è stata utilizzata per produrre la mappa normale per simulare il percorso dei mattoni di ombreggiatura a se stessi e tutti i cambiamenti minori sulla superficie. La trama ruvida è stata utilizzata per cambiare il modo in cui la luce riflette diversi elementi del muro (ad esempio un mattone appiattito riflette in modo più coerente rispetto alla malta grezza).

L'ultima mappa, etichettata AO nell'immagine sopra, fa parte di un processo chiamato congestione dei media: questa è una tecnica che vedremo in un prossimo articolo, ma per ora sono solo ombre.

La corrispondenza dei tessuti è molto importante

È assolutamente cruciale per la progettazione di giochi testurizzati. Ottieni la versione 2019 di Warhorse Studio Il regno sta arrivando: salvezza Un gioco di ruolo in prima persona fondato nel 15 ° secolo in Boemia, un antico paese nel Medio Oriente Europa. I progettisti erano ansiosi di creare un mondo realistico possibile per il periodo in questione. E il modo migliore per dare vita all'attore centinaia di anni fa è che ogni vista del paesaggio, edificio, set di abbigliamento, capelli, prodotti quotidiani, ecc. Doveva avere il look giusto per questo.

Ogni trama unica in questa singola immagine del gioco è stata creata dagli artisti e il loro uso dal motore di rendering controllato dal programmatore. Alcuni sono piccoli, di base e richiedono pochissimo per filtrare o elaborare altri tessuti (come le ali di pollo).

Altri sono ad alta risoluzione e mostrano molti dettagli precisi; filtrato anisotropicamente e mescolato con normali mappe e altre trame - basta guardare il volto dell'uomo in primo piano. I diversi requisiti di testurizzare ogni elemento sul palco sono spiegati dai programmatori.

Tutto ciò sta accadendo ora in molti giochi perché i giocatori stanno aspettando maggiori dettagli e realismo. Le trame cresceranno e saranno utilizzate maggiormente su una superficie, ma il processo di campionamento del testo e di applicazione ai pixel sarà essenzialmente lo stesso dei giorni di Quake. La migliore tecnologia non muore mai, non importa quanti anni!