Radeon X800: è il momento di R420

Radeon X800: è il momento di R420

Con il chip R420 ATI raddoppia di fatto le prestazioni della precedente top della gamma, sferrando un duro colpo alle soluzioni NV40 di NVIDIA. Che però non resta a guardare, presentando due nuove schede GeForce 6800 in grado di battagliare ad armi pari con le schede Radeon X800

di , Raffaele Fanizzi pubblicato il nel canale Schede Video
NVIDIAATIGeForceRadeonAMD
 

Analisi qualità shader: FP16 vs FP32

All'epoca delle schede NVIDIA TNT2, 3dfx Voodoo3 e Matrox G400 una delle più grande diatribe era "16 bit vs 32 bit". A quel tempo non si parlava ancora di effetti programmabili e calcolo in virgola mobile e pertanto il numero di bit era riferito al calcolo delle varie componenti RGB in intero. A distanza di almeno cinque anni, possiamo dire che la storia si ripete anche se con qualche piccola differenza. Da quando i VS e PS 2.0 hanno introdotto il calcolo in virgola mobile ci sono sempre state molte discussioni su quale fosse lo standard riguardo il numero di bit da utilizzare. ATI ha scelto la via dei 24 bit per componente il che porta ad una precisione totale a 96 bit (24 bit * 3 (RGB) + 24 bit (alpha)). Secondo l'azienda canadese questa modalità offre un buon compromesso tra qualità e velocità. NVIDIA, invece, ha intrapreso una strada più dinamica: 16 bit e 32 bit. Nel caso in cui uno shader non dovesse prevedere calcoli troppo complessi la società americana ritiene che la precisione FP16 sia più che sufficiente. In caso contrario è possibile usare 32 bit per canale per un totale di ben 128 bit.Tuttavia, il problema principale nell'architettura di NV3x è sempre stato che abilitando il calcolo FP32 si assisteva ad un vero e proprio crollo delle prestazioni rispetto alla modalità FP16. Del resto ciò era prevedibile visto che una precisione più elevata richiede un maggiore numero di registri ed una superiore banda passante.

shader_r420_1_s.jpg (1621 bytes) shader_r420_2_s.jpg (1574 bytes)

Radeon R360 - R420

shader_nv38_16_1_s.jpg (1583 bytes) shader_nv38_16_2_s.jpg (1557 bytes) shader_nv38_32_1_s.jpg (1613 bytes) shader_nv38_32_2_s.jpg (1550 bytes)

NV38 - FP16

NV38 - FP32
shader_nv40_16_1_s.jpg (1577 bytes) shader_nv40_16_2_s.jpg (1550 bytes) shader_nv40_32_1_s.jpg (1586 bytes) shader_nv40_32_2_s.jpg (1563 bytes)
NV40 - FP16 NV40 - FP32

Far Cry, uno dei giochi che attualmente può vantare il motore grafico più evoluto, fa ampio uso degli effetti programmabili attraverso VS 2.0 e PS 2.0. Esattamente come fanno la maggioranza dei programmatori di videogames, all'interno di questo titolo sono presenti più pattern di rendering, uno specificatamente ottimizzato per una determinata famiglia di processori grafici. Tale ottimizzazione è necessaria in quanto così facendo è possibile avvalersi al massimo delle capacità dell'hardware. Nel caso delle schede NV3x il percorso di rendering prevede l'uso di shader con precisione di calcolo FP16. Anche se tale precisione è più che sufficiente in molte situazioni, ne esistono alcune in cui i risultati possono non essere qualitativamente identici ad un analogo shader FP32.

Per analizzare la resa delle schede NV3x e NV40 con gli shader di Far Cry abbiamo effettuato due screenshots, entrambi all'inizio della mappa Volcano. In particolare abbiamo prima utilizzato il percorso di rendering predefinito dal gioco (quello ottimizzato FP16) e successivamente abbiamo forzato quello generico (FP32). Per meglio evidenziare i risultati abbiamo zoomato alcune zone degli screenshots.

shader_r420_zoom_1.jpg (6391 bytes)

Radeon R360 - R420

shader_nv38_zoom_2.jpg (33848 bytes)

shader_nv38_32_zoom_2.jpg (6084 bytes)

NV38 - FP16

NV38 - FP32

shader_nv40_16_zoom_2.jpg (5684 bytes) shader_nv40_32_zoom_2.jpg (6060 bytes)
NV40 - FP16 NV40 - FP32

shader_r420_zoom_3.jpg (11700 bytes)

Radeon R360 - R420

shader_nv38_zoom_3.jpg (11686 bytes)

shader_nv38_32_zoom_3.jpg (11813 bytes)

NV38 - FP16

NV38 - FP32

shader_nv40_16_zoom_3.jpg (11295 bytes) shader_nv40_32_zoom_3.jpg (11737 bytes)
NV40 - FP16 NV40 - FP32

shader_r420_zoom_2.jpg (29762 bytes)
Radeon R360 - R420

shader_nv38_zoom_1.jpg (27535 bytes)
NV38 - FP16

shader_nv38_32_zoom_1.jpg (28541 bytes)
NV38 - FP32

shader_nv40_16_zoom_1.jpg (27231 bytes)
NV40 - FP16
shader_nv40_32_zoom_1.jpg (28327 bytes)
NV40 - FP32

Delle schede Radeon 9800 XT, X800 Pro e X800 XT abbiamo riportato solo un'immagine di riferimento in quanto il motore grafico di Far Cry, con questi processori grafici, attiva automaticamente il percorso di rendering generico. Del resto anche forzando le schede canadesi a funzionare con shader FP16, loro eseguono comunque i calcoli con precisione FP24 e, quindi, non ci sono differenze nella resa grafica.

Sia con NV38 che NV40 la qualità dell'immagine con precisione FP16 lascia a desiderare: i materiali che fanno uso della riflessione speculare sono soggetti ad un fastioso effetto banding, non presente nel calcolo FP24 delle GPU ATI. Con FP32 la situazione migliora notevolmente e le immagini diventano uguali (se non leggermente migliori) a quelle FP24. La differenza tra FP16 e FP24 è superiore a quella tra FP24 e FP32 per lo stesso motivo per cui tra un desktop a 8 bit ed uno a 16 bit la differenza è superiore rispetto al confronto tra 16 bit e 32 bit: più si aumenta il numero dei colori e più ci si avvicina al limite in cui l'occhio umano non è più in grado di distinguerli perché il numero di sfumature è troppo elevato.

Secondo le nostre fonti non sono previste modifiche del pattern di rendering di Far Cry con le schede NVIDIA. Infatti, come vedremo successivamente, il motivo della scelta da parte della Croteam di utilizzare la precisione FP16 al posto della FP32 nonostante il degrado qualitativo è legato principalmente alle prestazioni.

 
^