Compressione 3Dc e normal mapping
Per comprende il funzionamento del normal mapping è necessario puntualizzare alcuni aspetti principali: gli sviluppatori operano su modelli ad alta risoluzione costituiti anche da decine di migliaia di poligoni; per il rendering in tempo reale i modelli devono necessariamente essere semplificati; la fase di illuminazione del pixel risente in modo pesante delle differenze di dettaglio delle due geometrie.La normale è un vettore che definisce l’orientamento locale della superficie indicandone la direzione perpendicolare; questa informazione viene impiegata ad esempio nel calcolo dell’illuminazione. Poiché le normali sono associate ai vertici della geometria, per i pixel non coincidenti a un vertice è necessario interpolare quelle dei tre vertici corrispondenti al triangolo; con geometrie poco dettagliate l’interpolazione può quindi dare origine a vettori che differiscono di molto da quelli presenti nel modello originale.
Con la tecnica del normal mapping, già ampiamente impiegata dagli sviluppatori di giochi, viene generata una texture contenente la differenza tra le normali del modello originale e quelle del modello semplificato. Applicando l’illuminazione su quest’ultimo in base alle informazioni contenute nella texture, l’effetto finale apparente è che il modello semplificato sia particolareggiato quanto quello originale. L’unico inconveniente è che le normal map sono texture di grandi dimensioni e tali da occupare molta banda durante la loro trasmissione.
L’algoritmo 3Dc, che l’R420 è in grado di accelerare in hardware, è stato sviluppato appositamente per comprimere le informazioni di una texture normal map, in quanto quello Dxtc (DirectX Texture Compression), derivato dall’algoritmo S3TC (S3 Texture Compression) e incluso nelle librerie DirectX a partire dalla versione 6, determina una perdita di dettaglio. L’algoritmo 3Dc è in grado di effettuare una compressione con rapporto di circa 4:1.




Ancora nessun commento.