Texture Filtering > Speciale
0 Commenti
Aggiungi ai preferiti / Condividi
0
Articolo utile? 8 voti
+0
     

Texture Filtering - Speciale

Inviato il 29/06/2007 da Gabriele "Graphixillusion" Straccamore

Con la necessità di creare texture sempre più complesse e realistiche, impiegate per dar vita a realtà digitali sempre più grandi e dettagliate, si è inevitabilmente creato il problema dei cosiddetti "artefatti grafici", ovvero tutte quelle anomalie visive che affliggono le immagini quando vengono manipolate. Introduciamo quindi il termine di Texture Filtering, ovvero il processo usato per determinare il colore di un pixel di una mappa, usando il colore del Texel più vicino ad esso (per texel si intende un pixel della texture). Il metodo esegue quindi una sorta di interpolazione tra i pixel con lo scopo di arrivare ad un'immagine manipolata che mantenga, quanto più inalterato possibile, il livello di qualità iniziale. Pensiamo, ad esempio, a quando up-scaliamo o down-scaliamo una foto: a seconda del valore di scala, che sia esso in negativo o in positivo, si andranno a perdere inevitabilmente i dettagli dell'immagine originale. In computer grafica e nella grafica in real time, ci sono diverse tecniche di texture filtering che sono impiegate per raggiungere sempre la miglior resa visiva ottenibile.

Mip-mapping

