User Tag List

Risultati da 1 a 4 di 4
  1. #1
    Simply...cat!
    Data Registrazione
    05 Mar 2002
    Località
    Brescia,Lombardia,Padania
    Messaggi
    17,080
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Capire i videogame,la svolta fondamentale:l'introduzione dei vertex shader

    Presentazione

    I Vertex Shaders, rappresentano forse la novità più consistente e più foriera di conseguenze tra quelle introdotte recentemente con le DirectX 8 di Microsoft. In questa API, è stata "creata" la possibilità di utilizzare dei specifici "programmi" di calcolo, che modificano i vertici dei triangoli che compongono gli oggetti in una scena 3D, agendo "direttamente" sulle variabili ad essi associate. La struttura di questi programmi, originariamente sviluppata da nVidia per l'openGL (NV_Vertex_Program), utilizza un set proprietario di comandi dedicati al solo 3D, ottimizzato per poter svolgere operazioni complesse con poche istruzioni che permette di velocizzare lo svolgimento di calcoli altrimenti estremamente onerosi in termini di tempo. La novità non si riduce però solo all'efficenza del "linguaggio", che già adesso consente di gestire in software situazioni geometriche molto complesse (come per esempio il test "Vertex Shaders" di 3DMark 2001), con una scioltezza sorprendente. La verà novità, consiste nel fatto che il nuovo Direct3DX, oltre ad utilizzare dei Vertex Shaders predefiniti contenuti nelle DirectX 8, è strutturato in modo da accettare dei Vertex shaders "esterni", scritti dagli stessi sviluppatori dei giochi, e che questi, dall'interno dell'applicazione, possono "comandare" direttamente un hardware appositamente strutturato, passando per l'API di Microsoft in modo "trasparente", diminuendo così drasticamente i livelli di astrazione tra l'applicazione e l'hardware (Pure HAL). La caratteristica più innovativa di questi Vertex Shaders è dunque la "programmabilità" consentita agli sviluppatori, i quali, invece di dover modellare il loro software solo sulle funzioni supportate dall'API, adesso hanno la più ampia possibilità non solo di gestire essi stessi queste funzioni, ma, anche di creare effetti speciali nuovi ed estremamente più complessi di prima, grazie all'uso di un hardware appositamente predisposto.

    Il GeForce3 di nVidia, introduce per primo un engine specifico per il calcolo dei Vertex Shaders programmabili in hardware. Dalla lettura più attenta del documento tecnico di presentazione di nVidia, la cui traduzione segue questa introduzione, emergono dei particolari molto interessanti.

    Innanzitutto, almeno per quanto riguarda le DirectX 8, Il vertex processor dell'nFinite FX engine del GeForce3, risulta essere "alternativo" all'engine di Trasform & Lighting sempre presente nello stesso chip. Infatti, il primo è in grado di svolgere tutte le funzioni di calcolo del secondo, a patto di usare un software specifico che lo utilizzi (i Vertex Shaders programmabili, appunto), mentre il secondo invece si appoggia sulle specifiche delle DirectX7, che non supportano ufficialmente i Vertex Shader. La presenza di entrambi quindi, e' giustificata per la piena compatibilità con il software esistente. La cosa potrebbe risultare strana, dal momento che in realtà verrebbe spontaneo pensare al vertex processor come ad una vera e propria "estensione" del engine di T/L. Ma, questa "scelta", dà forse la misura di quanto abbia influito nell'impostazione progettuale del nFiniteFX Engine la rivoluzione che stà per arrivare con l'XboX, quanto esso e le DirectX 8 costituiscano un taglio netto col passato, e, quanto questo "momento" sia ormai prossimo. E in questo contesto, potremmo già fare una considerazione interessante circa l'Xchip. Poiche' questo chip grafico nascerà esclusivamente per far girare applicazioni ottimizzate solo per DirectX 8 e seguenti, allora non dovrebbe più avere presente al suo interno il tradizionale motore di Trasform & Lighting, lasciando quindi "libero" dello spazio, che potrebbe essere usato in altro modo, per esempio, come si vocifera da un po' di tempo sulla rete, per un deciso "potenziamento" del Vertex Processor.

    La seconda cosa molto interessante nella lettura del documento, e' l'estrema "potenza" dei Vertex Shader programmabili, accoppiati ad un hardware dedicato. Un Vertex Shaders che agisca su un hardware progettato appositamente per eseguirlo, oltre a rendere disponibili una vasta gamma di effetti grafici altrimenti non ottenibili se non con grande dispendio di risorse, rende possibile adesso non solo la piu' ampia possibilità di programmazione dei registri hardware, ma anche la ri-configurabilità in real-time delle sue istruzioni, in pratica, consentendo di ottenere sia un aumento di efficenza, sia una maggiore potenzialità di calcolo, capace di supportare effetti in "peso" ed in "numero" molto elevato, in una misura che mai si era vista su un computer domestico e in tempo reale. L'uso appropriato dei Vertex Shader programmabili in hardware, dovrebbe quindi anche diminuire di parecchio la differenza tra il numero di poligoni/secondo massimi teorici raggiungibili, e quello ottenibile con tutti gli effetti attivati, in funzione della "bravura" del programmatore; una differenza, che sembra invece obbligatoriamente marcata con le unità di Trasform & Lighting attuali, ed il software attuale.

    In conclusione, le prospettive date dall'introduzione di questa nuova feature nel mondo della grafica PC, sono molto promettenti e ampie. Oltre alla vasta gamma di effetti grafici ottenibili e gestibili in real-time, con questa novità, si avrà anche un deciso aumento dell'efficenza dello sfruttamento delle risorse a disposizione, a conferma della filosofia che accompagna l'introduzione del nuovo chip di casa nVidia. Per chi volesse sapere di più sui Vertex Shader, può leggersi anche questo articolo. Vi lascio alla traduzione del documento tecnico ufficiale NVIDIA nFiniteFX™ Engine Programmable Vertex Shaders. Il documento originale in inglese di NVIDIA, lo potete trovare qui.



    L'NVIDIA ® nFinite-FX™ Engine

    L'NVIDIA nfinite-FX engine consente agli sviluppatori la possibilità di programmare un numero infinito di effetti speciali e di visuali customizzate. Invece di dover scegliere obbligatoriamente nell'ambito di effetti consentiti da una rigida palette codificata, per giungere infine ad un risultato finale che mostra il medesimo aspetto e le stesse sensazioni visive per tutti, gli sviluppatori possono in questo modo specificare combinazioni personalizzate per le operazioni grafiche e creare ognuno i propri effetti visivi customizzati. I giochi e le altre applicazioni intensive di grafica saranno in questo modo differenziate ed offriranno effetti visivi più eccitanti e personalizzati. La programmabilità dell'nFiniteFX engine e la moltitudine di effetti che esso consente sono resi possibili da due novita di architettura progettuale brevettate: i Vertex shaders ed i Pixel Shaders. Questo documento tratterà dei vertex shaders programmabili di questo engine.



    I Vertex Shaders programmabili:

    La nuova Generatione del Geometry Processing

    L'avanzamento delle tecnologie nel processamento grafico continua a fornire all'utente finale una grafica 3D in tempo reale sempre più realistica e dettagliata. Con l'introduzione del rivoluzionario nfiniteFX engine di NVIDIA, vengono resi (pienamente) disponibili alla comunità grafica i Vertex ed i Pixel shaders. I Vertex Shaders programmabili sono il primo esempio di una nuova funzionalità nelle unità di processamento grafico (GPU), che abilita una palette di effetti visivi real-time virtualmente infinita. Poichè richiedono calcoli molto complessi, è stato possibile ottenere questi effetti in precedenza solamente grazie alla renderizzazione "offline", ed utilizzando delle stazioni grafiche. L'aggiunta dei Vertex Shaders programmabili ai processori grafici consumer, conduce la grafica per PC ad un livello sbalorditivo.



    Cosa è un Vertex Shader?

    Un Vertex shaders è una funzione del processamento grafico che aggiunge effetti visivi speciali agli oggetti in una scena grafica tridimensionale. Un Vertex shader programmabile consente agli sviluppatori di mettere a punto degli effetti grazie al caricamento di nuove sofisticate istruzioni nella Vertex Shader memory. I Vertex shaders compiono delle operazioni matematiche sui dati dei vertici degli oggetti. Ciascun vertice è definito da una certa quantità di variabili. Nel caso più semplice, a ciascun vertice sono associate delle coordinate X, Y, Z che definiscono la sua posizione spaziale. Un vertice può inoltre includere dei dati che riguardano il colore, l'alpha-channel, texture, e le caratteristiche dell'illuminazione che agisce su di esso come il colore speculare. Guardate la Figura 1 per un esempio visivo di un vertice e qualcuno dei dati ad esso associati.

    Figura 1: dati associati ad un vertice di un triangolo

    NDT: ad ogni vertice di un triangolo sono associati dei valori, che vanno dalle coordinate spaziali, al suo colore di base, alle textures, ai dati che serviranno per calcolarne l'illuminazione; coi VS programmabili, è ora possibile inserire nei registri hardware direttamente tutti questi dati, e senza una gerarchia specifica; ciò consentirà, per esempio, il calcolo agevolato delle "normali" ai vertici, che definiscono esattamente la direzione e l'intensità dell'illuminazione che agisce su di esso: e questo, unito alla interpolazione lineare delle normali, invece che dei singoli dati colore nella fase di Triangle Setup, faciliterà grandemente il calcolo del "Phong Shading", ovvero del Per-Pixel Lighting


    Un Vertex Shader può essere considerato come una scatola magica - i dati dei vertici entrano nella scatola e ne vengono fuori dati di vertici differenti. Ogni singolo dato di vertice che entra, poi esce fuori, ma esso potrebbe essere stato modificato mentre era nella scatola dei Vertex Shaders. I Vertex shaders non creano nè eliminano vertici, ma, semplicemente compiono operazioni su di essi, e cambiano i valori dei dati che descrivono ciascun vertice. Il vertice che ne risulta, può avere una differente posizione nello spazio, un colore differente, può essere più o meno trasparente rispetto a prima, oppure ritrovarsi ad avere differenti coordinate di colore. Tutti questi cambiamenti sui valori dei vertici, svolti tutti insieme su ciascun vertice allo stesso tempo, creano l'effetto speciale per l'intero oggetto. Uno specifico vertice potrebbe non dover essere modificato nel momento che passa sotto il filtro del Vertex Shader. Un Vertex Shader può essere programmato per modificare solo i vertici che hanno certe caratteristiche oppure può essere programmato per modificare ogni singolo vertice allo stesso modo. I programmatori hanno la flessibilità di poter usare un Vertex Shader in un modo univoco su di un unico oggetto (creando un singolo effetto) e quindi, riprogrammare il medesimo Vertex Shader per applicare un effetto completamente diverso sull'oggetto successivo. (vedi la Figura 2). questa programmabilità sarà analizzata dettagliatamente più avanti in questo documento.

    Figura 2: Un vertex Shader Programmabile

    NDT: la programmabilità del Vertex Shader, consiste non solo nella possibilità di poter immettere un certo numero di dati, e tramite il programma modificarli tutti insieme nei modi più disparati possibili; consiste anche nella ri-configurabilità del VS stesso, il quale può cambiare completamente effetto applicato da un ciclo di vertici calcolati, all'altro.

    •   Alt 

      TP Advertising

      advertising

       

  2. #2
    Simply...cat!
    Data Registrazione
    05 Mar 2002
    Località
    Brescia,Lombardia,Padania
    Messaggi
    17,080
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito

    Perchè i Vertex shaders non sono stati disponibili prima d'ora?

    Fino ad adesso, erano troppo complessi da includere in una GPU. Comunque, con l'introduzione dell'NVIDIA nFinite-FX engine, i Vertex Shaders programmabili sono resi ora disponibili, per la prima volta, in una GPU. I Vertex Shaders risultano estremamente potenti quando lavorano in congiunzione con i Pixel Shaders programmambili. I Pixel Shaders sono trattati in un documento tecnico a parte NVIDIA nfiniteFX Engine: Programmable Pixel Shaders. Per maggiori informazioni sulla pipeline grafica 3D, il lettore potrà leggere l'Appendice A per un breve sguardo d'insieme. i Vertex Shaders ed i Pixel Shaders insieme offrono allo sviluppatore software un livello di controllo ed una flessibilità senza precedenti sull'intera pipeline grafica.

    Figura 3: La Pipeline Grafica del GeForce3, grandemente semplificata

    NDT: Ecco uno schema molto semplificato di funzionamento del GeForce3. Qualora i dati immessi, siano istruzioni per le DX7, allora saranno processate dalla tradizionale unità di Trasform & Lighting; Viceversa, se i dati immessi, sono basati su un Vertex Shader programmabile, allora entra in funzione il Vertex Processor dell''nFinite FX engine, il quale sostituisce del tutto nelle sue funzioni l'unità di T/L. Questa "scelta", evidentemente si è resa necessaria per non dover creare un Vertex Processor "dipendente" dall'unità di T/L attuale, bensì una unità completamente dedicata, in funzione delle esigenze dell'XBOX.


    Matematicamente, i Vertex Shaders sono la naturale estensione degli engine di base di Trasform & Lighting delle GPU precedenti. L'output del Vertex Shader è ancora un vertice a tutti gli effetti, però trasformato completamente. Se una specifica GPU possiede un engine di base di Trasform & Lighting in aggiunta ad uno di Vertex shader programmabile, l'engine di base rimarrà inattivo quando il Vertex shader viene usato. Ciò potrà sembrare stravagante, ma, ciò assicura la compatibilità con le applicazioni attuali per il nuovo hardware. Una GPU, che non combina l'engine di Trasform & Lighting con il Vertex Shader, potrebbe soffrire di problemi di incompatibilità. La Figura 3 mostra la relazione di parallelismo tra il Vertex Shader, ed un engine di Trasform & Lighting tradizionale (T&L). L'addizione alle GPU di grande produzione commerciali e professionali dei Vertex Shaders dona all'utenza l'accesso a questa funzionalità, per la prima volta. Le operazioni del Vertex Shader sono complesse nel calcolo e richiedono strutture hardware specifiche tali, che risulta insufficente l'uso di un microprocessore per queste funzioni. Se si prova a far svolgere tali operazioni ad un microprocessore, le prestazioni risulteranno parecchie volte inferiori di quelle di una GPU con un Vertex shader programmabile. Questa differenza di prestazioni relega le operazioni di Vertex Shader su microprocessore alle applicazioni di renderizazzione offline tipo quelle degli effetti speciali per i film. Per gli utenti che richiedono un frame rate interattivo, fluido, l'uso delle operazioni di Vertex Shader richiede una GPU dotata di tale capacità.



    Benefici per l'utente e possibili applicazioni di un Vertex Shader programmabile

    I Vertex Shaders programmabili abilitano una serie di effetti visivi virtualmente infinita senza sacrificare il frame rate in tempo reale. Mentre un microprocessore multi-funzione evita la specializzazione, Le GPU con i Vertex Shaders sono strutturate per svolgere i processi grafici in modo ottimale. Le Unita di di processamento grafico specializzate risultano quindi superiori alle CPU multi-funzione, misurate in termini di prestazione pure, oppure di efficenza strutturale. Le varie categorie di effetti visivi, ottenibili coi Vertex Shaders verranno descritti nelle seguenti sezioni, accompagnate da molte immagini specifiche d'esempio, raggruppate secondo i benefici finali per l'utente.


    Animazione complessa dei movimenti (Complex Character Animation)
    I Vertex Shaders possono riprodurre molto realisticamente la pelle e i vestiti. Possono deformare e piegare in modo realistico articolazioni come gomiti e spalle. L'animazione facciale può ora includere fossette e rughe che appaiono quando il modello ride, e scompaiono quando il sorriso finisce.

    La Keyframe animation usa dei punti di controllo la cui locazione è specifica a determinati intervalli di tempo. Il frame dell'animazione ad un determinato momento di tempo rappresenta la keyframe. I Vertex Shaders calcolano tutta l'animazione tra una keyframe e l'altra in tempo reale - l'animazione risulta così fluida e miscelata in modo continuo tra le due keyframe. Un hardware veloce è in grado di renderizzare più frames nel frattempo, creando una animazione continua, ma, non di finire la sequenza di animazione in nessun altro modo se non come permette la velocità del resto dell'hardware. Questo differenzia la keyframe animation dal Morphing, che è descritto più avanti.

    Possono essere usate molte "ossa" e "muscoli" per modellare un soggetto, dal momento che i Vertex Shaders programmabili consentono di gestire contemporaneamente più di 32 matrici di controllo. Questo si traduce in più di 32 "oggetti" (ossa e muscoli distinti) che possono essere usati per definire ognuna delle componenti singole dello scheletro del modello da animare, con la possibilità di centinaia o addirittura migliaia di articolazioni per modello in totale.

    Effetti ambientali (Environmental Effetcs)

    L'effetto nebbia o di fumo stratificato, può riprodurre la nebbia che si forma nelle valli ed in altre aree dove si deposita in basso, oppure in una camera satura di fumo. Oggetti grandi come colline, o piccoli come un tavolo o una sedia, possono essere aggiunti alla scena al di fuori della nebbia/fumo perchè un il Vertex Shader può applicare selettivamente effetti basati sull'altezza oppure sull'elevazione di ciascun vertice dell'oggetto.

    Se la scena include uno stagno o un oceano, i bagliori ed altri effetti di rifrazione sono essenziali per riprodurre l'acqua in modo realistico nella scena 3D. Notate il campo della luce rifratta dalle superfici non visibili dell'acqua nella figura accanto. I Vertex Shaders possono modellare la rifrazione della luce e/o proiettare una texture in uno spazio 3D in modo che il campo di illuminazione cada sull'oggetto realisticamente.

  3. #3
    Simply...cat!
    Data Registrazione
    05 Mar 2002
    Località
    Brescia,Lombardia,Padania
    Messaggi
    17,080
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito

    Gli effetti di un'ondata di calore sono un altro esempio di effetto ambientale che è possibile ottenere con i Vertex Shaders. Immaginate di essere per esempio nella Valle della Morte, in Arizona ad Agosto - questo, dovrebbe trasformare uno stegosauro come nella figura sotto.



    Deformazioni procedurali (Procedural Deformation)

    Le deformazioni procedurali, calcolate con i Vertex Shaders, possono aggiungere un movimento ad un oggetto altrimenti statico. Per esempio, una bandiera può ondeggiare nel vento, o il petto di un animale può espandersi e contrarsi per simulare il respiro.

    L'effetto di deformazione procedurale, può essere sia statico che dinamico, come per esempio in un oggetto metallico le bombature provocate dall'impatto con proiettili di grosso calibro. Immaginate uno sparatutto, dove i proiettili lasciano questi rigonfiamenti in modo permanente, oppure un simulatore di guida, in cui dopo una collisione le vetture presentano dei danni realistici.



    Il Morphing

    Il Morphing è un'altra tecnica di animazione, simile alla keyframe animation. Utilizzando differenti versioni di un medesimo oggetto, il Vertex Shader miscela le posizioni di ciascun vertice passando da una immagine all'altra. Per esempio, con il delfino sotto, il Vertex Shaders miscela la posizione di ciascun vertice nel delfino #1 con la posizione di ogni vertice corrispondente nel delfino #2, creando una terza immagine intermedia delle prime due, un delfino "deformato". Il delfino intermedio, esiste solamente come temporanea miscelazione delle due immagini, iniziale e finale. La geometria del delfino modificato non viene mai mantenuta in memoria permanentemente. Essa viene creata immediatamente prima di essere utilizzata. Il risultato è una sequenza d'animazione fluida in cui il delfino passa da una posizione della coda a quella successiva. Una animazione basata sul morphing di solito non è legata ad eventi in tempo reale; in questo modo, un hardware grafico molto veloce produrrà al minuto più movimenti del delfino di frame renderizzati per ogni movimento. Cambiando i parametri di miscelazione si può cambiare il numero di "delfini intermedi" che vengono creati tra la versione con la coda sù e la versione con la coda giù. La velocità dell'animazione può essere controllata in modo da ottenere che l'andatura del delfino appaia naturale.



    Il Motion Blur

    I Vertex Shaders possono essere usati per creare una varietà di effetti di animazione. Sfocando un oggetto si crea un'impressione di super-velocità come un supereroe che si muove alla velocità della luce oppure di una astronave che accelera a velocità curvatura.



    Effetti di deformazione (Lens Effects)

    Le trasformazioni personalizzate possono essere programmate nei Vertex Shaders per produrre effetti associati a lenti ottiche. Notate l'effetto sotto: a sinistra una trasformazione normale, a destra una trasformazione con una lente fish-eye (occhio di pesce). Quindi, nel simulare la visuale attraverso un virtuale spioncino su di una porta, oppure un mirino per una spia internazionale che sta scrutando una recinzione nemica, l'effetto a lente fish-eye può innalzare il realismo della scena 3D.



    Effetti di illuminazione personalizzati (Custom lighting effects

    L'illuminazione su due facce è un altro effetto realmente messo a disposizione dai Vertex Shaders. Non tutte le GPU sono in grado di illuminare il lato posteriore di un triangolo; inoltre La parte interna di ogni oggetto cavo non può mai essere mostrata sullo schermo. Per risolvere questo problema, il programmatore è obbligato a modellare anche l'interno dell'oggetto in modo da renderlo visibile. Questo richiede più del doppio di triangoli per modellare il medesimo oggetto. L'illuminazione su due lati fornisce quindi una migliore soluzione, permettendo ad una singola superficie di avere differenti caratteristiche di illuminazione, su entrambi i lati.

  4. #4
    Simply...cat!
    Data Registrazione
    05 Mar 2002
    Località
    Brescia,Lombardia,Padania
    Messaggi
    17,080
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito

    Programmabilità

    I più potenti Vertex Shaders sono quelli programmabili, con il proprio set completo di istruzioni e di registri, che il programmatore può sfruttare per i suoi bisogni specifici. La programmabilità è richiesta per andare incontro alle specifiche dell'Interfaccia di Programmazione dell'Applicazione (API) delle DirectX™8 di Microsoft®, e questa aumenta la potenza di un Vertex Shader grazie all'abilitazione della sua estensibilità e della sua ri-configurabilità.

    Un Vertex Shader programmabile è estensibile in quanto un programmatore può scrivere un nuovo vertex program e raggiungere un nuovo ed unico risultato. Una analogia potrebbe essere ordinare un pasto al ristorante - Volete scegliere il vostro pranzo da un menù standard oppure volete chiedere allo chief di cucinare per voi qualcosa di unico? Un Vertex shader programmabile non possiede effetti visivi specifici codificati al suo interno, come potrebbe essere un menù arricchito di nuove pietanze. Ha solo gli ingredienti appropriati -le istruzioni ed i registri - con i quali lo chief (il programmatore) può però creare ogni volta una esperienza unica per il cliente.

    La programmabilità in un Vertex Shader aumenta anche la potenza di calcolo che può essere applicata ad ogni specifico task, dal momento che è ri-configurabile. Un Vertex Shader programmabile può essere programmato per processare task multipli in parallelo oppure per concentrare tutto il suo potenziale di calcolo su un singolo task per una frazione di secondo prima di passare al task successivo. E' come avere un team di gente che può essere divisa in due modi. In uno, ciascuna persona del gruppo compie un lavoro specifico contemporaneamente agli altri; nell'altro, l'intero gruppo può applicarsi ad un singolo lavoro per raggiungere un risultato altrimenti impossibile per una persona sola. Per esempio, immaginate alcune persone che stanno scaricando alcuni camion. Possono suddividersi il lavoro scaricando un camion per ognuno, ma, se ci sono oggetti che richiedono più persone per essere solletati, una singola persona non potrebbe mai riuscire a scaricare un intero camion senza l'aiuto degli altri. Il totale del lavoro svolto non dipende quindi da quanta gente ci si è applicata sopra, ma, è essenziale avere a disposizione gente a sufficienza.

    Similmente, alcune operazioni grafiche come lo Skinning a 32 matrici, sono così complesse da calcolare che risulterebbero impraticabili da compiere anche con un hardware dedicato. Questo processo richiede così tanti transistor per processare la funzione, che se molti di questi non fosse possibile riconfigurarli (o riprogrammarli) per altre funzioni, questa feature non sarebbe implementabile nè disponibile. Se il vostro Vertex Shader non è programmabile, non sarete in grado di svolgere lo skinning a 32 matrici. Se il vostro Vertex Shader è programmabile, esso potrà essere completamente dedicato all'operazione di skinning a 32 matrici, dal momento che mezzo secondo dopo potrà essere ri-configurato per una funzione di processamento dei vertici completamente differente. Questa versatilità risulta cruciale per abilitare i più complessi effetti speciali, mantenendo nello stesso tempo inalterata la possibilità di abilitare tutto il resto degli effetti grafici.



    Conclusione

    La comparsa dei Vertex Shaders programmabili nel processori grafici consumer, dà uno scossone al mercato della grafica PC - la qualità grafica compie un salto "quantico" in avanti. L'nFiniteFX engine di NVIDIA mette a disposizione della grafica 3D in real-time una soluzione di Vertex (e Pixel) Shading pienamente programmabile. Con l'introduzione dei Vertex Shaders programmabili, il contesto della grafica 3D in real-time compie un passo avanti notevole verso il realismo cinematico, nell'offrire agli sviluppatori la possibilità di creare i propri programmi, in particolar modo gli effetti speciali, per definire nuove realtà e spingere in avanti i confini della qualità di immagine. I giocatori, e anche gli utilizzatori di altri tipi di applicazioni, potranno godersi effetti visivi stupefacenti che erano prima confinati a video-clip pre-renderizzati o a immagini di film, rendendo ulteriormente indistinta la linea di separazione tra il mondo lineare di un film, e il dinamico mondo di una esperienza interattiva. La grafica ed il gioco non saranno mai più gli stessi di prima.


    Appendice: La Pipeline grafica 3D

    Ci si riferisce alle funzioni matematiche che devono essere compiute per portare sullo schermo la grafica 3D come alla Pipeline Grafica 3D. La pipeline grafica 3D è complessa nel suo insieme, tuttavia, semplificando, le fasi principali includono:

    Fase 1: Gestione del database della scena (Scene Database Management)

    Questa fase non è propriamente una parte della pipeline grafica, ma, è menzionata qui in quanto essa deve essere svolta prima di qualsiasi altro operazione. La gestione del Database della scena include molti task di livello per l'applicazione (che significa che essi vengono svolti dalla applicazione 3D) come il determinare quali oggetti saranno presenti nella scena e dove essi dovrebbero essere posizionati rispetto ad altri oggetti. L'applicazione è responsabile nel mandare le necessarie informazioni sugli oggetti nello schermo al drivers software per la GPU. Una volta che l'informazione sarà stata mandata al driver della GPU, potremo considerare che essa sia entrata nella pipeline grafica e che procederà verso la fase successiva. Il driver quindi manda l'informazione all'elaboratore grafico.

    Fase 2: Tassellazione delle superfici di ordine superiore (Higher-order Surface Tessellation)

    La maggior parte degli oggetti in una scena 3D sono definiti da triangoli, poichè risultano così più facili da processare per la GPU. Alcuni altri tipi di poligoni, come linee rette o quadrilateri, possono essere usati, ma, i triangoli sono i più comuni in assoluto. Alcuni oggetti verranno definiti utilizzando linee curve. Queste linee curve possono essere matematicamente molto complesse poichè richiedono formule di ordine superiore per essere definite. Una equazione di ordine superiore è quella che ha una variabile che è un numero elevato a potenza, come x^2 (x al quadrato). Esempi di equazioni lineari potrebbero essere y=x+1 oppure y=2x+1. Un esempio similare di equazione di ordine superiore potrebbe essere y=x^2+1. Gli oggetti che vengono definiti da superfici di ordine superiore devono essere suddivisi in triangoli prima di poter essere mandati alla successiva unità di calcolo nella GPU. Per questa ragione, il Surface Engine nella GPU rappresenta la prima funzione hardware da compiere. Il suo ruolo consiste appunto nel suddividere le linee e le superfici di ordine superiore in triangoli (Tessellation).

    Fase 3: Il Vertex Shading che include il Transform and Lighting

    Una volta che l'oggetto sarà stato definito come un insieme di triangoli, (ed i triangoli a loro volta definiti specificando i loro vertici ed i loro lati), La funzione del Vertex Shaders della GPU sarà pronta per svolgere il suo lavoro applicando ad essi operazioni di Trasform e Lighting customizzate. Poichè il Vertex Shading è il soggetto di questo documento, non sarà descritto in questo contesto ulteriormente se non per la seguente descrizione generale del Trasform & Lighting.

    Transform. Nel momento in cui degli oggetti verranno definiti all'interno della pipeline 3D, essi avranno certamente bisogno di essere scalati, ruotati, oppure traslati in modo da essere più facilmente calcolati o semplicemente essere posti nel giusto posto rispetto agli altri oggetti. L'engine di trasform matematicamente compie queste operazioni di scalatura, rotazione e traslazione usando matrici di moltiplicazione.

    Lighting. La fase di Lighting consiste nel calcolo degli effetti di illuminazione dei vertici di ciascun triangolo. Questi valori includono il colore e la luminosità di ciascuna luce nella scena e del come questi interagiscono col colore e la specularità (lucentezza) degli oggetti nella scena. Questi calcoli sono compiuti per ciascun vertice nella scena 3D, cosicchè ci si riferisce spesso ad essi come facenti parte di un "illuminamento per vertici" (Vertex Lighting).

    Fase 4: Il setup dei triangoli (Triangle Setup)

    Il setup dei triangoli consiste nel prendere i vertici ed i triangoli, e suddividerli matematicamente in pixel o parti di essi. Notate che questi ultimi possono essere a loro volta pixel oppure più piccoli dei pixel. L'unico ruolo di questa funzione è di prendere i dati così come vengono dall'engine di Trasform & Lighing, e convertirli matematicamente in modo che l'engine di Pixel Shading possa interpretarli.

    Fase 5: Il Pixel Shading ed il Rendering (che include il texturing)

    Il Pixel Shading ed il Rendering includono tutto l'insieme di complessi calcoli a livello di pixel per determinare quale colore finale avrà ciascun singolo pixel. Le informazioni che provengono dall'engine di Trasform & Lithting saranno usate per determinare inanzitutto il colore di base dei pixel degli oggetti e le varie luci nella scena. successivamente, le funzioni di Pixel Shading e Rendering dovranno tenere in considerazione i cambiamenti aggiuntivi al colore di base del pixel in base alle texture che saranno applicate. Queste texture possono descrivere i cambiamenti di colore, i cambiamenti di illuminazione, di riflessione della luce da altri oggetti, le proprietà dei materiali, e molti altri cambiamenti. Per maggiori dettagli sulla tecnologia del Pixel Shading, vedete il documento tecnico di NVIDIA sull'argomento. L'operazione finale dell'engine di Rendering e' quella di storare i pixel nella memoria del frame buffer.

    Fase 6: Display

    Per l'ultima fase della pipeline grafica 3D, il controllore dello schermo legge le informazioni presenti nel frame buffer e le manda al driver per selezionare la modalità con cui saranno mandate al video (CRT, television display, flat-panel display, ecc.).


    Articolo tratto da NVIDIA® Italia

 

 

Discussioni Simili

  1. Per te e' piu' importante capire o farti capire dalle donne?
    Di Segesto II nel forum Il Seggio Elettorale
    Risposte: 26
    Ultimo Messaggio: 03-03-13, 08:04
  2. VIDEOGAME
    Di marocchesi nel forum Fondoscala
    Risposte: 85
    Ultimo Messaggio: 21-06-12, 15:29
  3. Non capire tutto questo significa non capire la Storia
    Di reconquista nel forum Politica Nazionale
    Risposte: 95
    Ultimo Messaggio: 29-12-08, 20:25
  4. Videogame libertario
    Di -Duca- nel forum Liberalismo e Libertarismo
    Risposte: 2
    Ultimo Messaggio: 02-01-07, 15:15
  5. The Hezbollah Videogame
    Di ardimentoso nel forum Destra Radicale
    Risposte: 34
    Ultimo Messaggio: 25-08-06, 01:10

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226