Discussione: Vertex Shader (&pixel)
View Single Post
Old 03-05-2003, 12:00   #3
yossarian
Senior Member
 
Iscritto dal: Mar 2001
Messaggi: 5390
Re: Vertex Shader (&pixel)

Quote:
Originally posted by "DoomIII"

continuo qui una discussione inizata su un altro post e rispondo tra gli altri a yossarian.... quoto e rispondo riassumento l'argomento come shader poichè sono state dette alcune inesattezze

(ultimamente per motivo vari non ho avuto occasione di leggere e continuare la discussione quindi lo riprendo qui)




hmm... ti riferisci al multitexturing? (DX 6 e 7) per cronaca trattasi di fixed-function poi sostituite da pixel-shader(dal NV20 Dx8) che rappresentano un unità programmabile che opera appunto a livello di pixel.

ad ogni modo la tua affermazione è sbagliata poichè da DX7 era inclusa un unità che operava sui vertici e questo è il T&L. Si tratta di fixed-function parametrizzabili che operano appunto sui vertici e permettono di ottenere in maniera veloce (a carico della GPU) le basilari operazioni di traformazione ed illuminazione. Precedentemente questo carico era della CPU mentre dalle DX7 è passato a carico della GPU con il suo T&L.





hmm... scusa ma il discorso è campato in aria... adesso capisco il tuo modo di vedere NV30 e l'R300...
questi numeri su cui ti fissi hanno ben poco significato nel contesto... non è il poter eseguire i calcoli in virgola mobile o meno a fare la differenza tra fixed-function o shader...
Dalle Dx8 (Nv20) è stata sviluppata una vera GPU programmabile che sostituisce e non è compatibile con la precedente architettura T&L(le fixed--function) per la parte vertici e multitexturing per i pixel o texel.
A motivo di questa incompatibilità nella Gef3 è stato incluso il motore T&L cioè le vecchie fixed-function o meglio il core NV15.


il calcolo dei vertici era possibile farlo eseguire dalle schede grafiche proprio tramite il T&L cioè le fixed-function... dall'NV20 invece con gli shader si è iniziato a parlare di programmabilità.
Quindi punto di forze del Geforce(DX7) è stato proprio il passaggio da cpu e gpu per i calcoli ai vertici(cioè le trasformazioni T&L a mezzo di fixed-function).


dipende dai punti di vista... a livello software OK, i PS e VS sono programmi ma non assolutamente delle pipelines...
a livello hardware sono circuiti come quelli che si trovano nella CPU e proprio per questo si parla di vera GPU poichè è programmabile.
Non ci sono le fixed-function ma circuiti che permettono l'esecuzione di istruzioni... queste istruzioni operano sui vertici (Vertex-shader) o sui pixel(Pixel-shader) e la sequenza di questa istruzioni determina il comportamento con infinite 'funzioni' finali... nel senso che a seconda del programma i programmatori ottengono quello che vogliono.... mentre con le fixed-function le funzioni erano appunto fisse mentre adesso con gli shader queste funzioni vanno programmate.



un gioco DX7 non farà ricorso alla CPU ma al T&L cioè i circuiti fixed-function presenti nella scheda... e come ho già detto dal Gef3 (NV20) è stato incluso per compatibilità il core NV15(T&L e multitexturing).

In realtà attualmente non c'è quasi niente che sfrutti gli shader... sopratutto i vertex-shader... per molto tempo non c'è stato niente e pur avvantaggiandosi della nuova architettura (frequenze maggiori, ottimizzazioni ecc...) ottentendo performance più elevate il software continuava ad essere T&L ed a non sfruttare gli shader. Col tempo alcuni titoli hanno inizato a sfruttare parzialmente gli shader... i vertex shader con semplice conversione di fixed-function a programma shader equivalente ed i pixel shader per ottenere alcuni effetti in più non disponibili a chi non aveva l'hw adeguato.
Ad oggi la situazione non è cambiata di molto e titoli shader-oriented sono ancora purtroppo solo prossimi e futuri...



Saluti
Punto primo: il TL DX7 opera sui vertici ma solo con operazioni di traslazione e rotazione e sulla costruzione dei poligoni. La differenza con un motore programmabile è che quest'ultimo è in grado di svolgere anche le operazioni suddette, oltre ad altre non previste dal T&L "statico".
Visto che parli di innovazioni portate da nVIDIA e di programmabilità (e dimostri di apprezzare queste cose), dovresti apprezzare il fatto che il Radeon 256 riproduceva funzioni, quali la keyframe interpolation e il morphing, proprie di un chip con motore VS e successivamente riprese e sviluppate da nVIDIA con l'NV20 (questo oltre ad avere la possibilità di applicare 3 textures psp ne facevano un chip che andava ben oltre le DX7, al contrario della GF2).
Per quale motivo un'unità VS non dovrebbe essere compatibile con le operazioni di rotazione e traslazione di un poligono?
Le funzioni finali ottenibili non sono infinite nel modo più assoluto. Un'nità "programmabile" non è altro che un'unità in grado di eseguire operazioni di tipo più complesso rispetto a semplici operazioni lineari, ma da qui a dire che le funzioni ottenibili sono infinite ce ne corre (salvo ricorrere all'utilizzo di algoritmi di interpolazione che permettono di APPROSSIMARE la quasi totalità delle funzioni, con perdita, però, di precisione).
La presunta inclusione del motore Fixed Function nell'NV20 non è altro che un'estensione delle operazioni che il motore VS è in grado di compiere: oltre alle operazioni di traslazione e rotazione (lineari) il motore VS dell'NV20 ne poteva compiere altre più complesse (di tipo non lineare). Quindi quanto sostieni sulla presunta incompatibilità non ha alcun senso. Nell'NV25, rispetto all'NV20 è stata aggiunta una seconda unità VS (identica alla prima).
Ps: fixed function sta a significare semplicemente che le operazioni svolte non modificano forma e dimensione dei triangoli (le operazioni di rotazione e traslazione si limitano ad effettuare delle operazioni di spostamento di un intero poligono senza modificare le posizioni dei vertici uno rispetto all'altro). Introducendo operazioni di trasformazione non lineare è possibile, invece, cambiare le posizioni dei vertici di un triangolo, modificando la forma del triangolo stesso (cosa che con le trasformazioni lineari non avviene. Un chip DX8 deve essere in grado di svolgere sia le operazioni lineari che quelle non lineari, pichè entrambe le categorie sono necessarie alla costruzione di una scena 3D).


P.s. mi pare che sei l'unico che ancora difenda la presunta superiorità dall'NV30 e speri ancora in una release di drivers che, miracolosamente, faccia andare l'FX molto più veloce senza abbassare la qualità (ormai pure nVIDIA ha smesso di credere in questo chip e sta già pensando a come sostituirlo nella maniera, per lei più indolore, con l'NV35).
Complimenti per la tenacia, un po' meno per la preparazione tecnica



Ciao
yossarian è offline   Rispondi citando il messaggio o parte di esso