Il termine "MIP" è un acronimo e sta per "Multum In Parvo" che tradotto dal Latino significa "Molto in piccolo". In Computer Grafica, le mip-map sono delle texture precalcolate ed ottimizzate di varie dimensioni (generalmente sempre più piccole rispetto all'originale) che accompagnano la bitmap di partenza. A seconda della posizione della visuale della camera, il motore poligonale deciderà quale delle texture sarà meglio renderizzare. Prendiamo, come esempio, un quadro che è posizionato alla fine di un corridoio: osservandolo da vicino, la texture verrà visualizzata con il massimo del dettaglio e a piena risoluzione; man mano che ci allontaniamo da esso il motore sceglierà progressivamente, ed in maniera del tutto trasparente, delle bitmap più piccole e con un livello di dettaglio più basso. All'aumentare della distanza visiva, le differenze saranno impercettibili e si potrà spostare la priorità di calcolo sugli oggetti che si avvicineranno sempre di più alla camera. Non a caso il Mip-mapping è largamente usato nei simulatori di volo dove è necessario rappresentare, quanto più realisticamente possibile, il panorama in qualsiasi posizione si trovi il velivolo che sia esso in alta o bassa quota.

(esempi di mip-maps)

Bilinear e Trilinear Filtering

Data la necessità di manipolare continuamente le immagini e per far sì che il processo sia visualizzato correttamente, il Mip-mapping è strettamente correlato a due altri filtri importanti: il Bilinear e il Trilinear Filtering.
Il Bilinear filtering è un processo usato per smussare le immagini quando queste vengono ridimensionate più o meno rispetto alla loro dimensione originale. Ogni pixel della bitmap verrà interpolato con gli altri quattro texel vicini passando gradadamente da un colore ad un altro. Si evita così il classico effetto pixelloso che viene a crearsi quando ingrandiamo troppo una foto. Tuttavia il filtro introduce degli artefatti visivi che ne limitano l'utilizzo quando l'immagine viene scalata piu' del doppio sia in positivo che in negativo: la texture risulterà troppo sfocata nel primo caso e perderà troppi dettagli (pixels) nel secondo. Quando si è costretti a passare improvvisamente da una texture in alta risoluzione ad una in bassa, per esempio durante il processo di mipmapping, con il solo uso del filtro bilineare si ottengono delle texture non correttamente visualizzate dovute alla perdita istantanea dei pixel durante il processo di downscale.


Il Trilinear Filtering, estenzione del Bilinear, applica un'interpolazione lineare tra le due mipmap similmente "più vicine" alla texture visualizzata in quell'istante prendendo rispettivamente le mappe più e meno grandi: il risultato vedrà una corretta e naturale trasformazione progressiva della texture senza incombere in errori di visualizzazione. Purtroppo anche il Trilinear Filtering ha dei limiti: il filtro agisce correttamente solamente su texture che sono visualizzate perpendicolarmente alla traiettoria della camera. Quando ci si sposta in visualizzazioni prospettiche, il dettaglio della texture si perde all'aumentare della profondità dal punto di vista. Per ovviare a ciò è stato sviluppato l'Anisotropic Filtering (Filtro Anisotropico o AF abbreviato).

(comparazione trilinear filtering/AF)

 

Filtro Anisotropico (Anisotropic Filtering - AF)

Il Filtro Anisotropico è un filtro che suddivide la texture da processare in diversi sample di forma ellittica e, a seconda del numero di texel sul quale agisce (2x-4x-8x-16x), modifica l'angolazione dell'ellisse in maniera diametralmente opposta al poligono, aumentando la qualità della texture sugli oggetti in prospettiva. Ovviamente ogni porzione di texture che il filtro processa, a sua volta è sottoposta al Trilinear Filtering e/o Bilinear e al processo di Mip-mapping, per cui il Filtro Anisotropico contribuisce attivamente ad aumentare la resa visiva delle textures ma, d'altra canto, richiede un'ingente potenza di calcolo che abbassa inevitabilmente e notevolmente le prestazioni dell'engine. Nella foto qui sotto possiamo vedere un immagine side by side di uno shots senza AF (sinistra) e con AF (destra) attivato.

Anti-Aliasing (AA) e Full Scene Anti-Aliasing (FSAA)

Per concludere, citiamo il conosciutissimo Anti-Aliasing filtering o filtro di Anti-aliasing (abbreviato AA). Il filtro è usato per ridurre quanto più possibile il fastidiosissimo effetto di scalettatura sui poligoni. L'effetto scalettamento (aliasing) viene generato quando un segnale ad alta risoluzione viene mostrato con una risoluzione più bassa. Il filtro Anti-aliasing viene applicato sulle linee smussando i bordi e omogeneizzando l'intera immagine. Per essere visualizzati, tutti i poligoni vengono scomposti nella loro struttura elementare quale triangoli e linee. Questi elementi necessitano di una fase di campionamento che, in gergo, è chiamata "sampling". In questo processo vengono definite tutte le proprietà dei diversi pixel che li compongono, ai quali viene assegnato un solo colore prendendo come punto di riferimento il colore del centro del pixel stesso. Su zone di colore differenti, linee oblique e bordi netti, si genera quindi l'effetto alias proprio per la differenza di colore assegnata ai pixel contigui. L'effetto si attenua introducendo delle istruzioni al livello hardware che processano l'immagine come se ci fossero più pixel di quelli che in realtà ci sono ed, nella fase di sampling, viene assegnato il colore che risulta essere la media dei pixel creati dal filtro. Questa tecnica è anche chiamata "supersampling". L'Anti-aliasing è un filtro che può essere applicato sia localmente che a tutta la scena. In questo caso viene chiamato Full Scene Anti-Aliasing (o FSAA) ed è applicato sull'immagine completa e a tutto schermo per ogni frame renderizzato. A seconda del valore di FSAA che viene applicato (2x-4x-8x-16x), ogni frame viene ricalcolato rispettivamente 2-4-8-16 volte rispetto la dimensione originale e poi downscalato nuovamente per essere adattato alla risoluzione corrente. L'immagine finale risulta essere qualitativamente molto più naturale e realistica. Il Filtro Anisotropico (AA) e il Full Scene Anti-Aliasing (FSAA) sono, ad oggi, i filtri più esosi per quanto riguarda la potenza di calcolo necessaria per la loro elaborazione.



Vai alla pagina principale della CG Accademy

Texture Filtering

Disponibile per:
Texture Filtering - videogioco
Tipo: ND.
Registrati - Login per iscriverti al Mail Alert.
Registrati - Login per scrivere una rece utente.