View Full Version : chiarezza su shaders a 16-24-32 bit
bart noel
13-05-2004, 16:28
mi chiedevo ….nei pixel shader 2.0 vengono utilizzati 4 componenti di 16-24 o32 bit di precisione, ma quanti ne vengono utilizzati per il colore?
mi spiego: nel caso in cui tutti i bit indicassero la reale profondità del colore avremo....
16bit= 2^16 = 65.536 colori
24bit= 2^24 = 16.777.216 colori
32bit= 2^32 = 4.294.967.296 colori
ma poiché l'occhio umano riesce a distinguere un numero di sfumature pari a circa 2^20 (1.000.000) i 32 bit risultano assolutamente inutili....
Oppure potrebbe essere come nei colori a 32 bit del desktop di cui solo 24 vengono utilizzati per il colore, mentre gli altri otto hanno un'altra funzione.
Come avviene invece la suddivisione dei bit nei pixel shader ?
NV40 - FP16
http://www.hwupgrade.it/articoli/1013/shader_nv40_16_zoom_1.jpg
Radeon R360 - R420 - FP24
http://www.hwupgrade.it/articoli/1013/shader_r420_zoom_2.jpg
NV40 - FP32
http://www.hwupgrade.it/articoli/1013/shader_nv40_32_zoom_1.jpg
Norbrek™
13-05-2004, 16:50
Si parla della precisione in virgola mobile, per cui approssimando a 16bit la cifra e poi eseguendo operazioni con altre cifre a loro volta approssimate a 16bit il risultato finale si discosta sempre più dall'originale, mentre aumentando la precisione, gli shader più complessi non avranno un decadimento qualitativo, poichè il risultato non discosterà tanto dall'originale.
bart noel
13-05-2004, 17:11
:)
grazie ho capito... quindi le sfumature nei shader dipendono anche dalla quantità di operazioni che si eseguono sui pixel....
Fp16 si ha sempre un decadimento della qualità visiva rispetto all'originale
Fp24 si ha un decadimento dopo 16 operazioni
Fp32 dopo 4000 operazioni
Norbrek™
13-05-2004, 17:24
No, il numero di istruzioni non centra con la precisione...
Cioè 16bit non sono 16istruzioni, semplicemente il concetto è che se esegui una operazioni con un numero con un precisione in vorgola mobile di 16bit, avrai un risultato, se poi usi questo risultato per un'altra operazione il risultato sarà ancora più approssimato e così via, aumentando la precisione anche dopo tante operazioni il risultato non si discosterà tanto da quello ideale, ma non c'è un corrispondenza fra la precisione e il numero di istruzioni degli shader...
bart noel
13-05-2004, 17:36
il mio concetto era questo: se con i PS a 16bit ho un errore di 1/65000 e uso il risultato in un altra operazione l'errore tenderà a crescere maggiormente in maniera proporzonale al numero di operazioni....
ricordiamo che l'occhio umano distingue errori fino 1/1.000.000
Norbrek™
13-05-2004, 18:15
Ma non è vero che hai un errore su 65536, hai semplicemente una minore precisione, se io faccio 3,5 + 3,5 = 7
ma se io ho una maggiore precisione e faccio 3,543 + 3,543 = 7,086, il risultato è differenze la precisione è maggiore!
Quindi non è che a 16bit fai degli errori, hai semplicemente meno numeri dopo la virgola e quindi il risultato si discosta di più da quello ideale.....
bart noel
13-05-2004, 18:30
ovviamente non intendevo quello...per 1/65000 intendevo un errore di 1:65000 cioè 0,000015...
Ma se non avessi un decadimento dopo le operazioni sui pixel allora i 32bit di precisione sarebbero inutili dato che già con 24bit l’errore è di 1/16.000.000 cioè molto più piccolo della grado di sfumatura percepibile dall’occhio umano
bart noel
13-05-2004, 18:50
... poniamo realisticamente che dopo ogni operazione sui pixel l'errore raddoppi.....
con una precisione di 24 bit(errore di 1/16.000.000) possiamo eseguire 4 operazioni di motiplicazione prima di scendere sotto i 20bit (errore di 1/1.000.000) cioè il numero massimo di colori che siamo in grado di distinguere,
coi i PS a 32bit possiamo eseguirne 12
coi i PS a 16bit siamo già al di sotto dei 20bit e questo spiega la netta inferiorità della qualità d'immagine rispetto a FP24-32
In genere , in cg il colore a 16bit è suddiviso in 6-5-5 bit.
Cioè:
2^6 = 64 toni di rosso
2^5 = 32 toni di verde
2^5 = 32 toni di blu
mentre per il 24 bit hai 8-8-8 , cioè 256 toni per componente colore.
Ora non so se l'FP32 di nvidia sia un classico RGBA quindi gli 8bit di avanzo fanno alla alpha map (trasparenza) o se sono addirittura un 11-11-10.
Cmq , ti renderai conto che nel caso FP16 hai solo 32 toni nella maggior parte del caso.
Nell'immagine che hai postato , vengono usate 3 mappe.
La texture della porta , la mappa delle normali e una mappa che contiene lo spot di luci.
Per ottenere il colore finale devi compiere calcoli su 3 variabili (che vanno da 0-32/64 oppure 0-256) , quindi la serie prodotta a FP16 ha dei balzi che sono 8 volte + netti di quelli FP24 o 32 , e si notano veramente tanto su toni uniformi come quello da te postato! :eek:
Se ho detto boiate nn scannatemi :D :mc:
Norbrek™
13-05-2004, 18:59
Originariamente inviato da octopus
Se ho detto boiate nn scannatemi :D :mc:
Non sono boiate;)
Non ho controllato ancora bene con photoshop , xò l'immagine FP24 di ati e FP32 di nvidia mi paiono identiche sputate! :)
Cmq credo che l'occhio umano possa vedere anche qualcosa in più dei 20bit , il problema è l'output dei dispositivi di adessco...
Cioè , facendo webdesign e smadonnando coi colori a volte trovo netto anche un passaggio da chessò 70,0,0 e 71,0,0 :sofico: se sono zone grandi e nette adiacenti!
Ed uso dei monitorazzi Taiwan 19" :mad: chissà con un Braco :cry: :SBAV: ...
Però effettivamente sono cazziatelle oltre un certo punto , un pò come l'audio a 24bit ... a me pare una chimera!! BOH! :confused:
Norbrek™
13-05-2004, 19:16
No no, sono diverse l'fp 24 e l'fp32, guarda nella zona esterna del rilflesso l'fp32 è legerissimamente meglio, ma niente di visibile in condizioni normali, l'fp32 è totalmente inutile con shader con così poche istruzioni..
bart noel
13-05-2004, 19:30
Originariamente inviato da Norbrek™
No no, sono diverse l'fp 24 e l'fp32, guarda nella zona esterna del rilflesso l'fp32 è legerissimamente meglio, ma niente di visibile in condizioni normali, l'fp32 è totalmente inutile con shader con così poche istruzioni..
secondo voi è possibile che Nvidia in futuro ci propinerà anche fp 40, 48 e oltre.......??
adesso il n° di istruzioni dei ps2.0 è sufficiente a fare qualsiasi cosa e la differenza tra fp24 e fp32 e visibile solo ingrandendo l'immagine e usando photoshop...
Norbrek™
13-05-2004, 20:07
Originariamente inviato da bart noel
secondo voi è possibile che Nvidia in futuro ci propinerà anche fp 40, 48 e oltre.......??
adesso il n° di istruzioni dei ps2.0 è sufficiente a fare qualsiasi cosa e la differenza tra fp24 e fp32 e visibile solo ingrandendo l'immagine e usando photoshop...
Sicuramente in futuro precisioni superiori all'fp32 saranno fondamentali, ma manca ancora un bel po' a quel momento....
Originariamente inviato da bart noel
secondo voi è possibile che Nvidia in futuro ci propinerà anche fp 40, 48 e oltre.......??
adesso il n° di istruzioni dei ps2.0 è sufficiente a fare qualsiasi cosa e la differenza tra fp24 e fp32 e visibile solo ingrandendo l'immagine e usando photoshop...
Ma nVidia lo fa già sui portatili !!! :eek: :D
Sarà un errore di battitura? Qlc ne sa qualcosa ?
sui portatili (http://reviews-zdnet.com.com/Satellite_3005_s307/4507-3121_16-8627394.html)
"Display
Display size - technology - form factor 14.1 in TFT active matrix Integrated
Max resolution 1024 x 768
Color support 48-bit color "
Che c'entra Nvidia?
E sopratutto che c'entrano i colori con la precisione di calcolo? Come hanno già detto nulla.
Originariamente inviato da DjLode
Che c'entra Nvidia?
E sopratutto che c'entrano i colori con la precisione di calcolo? Come hanno già detto nulla.
Monta un Geffo2Go se non sbaglio, per generare tutta la putenza necessaria :)
I colori sono numeri per il pc , + piccoli sono i gradini digitali e megio è!
Originariamente inviato da octopus
Monta un Geffo2Go se non sbaglio, per generare tutta la putenza necessaria :)
I colori sono numeri per il pc , + piccoli sono i gradini digitali e megio è!
Già, peccato che sia il monitor a supportare i 48bit di colore e la scheda sia un cesso. Cmq, per l'ennesima volta gli shader a X bit e i colori a X bit sono due cose assolutamente diverse.
TheDarkAngel
13-05-2004, 21:23
Originariamente inviato da octopus
Monta un Geffo2Go se non sbaglio, per generare tutta la putenza necessaria :)
I colori sono numeri per il pc , + piccoli sono i gradini digitali e megio è!
ma che centra con gli shader?
nulla...
Originariamente inviato da DjLode
Già, peccato che sia il monitor a supportare i 48bit di colore e la scheda sia un cesso. Cmq, per l'ennesima volta gli shader a X bit e i colori a X bit sono due cose assolutamente diverse.
massì dai non te la prendere :D
Non ricordo bene e purtroppo non ho tempo per andare a rivedere ma mi pare sia:
16bit = 4bit per ogni canale rgb(sono 3) e 4 per l'alpha.
24bit = 3 * 6bit + 6bit alpha
32bit = 3 * 8bit + 8bit alpha
Questo se parli di fp percision in generale.
Nel caso specifico delle schede video viene dichiarato come:
xbit per ogni canale rgb+ xbit alpha
cioè 16bit(rosso)+16bit(blu)+16bit(verde)+16bit(alpha)=64bit(nvidia half precision)
24bit*3(rosso,blu,verde)+24bit alpha=96bit
(Ati, sempre)
32bit*3 + 32bit alpha
(Nvidia full)
Questo riguarda però solo i pixel shader, i vertex shader di Ati sono comunque e sempre in fp32, come credo anche quelli Nvidia.
Originariamente inviato da Cifer
cioè 16bit(rosso)+16bit(blu)+16bit(verde)+16bit(alpha)=64bit(nvidia half precision)
24bit*3(rosso,blu,verde)+24bit alpha=96bit
(Ati, sempre)
32bit*3 + 32bit alpha
(Nvidia full)
Questo riguarda però solo i pixel shader, i vertex shader di Ati sono comunque e sempre in fp32, come credo anche quelli Nvidia.
Ok , capito!
Però alla fine con 16bit x canale non capisco come si incappi in schifezze come quelle della foto ... ma 6 sicuro ? Hai un link ?
:confused:
Perchè alla fine che sia una texture o sprite è sempre bmap2d e i ps lavorano appunto su delle mappe ... o sbaglio ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.