Guida alle schede video

Aperto da Max_R, 21 Gennaio 2007, 17:00:36

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Max_R

Scheda video
La scheda video è un componente del computer che ha lo scopo di generare un segnale elettrico (output) di quello che il sistema sta facendo perché possa essere mostrato a monitor (display). A seconda del tipo di computer questo dispositivo può essere più o meno potente: i primi modelli di scheda video potevano visualizzare solo testo; successivamente si sono diffuse anche schede video in grado di mostrare output grafici (immagini non testuali) e, recentemente, anche modelli tridimensionali texturizzati in movimento e in tempo reale. Questi ultimi tipi di scheda provvedono anche ad elaborare e modificare l'immagine nella propria memoria interna, mentre in passato con le vecchie schede 2D si potevano elaborare semplici immagini 3D con l'aiuto della CPU che doveva così eseguire una lunga e complessa serie di calcoli. Ora invece, una moderna scheda video integra al suo interno una GPU (Graphics processing unit), ossia un processore specializzato nel trattamento di immagini e formato da un certo numero di pipeline e vertex unit, e della memoria RAM.

VGA
VGA (dall'inglese Video Graphics Array) è uno standard analogico relativo a display per computer introdotto sul mercato nel 1987 da IBM.
Ci si riferisce a VGA come "array" (matrice) invece che "adapter" (adattatore, periferica) perché progettata sin dall'inizio come un chip singolo, rimpiazzando il Motorola 6845 e le dozzine di chip implementati sulle schede madri ISA (Industry Standard Architecture) che implementavano standard quali l'MDA (Monochrome Display Adapter), il CGA (Color Graphics Adapter), o l'EGA (Enhanced Graphics Adapter).
Il chip VGA può essere installato direttamente sulla scheda madre di un PC con molta facilità (si richiede solo della memoria video, un oscillatore quarzato e un RAMDAC esterno), e già i primi modelli PS/2 erano equipaggiati col chip VGA sulla scheda madre.
Come per molto dell'hardware IBM, sono stati prodotti cloni delle schede grafiche VGA da molti altri produttori. Nonostante lo standard VGA nella forma originale fosse considerato obsoleto da tempo, è stato l'ultimo standard IBM che la maggior parte delle case produttrici decisero di seguire, facendone uno standard grafico tanto usato da essere presente negli attuali PC. Il VGA era già stato tecnicamente superato dallo standard IBM XGA, ma in realtà è stato superato dalle numerose estensioni fatte al VGA da altre case produttrici, come il Super VGA.
Il VGA rimane tutt'oggi un importante standard grafico. È il "minimo comune denominatore" che tutte le schede grafiche devono essere in grado di gestire, ancor prima di caricare driver specifico della scheda. Nelle macchine Windows, lo splash screen che appare all'avvio è visualizzato mentre la macchina sta lavorando in modalità VGA (non ha ancora caricato i driver specifici), ed è anche il motivo per il quale la schermata ha sempre bassa risoluzione e profondita di colore

AGP
L'Accelerated Graphics Port (AGP) è stata sviluppata da Intel nel 1996 come modo per aumentare le prestazioni e velocità delle schede grafiche connesse ai PC. Si basa sullo standard PCI 2.1, e per questo la frequenza base a cui opera è di 66 MHz. Il trasferimento dei dati avviene in modalità parallela, per cui non è possibile una comunicazione bidirezionale contemporanea.
La prima versione dello slot AGP raddoppiava la frequenza di un normale slot PCI, raggiungendo quindi i 133 MHz. Successivamente le versioni 2.0 e 3.0 hanno raddoppiato ogni volta la frequenza, fino a raggiungere i 533 MHz odierni. Per prevenire problemi di compatibilità tra le differenti versioni, è previsto il funzionamento in modalità 1x, quindi a 66 MHz. Questa modalità viene attivata automaticamente dal BIOS in caso di problemi.
Modalità di compatibilità: 66 x 1 = 66 MHz, trasferimento dati a 266 MB/s
1.0: 66 x 2 = 133 MHz, trasferimento dati a 533 MB/s
2.0: 66 x 4 = 266 MHz, trasferimento dati a 1066 MB/s
3.0: 66 x 8 = 533 MHz, trasferimento dati a 2133 MB/s
La versione 3.0 è l'ultima evoluzione di questo bus, che si prepara ad essere rimpiazzato dal più veloce PCI Express, il quale sostituirà anche l'interfaccia PCI. Questo nuovo standard dovrebbe permettere velocità di trasferimento fino a 5,8 GB/s. In questo modo verrà ad eliminarsi il principale collo di bottiglia per quanto riguarda la grafica 3D, che è stato storicamente proprio lo slot AGP.
Esistono tre tipi di alimentazione previsti dallo standard:
AGP 1,5 V
AGP 3,3 V
AGP Universale (compatibile con entrambi i precedenti)
La molteplicità delle possibili velocità di trasmissione dei dati e dei voltaggi ha portato a problemi di compatibilità, specialmente per quanto riguarda le vecchie schede madri. A partire da quei modelli che supportano l'AGP 3.0, i produttori si sono sforzati per supportare tutte le possibili configurazioni. Gli ultimi modelli di schede grafiche, come ad esempio la serie 6800 ultra della Nvidia, richiedono troppa potenza perché lo slot AGP possa sopperire a questa richiesta. Così, sono in commercio alcune schede grafiche con connettori MOLEX per un ulteriore alimentazione. Questo non verrà abbandonato grazie alle specifiche di alimentazione del PCI Express, molto maggiori rispetto a quelli dell'AGP, infatti sono ora (2006-2007) in commercio schede video (di fascia alta) che richiedono un'alimentazione aggiuntiva. Per riconoscere i tre tipi di alimentazione sono stati predisposti degli slot e delle schede leggermente diverse: smontando la scheda video, dei pin in basso e il connettore VGA a destra, va osservato il secondo pin da destra. Se questo è connesso in qualche modo alla circuiteria della scheda, questa supporta la modalità 1,5V. Se in caso contrario nessuna, la scheda supporta la modalità 3,3V. Lo slot AGP invece è più facilmente distinguibile. Se il separatore è posto verso la sinistra dello slot (verso il retro del case) lo slot supporta unicamente i 3,3V. Se è posto a destra (verso il fronte del case) lo slot supporta unicamente gli 1,5V. Se invece non sono presenti separatori nello slot, questo è di tipo Universal e compatibile con tutte le diverse alimentazioni.



GPU
La Graphics Processing Unit (GPU) (chiamata anche VPU, acronimo di Visual Processing Unit) è il microprocessore di una scheda video per computer o consolle.
Le GPU moderne, sebbene spesso più lente delle CPU, sono molto più veloci di esse nell'eseguire i compiti per cui sono specializzate.
La GPU attualmente entra pesantemente in funzione solo nell'accelerazione 3D, difatti nell'accelerazione 2D i dati vengono elaborati dalla CPU e allocati dalla GPU in una parte della memoria chiamata frame buffer; da lì, il RAMDAC (Digital to Analogic Converter) legge i valori di colore da assegnare ai singoli pixel e genera il segnale per lo schermo.
Diversamente, quando viene elaborata un'immagine 3D, la CPU del computer si occupa solo del calcolo delle coordinate geometriche dei vertici dei poligoni che compongono gli oggetti della scena, e lascia alla GPU il compito di riempire le "facce" formate da questi vertici, chiamate in gergo Texture, e del calcolo delle ombre e degli effetti grafici da applicare ai poligoni, sgravandosi da pesanti operazioni di calcolo. Dopo di ciò normalmente i dati risultanti verranno posizionati nel frame buffer, per poi passare per il RAMDAC ed arrivare allo schermo.

RAM
La Random Access Memory (Ram) è il supporto di memoria su cui è possibile leggere e scrivere informazioni con un accesso "casuale", ovvero senza dover rispettare un determinato ordine sequenziale, come ad esempio avviene per un nastro magnetico. Questa nelle schede video serve a memorizzare le Textures che andranno a coprire i poligoni durante il rendering della scena. La ram realmente utilizzabile dalla scheda è determinata anche dalla potenza della Gpu (memory bandwidth): schede con chip dalla potenza non adeguata non beneficiano in alcun modo di ingenti quantitativi di ram video.

Poligono
Un poligono è una forma geometrica piana: è quella parte di piano delimitata da una linea spezzata chiusa non intrecciata. I segmenti che compongono la spezzata chiusa si dicono lati del poligono.
Un poligono è detto convesso se è una figura convessa, cioè quando comunque presi due punti appartenenti al poligono, anche il segmento che li congiunge è un sottoinsieme del poligono stesso; concavo altrimenti. Un esempio di poligono concavo è una stella: il segmento che unisce due sue punte è esterno al poligono. Una definizione equivalente di poligono concavo è quella per cui almeno uno dei suoi angoli interni è maggiore di un angolo piatto.

Texture
Una texture è un'immagine di tipo bitmap utilizzata per rivestire la superficie di un oggetto virtuale, tridimensionale, o bidimensionale, con un apposito programma di grafica.

API (Application Programming Interface)    
Librerie di funzioni tramite le quali un'applicazione può accedere alla scheda video, senza preoccuparsi di quale tipo o marca essa sia: le API rendono perciò le applicazioni compatibili con qualsiasi scheda (purché queste supportino la specifica API nel driver), e consentono ai programmi di funzionare su tutti i tipi di computer e sulle periferiche abilitate. Le API più diffuse sono Direct3D, OpenGL e Glide.

Glide (perchè siamo di parte :D)
API proprietarie di 3Dfx Interactive.

OpenGL
API sviluppata in origine dalla Silicon Graphics (oggi SGI) ad uso professionale. Data la loro alta efficienza e semplicità d'uso (sono infatti librerie aperte) sono oggi utilizzate anche per le applicazioni consumer (giochi e fotoritocco). Si tratta di API molto efficienti, ma che richiedono un hardware potente per essere gestite al meglio.

Direct3D (D3D)
API per la gestione della grafica tridimensionale di DirectX: una libreria completa di Application Programming Interface sviluppata da Microsoft® a partire dalla release del sistema operativo Windows® 95. Poiché tutte le schede grafiche supportano queste librerie, sono divenute uno standard molto diffuso.

DirectX
DirectX (in origine chiamato "Game SDK" ;) è una collezione di API per lo sviluppo semplificato di videogiochi per Windows. Il kit di sviluppo (SDK) è disponibile gratuitamente sul sito della Microsoft. Le DirectX venivano distribuite dai produttori di giochi stessi insieme al videogioco, ma sono ora incluse direttamente in Windows. La 9.0c è la versione attuale delle librerie.
Da molti le DirectX sono considerate come il miglior set di api grafiche mai creato. Le DirectX vengono utilizzate da molte industrie per creare famosi videogiochi.

Driver
n informatica, è detto driver l'insieme di procedure, spesso scritte in assembly, che permette ad un sistema operativo di pilotare un dispositivo hardware. Il driver permette al sistema operativo di utilizzare l'hardware senza sapere come esso funzioni, ma dialogandoci attraverso un'interfaccia standard, i registri del controllore della periferica, che astrae dall'implementazione dell'hardware e che ne considera solo il funzionamento logico. In questo modo hardware diverso costruito da produttori diversi può essere utilizzato in modo intercambiabile.
Ne consegue che un driver è specifico sia dal punto di vista dell'hardware che pilota, sia dal punto di vista del sistema operativo per cui è scritto. Non è possibile utilizzare driver scritti per un sistema operativo su uno differente, perché l'interfaccia è generalmente diversa.
Il driver è scritto solitamente dal produttore del dispositivo hardware, dato che è necessaria un'approfondita conoscenza dell'hardware per poter scrivere un driver funzionante. A volte, i driver vengono scritti da terze parti sulla base della documentazione tecnica rilasciata dal produttore, se questa è disponibile.
E' sempre consigliabile seguire lo sviluppo delle nuove relase dei drivers in modo da poter ottimizzare l'utilizzo della periferica ed eventualmente espanderne la compatibilità con diversi software e hardware.

Ampiezza del bus di memoria
Il bus è il canale di comunicazione tra vari componenti. L'ampiezza di tale canale si misura in bit, ovvero la lunghezza delle informazioni che possono transitare nel canale in un dato istante. Più grande sarà l'ampiezza più grandi saranno le informazioni trasferibili in un dato momento.

Bandwith
La banda passante è la quantità di dati che è possibile trasferire in un dato intervallo di tempo misurata in gb/s. Essa è influenzata dalla velocità a cui opera il dispositivo che deve comunicare, dall'ampiezza del bus impiegata nel trasferimento e dalle latenze.

Pipeline
l termine pipeline in informatica e in elettronica si riferisce a un manufatto composto da più elementi. Ogni elemento provvede a ricevere in ingresso un dato o un segnale, ad elaborarlo e poi a trasmetterlo all'elemento successivo. Quindi il flusso di dato o di segnali percorre tutti gli elementi fino all'ultimo elemento come quando una conduttura è attraversato da un fluido infatti il termine pipeline in inglese indica una tubatura o una conduttura. Esistono tre tipi di pipeline:
* La pipeline dati che viene utilizzata all'interno dei moderni microprocessori
* La pipeline grafica, che viene utilizzata dalle schede grafiche tridimensionali.
* La Pipeline software utilizzata da sistemi operativi Unix-like e da alcuni programmi.

Pipeline dati
La pipeline dati è una tecnologia utilizzata dai microprocessori per incrementare il throughput, ovvero la quantità di istruzioni eseguite in una data quantità di tempo.
L'elaborazione di un istruzione da parte di un processore si compone di cinque passaggi fondamentali:
1. IF: Lettura dell'istruzione da memoria
2. ID: Decodifica istruzione e lettura operandi da registri
3. EX: Esecuzione dell'istruzione
4. MEM: Attivazione della memoria (solo per certe istruzioni)
5. WB: Scrittura del risultato nel registro opportuno
Praticamente ogni CPU in commercio è gestita da un clock centrale e ogni operazione elementare richiede almeno un ciclo di clock per poter essere eseguita. Le prime CPU erano formate da un'unità polifunzionale che svolgeva in rigida sequenza tutti e cinque i passaggi legati all'elaborazione delle istruzioni. Una CPU classica richiede quindi almeno cinque cicli di clock per eseguire una singola istruzione.
Con il progresso della tecnologia si è potuto integrare un numero maggiore di transistor in un microprocessore e quindi si sono potute parallelizzare alcune operazioni riducendo i tempi di esecuzione. La pipeline dati è la massima parallelizzazione del lavoro di un microprocessore.
Una CPU con pipeline è composta da cinque stadi specializzati, capaci di eseguire ciascuno una operazione elementare di quelle sopra descritte. La CPU lavora come in una catena di montaggio e quindi ogni stadio provvede a svolgere solo un compito specifico. Quando la catena è a regime, ad ogni ciclo di clock esce dall'ultimo stadio un'istruzione completata. Nello stesso istante ogni unità sta elaborando in parallelo i diversi stadi delle successive istruzioni. In sostanza si guadagna una maggior velocità di esecuzione a prezzo di una maggior complessità circuitale del microprocessore, che non deve essere più composto da una sola unità ma da cinque unità che devono collaborare tra loro.

Pipeline grafica
Nella grafica tridimensionale la pipeline grafica è una pipeline designata alla trasformazione dei modelli tridimensionali del mondo in immagini bitmap bidimensionali.
Per realizzare l'immagine bitmap la pipeline può implementare uno o più algoritmi come lo Z-buffering, il reyes rendering e il ray tracing e altri algoritmi.
Implementazioni
La pipeline può essere realizzata in software o in hardware sebbene per questioni di velocità e di prestazioni tutte le moderne schede grafiche dispongono di una pipeline grafica più o meno avanzata. Sebbene esistano molte implementazioni di una pipeline grafica tutte queste implementazioni suddividono il lavoro in quattro operazioni principali:
* Modellazione: Durante questa fase vengono generati, come insieme di vertici, gli oggetti da rappresentare; ad esempio linee, poligoni, punti.
* Elaborazione geometrica: In questa fase si attuano principalmente quattro elaborazioni:
Normalizzazione (o Viewing): ovvero l'adattamento delle coordinate degli oggetti a quelli della camera virtuale.
Clipping: vengono rimosse tutte le parti degli oggetti non visibili, perché fuori dalla vista.
Ombreggiatura (Lighting and shading (Illumination)): in questa fase vengono calcolati i colori e i riflessi degli oggetti tenendo conto delle proprietà dei singoli poligono e delle luci incidenti e riflesse.
* Proiezione: L'immagine 3d è proiettata sulla superficie 2d.
* Rasterizzazione o Scan Conversion: La scena è convertita da un insieme di vertici (quindi da immagine rasterizzata) ad un insieme di pixels (bitmap o immagine raster).
Gestione
La pipeline grafica può essere gestita direttamente dal programma tramite accesso diretto all'hardware o può essere gestita tramite librerie grafiche che forniscono delle primitive di manipolazione che vengono utilizzate dal programma. Nella maggior parte dei casi vengono utilizzate le librerie grafiche sebbene queste introducano una leggera penalizzazione delle prestazioni permettano al programma di sfruttare le schede grafiche in commercio senza dover scrivere una versione apposita del programma per ogni tipologia di scheda grafica. Le più diffuse librerie grafiche tridimensionali sono l'OpenGL e le DirectX.

Rendering
Il Rendering è un termine dell'ambito della computer grafica; identifica il processo di "resa" ovvero di generazione di un'immagine a partire da una descrizione matematica di una scena tridimensionale interpretata da algoritmi che definiscono il colore di ogni punto dell'immagine. La descrizione è data in un linguaggio o in una struttura dati e deve contenere la geometria, il punto di vista, le informazioni sulle carattersitiche ottiche delle superfici visibili e sull' illuminazione.
È uno dei temi più importanti della grafica tridimensionale computerizzata e in pratica sempre in relazione con tutti gli altri. Nella 'pipeline grafica' è l'ultimo importante stadio e fornisce l'aspetto finale al modello e all'animazione.
Con il crescente perfezionamento della grafica computerizzata dal 1970 in avanti è diventato un sempre più importante soggetto di studio e ricerca. È usato per: montaggio video/giochi per computer, simulatori, effetti speciali per film/serie TV, e visualizzazione di progetti. Ciascuno con una differente combinazione di caratteristiche e tecniche.
Sono disponibili in commercio un gran numero di motori di render, alcuni dei quali integrati nei più diffusi pacchetti di modellazione e animazione tridimensionale, alcuni altri indipendenti, altri ancora distribuiti come progetti open source.
Dall'interno, un renderizzatore è un programma progettato attentamente e basato su una combinazione selezionata di metodi relativi a: ottica, percezione visiva, matematica e ingegneria del software.
Nel caso della grafica tridimensionale, il rendering è un processo lento e richiede un gran numero di elaborazioni , oppure è assistito in tempo reale dagli acceleratori 3D delle schede grafiche (per i giochi tridimensionali).
Fenomeni
Le immagini possono essere analizzate in termini di una serie di fenomeni visibili. Le ricerche e i progressi nel campo del rendering sono state in gran parte motivate dal tentativo di simularli in modo accurato ed efficiente.
* shading — ombreggiatura; variazione del colore e luminosità di una superficie a seconda della luce incidente
* texture mapping — un metodo per definire i dettagli del colore di una superficie mettendola in corrispondenza con un'immagine (texture)
* bump mapping — un metodo per simulare irregolarità nella forma di una superficie mettendola in corrispondenza con un'immagine (bump map) che definisce una perturbazione fittizia della superficie, usata solo per ricavarne una distorsione della direzione perpendicolare (normale) impiegata nei calcoli per la propagazione della luce.
* normal mapping — un metodo simile al bump mapping in cui l'immagine definisce direttamente come perturbare la normale della superficie in quel punto.
* displacement-mapping — un metodo simile al bump mapping in cui l'immagine definisce un'effettiva perturbazione della forma della superficie, producendo ad esempio silhouette irregolari.
* distance fog — attenuazione e dispersione della luce nel passaggio attraverso l'aria o altri mezzi; solo il vuoto è perfettamente trasparente.
* shadows — gestione delle ombre
* soft shadows — ombre parziali prodotte da sorgenti di luce estese
* reflection — riflessioni speculari o quasi
* transparency — trasmissione della luce attraverso un oggetto
* rifrazione — deviazione della luce nel passaggio da un mezzo all'altro
* illuminazione indiretta e Global illumination — tenere conto della luce riflessa più volte (il minimo è una sola riflessione, sorgente di luce -> oggetto -> camera)
* caustiche — accumulo di luce riflessa o rifratta proiettata in forme caratteristiche su altri oggetti (ad esempio la forma a cardioide della luce riflessa dall'interno di un cilindro o le forme irregolari in movimento sul fondo di una piscina)
* depth of fieldo DoF — simulazione della sfocatura degli oggetti vicini e lontani come in una ripresa fotografica.
* motion blur — simulazione della sfocatura degli oggetti in movimento rapido come in una ripresa fotografica.
Tecniche
Le principali tipologie di algoritmi per risolvere il problema sono:
* radiosity: collegata alla matematica agli elementi finiti;
* ray tracing: collegata dalla matematica probabilistica.
Questi approcci possono essere particolarmente intensi dal punto di vista computazionale, perché entrambi creano una struttura abbastanza completa per la gestione delle equazione di rendering.
Per le applicazione real-time, non è pensabile di eseguire una elaborazione completa. In genere si semplifica il problema con una delle seguenti approssimazioni:
* Nessuna illuminazione, solo texture mapping, poiché il colore intrinseco di un oggetto ha l'influenza maggiore sul suo aspetto.
* Illuminazione diretta: si tiente conto solo della luce che va dalla fonte di illuminazione alla superficie, non di quella riflessa da altre superfici presenti nella scena. Questa luce potrà essere tenuta in considerazione con altri casi speciali attraverso il precalcolo.
Alcuni dei principali algoritmi, sono:
* l'"algoritmo del pittore"
* Algoritimi di tipo scanline
* Algoritmi che utilizzano lo Z-buffer
* Illuminazione globale
* Radiosity
* Ray tracing
* Volume rendering
Chi deve eseguire il rendering di grandi quantità di immagini (per esempio quelle di una sequenza cinematografica) usa una rete di computer connessi tra loro, detta render farm.
L'attuale stato dell'arte per la costruzione di scene in 3D per la creazione di film è il linguaggio di descrizione delle scene RenderMan creato dalla Pixar. (da confrontare con formati più semplici per la descrizione di un ambiente 3D come VRML o API come DirectX o OpenGL che sfruttano l'accelerazione hardware delle moderne schede grafiche).
altri popolari e potenti motori di render:
* Mental Ray
* Vray
* Brazil
* POV-Ray

Shader
La parola inglese shader indica uno strumento informatico della computer grafica 3D che permette di determinare l'aspetto finale della superficie di un oggetto o di un'immagine. Solitamente consiste in un insieme di istruzioni o un programma.
Questi oggetti sono chiamati a regalare "realtà" ad oggetti virtuali; in questo difficile compito si avvalgono di tecniche specifiche ormai consolidate (applicazione di texture; effetti di superficie, o "mapping"; gestione delle ombre; effetti di postprocessing). Nelle competenze degli shader rientra spesso anche la replicazione di eventi fisici molto complessi (soprattutto nell'ambito dell'ottica: diffusione, riflessione, rifrazione, dispersione della luce).

Pixel Shader
Il Pixel Shader è una funzione grafica che permette di calcolare gli effetti su una base di pixel. A seconda della risoluzione, ci sono più di 2 milioni di pixel da elaborare, rischiarare, ombreggiare e colorare su ciascun frame, a 60 frame al secondo, il che provoca un carico notevole di gestione. L'elaborazione di pixel permette di evidenziare una ricchezza straordinaria di dettagli che consente di vedere oltre il livello del triangolo. Inoltre, grazie al Pixel Shader programmabile gli artisti e gli sviluppatori hanno la possibilità di creare degli effetti a base di pixel che rispecchiano la loro visione creativa. Invece di limitarsi a scegliere una serie di effetti preconfezionati, gli sviluppatori possono crearne di nuovi e personali. Di conseguenza, grazie al Pixel Shader programmabile gli sviluppatori possono usufruire di uno strumento senza precedenti, in grado di determinare la luminosità, le ombre e il colore di ogni singolo pixel e di creare una quantità considerevole di effetti incredibili. Inoltre, l'ampia possibilità di programmazione permette agli sviluppatori di creare vari metodi di gradazione degli oggetti.

Vertex Shader
Il Vertex Shader è un'elaborazione grafica usata per aggiungere degli effetti speciali agli oggetti in un ambiente 3D, per mezzo di operazioni matematiche sui dati del vertice degli oggetti. Ogni vertice può essere definito da molte variabili diverse. Ad esempio, si definisce un vertice sempre in base alla sua posizione in un ambiente 3D, utilizzando le coordinate x, y e z. Inoltre, si possono definire i vertici grazie ai colori, alle texture e alla luminosità. In realtà, i Vertex Shader non modificano il tipo di dati ma, semplicemente, ne cambiano i valori; in questo modo, un vertice appare con una texture o un colore diverso, oppure con una posizione diversa. E' possibile usare i Vertex Shader per dare vita e personalità ai caratteri e alle ambientazioni, ad esempio per raffigurare la nebbia che cala in una valle ed avvolge una collina; oppure per ottenere delle espressioni del volto realistiche, facendo così apparire delle fossette o delle rughe quando un personaggio sorride. Alcuni esempi di effetti shading sul vertice: elaborazione dei colori a matrice, per permettere ai programmatori di creare un'animazione realistica dei personaggi, riproducendo fino a 32 "ossa" per ogni articolazione, in modo da offrire dei movimenti convincenti; deformazione delle superfici, che consente agli sviluppatori di creare delle superfici realistiche (ad esempio le onde o la superficie increspata dell'acqua); morphing del vertice, usato per cambiare la forma degli elementi del triangolo, in modo da ottenere una movimentazione naturale dei personaggi.

Geometry Shader
l Geometry Shader è un nuovo componente di rendering che entrerà a far parte del mondo della computergrafica a partire dalle DirectX 10 di prossima uscita. I geometry shader aiuteranno il processo di rendering, permettendo agli oggetti di essere modificati e ri-renderizzati a ogni nuovo frame. Alcuni oggetti possono nascere da un singolo vertice. Nel geometry shader, le leggi della fisica non trovano applicazione, e un dato può nascere dal nulla ed essere distrutto dalla volontà di un programma shader. Questo, inoltre, incrementerà l'output del processo di rendering. I processi che possono richiedere più passaggi di vertex e pixel shader possono essere compiuti raggirando i vertex shader. L'oggetto può essere richiamato e alterato nelle geometry shader del frame seguente.

Filtro Antialiasing
L' antialiasing (delle volte abbraviato con AA) è una tecnica per ridurre l'effetto aliasing (scalettamento) quando un segnale ad alta risoluzione viene mostrato a bassa risoluzione. L'antialiasing ammorbidisce le linee smussando i bordi e omogeneizzando l'immagine.
Le schede video lavorano con triangoli e linee che, per essere mostrati, devono essere campionati (sampling). Questa è la fase dove vengono stabiliti i colori dei singoli pixel e che purtroppo produce le scalinature tra gli oggetti finali. Durante la campionatura al pixel viene assegnato un solo colore prendendo come riferimento il suo centro; se un pixel appartiene ad una linea che delimita due campi, anche in questo caso prevale il colore del campo a cui appartiene il centro del pixel. Per questo motivo su linee oblique, zone con alta differenza di colore o sui bordi netti si forma l'effetto alias.
Per questo nella maggior parte dei casi, (generalmente a livello hardware) l'immagine viene campionata come se invece di un singolo pixel ce ne siano di più e al pixel finale viene assegnato il colore medio (supersampling). L'attivazione dell'effetto così chiamato Antialiasing nei videogiochi comporta però (nella maggioranza dei casi) ad una diminuzione del frame rate sviluppato dalla scheda video, proprio a causa della grande quantità di dati che quest'ultima si trova a gestire.

Filtro Anisotropo
E' una tecnica di filtraggio usata per rimuovere l'effetto di "sbiadimento" nelle superfici inclinate sulle quali vengono applicate le textures. Solitamente è disponibile in tagli da 2x fino a 16x. A differenza degli algoritmi impiegati per l'AntiAlias, quelli di filtraggio anisotropico hanno meno impatto sul framerate.

HDR
L' HDR, acronimo di High Dynamic Range, è una tecnica utilizzata in computer grafica e in fotografia per consentire che i calcoli di illuminazione possano essere fatti in uno spazio più ampio (un high range appunto) e si possano rappresentare valori di illuminazione molto alti o molto bassi.
Le tecniche HDR sono fondate sulla natura fisica della luce. Per i calcoli si utilizzano le stesse unità di misura della fotometria, dove, per esempio, al sole viene assegnato un valore di luminosità milioni di volte più grande di quello del monitor del personal computer.
L'HDR dà la possibilità di immortalare una scena avendo poi il totale controllo sull'immagine finale; ad esempio è possibile esporre nuovamente la foto, correggendo o perfezionando il risultato finale.

T&L (Transform and Lightning)     
Due fasi collegate della costruzione della scena 3D costituite dalla conversione (transform) e dall'illuminazione (lighting) dei poligoni che compongono lo scheletro della scena. La fase di transformation, in particolare, consente la conversione di tutti i dati in 3D in un immagine 2D (visto che lo schermo è una superficie piana). In questa fase si generano quindi un insieme di punti (vertici di oggetti volumetrici) che, oltre a essere posizionati in un dato punto della scena, contengono le informazioni relative alla propria illuminazione. Se i punti si spostano sulla scena (o se cambiano le fonti di luce) occorre calcolare la variazione dell'illuminazione di ognuno dei vertici che compongono la scena 3D: questa operazione prende il nome di lighting.

T&L hardware    
Termine che si usa per indicare una unità di calcolo interna alla scheda grafica in grado di eseguire in modo indipendente le operazioni di Transform and Lightning (che richiedono una grande mole di calcoli in virgola mobile). Grazie all'unità T&L, progettata appositamente per eseguire questo genere di calcoli, il processo di generazione viene eseguito in modo molto più veloce.

Alpha blending
Processo che gestisce il livello di trasparenza (o di opacità) dei pixel rispetto ai livelli sottostanti. È il sistema che permette di simulare la foschia, la trasparenza dell'acqua, la visione attraverso vetri sporchi.

Alpha channel
Quantità di memoria del framebuffer riservata ad immagazzinare le informazioni relative al grado di trasparenza di un pixel nel processo di alpha blending. In genere il canale alfa è di 8 bit.

Multitexturing   
Applicazione di più texture su uno stesso oggetto.

Z-Buffer   
Memoria video dove è conservata la posizione di un punto nello spazio 3D. Lo Z-buffer, in particolare, conserva le informazioni dell'asse z di un pixel (e quindi le informazioni sulla profondità del punto). Lo Z-Buffer può avere una precisione a 16, 24 oppure 32 bit: maggiori sono i bit utilizzati, più precisa è l'informazione memorizzata e migliore sarà la qualità finale del rendering. Questo buffer permette infatti al processore grafico di selezionare quali pixel dovranno essere renderizzati e quali sono coperti da altri pixel o sono troppo lontani per essere visualizzati.

Unità Texture Mapping (TMUs)
Le texture necessitano di essere indirizzate e filtrate. Questo lavoro è effettuato dalle TMU che lavorano assieme alle unità pixel e vertex shader. Il numero di unità texture in un processore grafico è utilizzato per confrontare due differenti schede nelle prestazioni di "texturing", cioè nell'applicazione di texture. Chiaramente, più sono le unità TMU, più la scheda sarà veloce nel processare le informazioni delle texture.

Unità Raster Operator (ROPs)
I processore raster sono responsabili della scrittura dei dati pixel nella memoria. La velocità a cui funzionano è conosciuta come fill rate. ROPs e fill rate sono valori molti importanti per le schede grafiche moderne. Mentre il lavoro effettuato dalle ROP è importante, non è necessariamente un collo di bottiglia, come invece era in passato, e non è utilizzato come indicatore prestazionale.

Vedere anche qui.

Questo messaggio è stato aggiornato da Max_R il 24/01/2007  alle ore  23:27:31

afsfaes

azz quanta roba!
Complimenti, sarà un'ottima guida per chi ne conosce poco delle schede video!

Max_R

Naturalmente è sempre ben accetto ogni aiuto nel correggere, aggiungere o aggiornare :)

benna

Complimenti! Ottima guida:sag:


Ninfea


af624726

ottima guida!!
manca poca roba dai :) e quella che c'è mi sembra di pregevole fattura ;):D

The Doctor: Think you've seen it all? Think again. Outside those doors, we might see anything. We could find new worlds, terrifying monsters, impossible things. And if you come with me... nothing will ever be the same again!

Max_R

Prossimamente provvedo a chiarire la faccenda degli standard Agp ;)

peppos83

T&L:D???

Cmq ottima guida...

Bye ;)

HD3850 - V5 5500pci (Tnx Amigamerlin) - SIS Mirage Graphics Sfidatemi :kazim:

Max_R


af624726

The Doctor: Think you've seen it all? Think again. Outside those doors, we might see anything. We could find new worlds, terrifying monsters, impossible things. And if you come with me... nothing will ever be the same again!