A proposito di antialiasing

Aperto da Lexiw, 25 Febbraio 2003, 10:56:45

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Lexiw


ToxicWaltz

questa mi mancava!!
buffoni...

Celly 900@1200 256mb Voodoo3 3500TV@203MHz e timings al minimo ;)
bios Voodoo4 4500 1.16
Presto anche una Voodoo5 5500!!

NT2OOO

meglio che dico un chiarissimo NO COMMENT che altro...


chi ha una 3dfx ha un cuore e un cervello!!!

XP21OO+, 512DDR333, MSI-7MS6561,SONY E5OO
V1, Banshee, Rush, V2 1kPCI, V3 2kAGP+PCI, V3 3kAGP+PCI, V3 3k5TV AGP, V4 4k5AGP, V5 5k5AGP+PCI, V5 6kAGP, DAYTONA AGP-DDR
www.3dfx-Interactive.com


repne scasb

Oggi sia Nvidia ed ATI utilizzano il termine "antialiasing" per definire il multisampling introdotto dalle DirectX 8.

Per quanto mi consta il multisampling di DirectX 8 (supersampling a parita' di campione) e' solo un filtro di sfocatura che non ha nulla a che vedere con il reale antialiasing.

Tanto per chiarire, sara' bene che mi soffermi sommariamente sul cencetto di aliasing, in quanto sembra che il concetto non sia chiaro non soltanto ad ATI e Nvidia ma anche alla stragrande maggioranza dei fruitori di schede grafiche 3D.

Si definiscono aliasing gli errori di campionamento (round error) nel passaggio da un segnale analogico (universo dello spazio continuo) ad un segnale digitale (universo dello spazio discreto), si definisce antialiasing una qualsiasi tecnica che consenta di minimizzare tali errori.

Cominciamo con un esempio: sopponiamo di disegnare su un video con risuluzione 640x480 pixel due quadrati. Il primo di lato 1,6 pixel il secondo di lato 2,4 pixel. Poiche' non e' possibile disegnare pixel decimali, il software di disegno disegnera' due quadrati a) e b) di lato 2 pixel, commettendo un errore di 0,4 pixel in difetto per il quadrato b) e un errore di 0,4 pixel in eccesso per il quadrato a). Ora b) e' 2,25 volte piu' grande di a) ma nel nostro schermo i due quadrati appariranno assolutamente uguali. Questo e' un tipico errore di aliasing.

Altro esempio: nel medesimo schermo di prima disegnamo un cerchio di raggio paria a 100 pixel; a causa di quanto detto pocanzi, il bordo del cerchio non apparira' come un elemento continuo, ma come una sequenza di quadratini, che tentano di approssimare il cerchio stesso commettendo un errore (aliasing); tale effetto sara' visibile sottoforma di una tipica scalettatura.

Ora considerato che un pixel del video e' identificato non soltanto dalle sue coordinate ma anche dal suo colore, ci si potrebbe chiedere: E' possibile sfruttare il colore di un pixel per minimizzare l'aliasing? Risposta: Si.

Nell'esempio dei due quadrati da 1,6 pixel e 2,4 pixel, se si suppone di fare quadrati neri su sfondo bianco si potrebbe fare il quadrato a) da 1 pixel piu' una cornice di un pixel di colore grigio con intensita 0,6/2 (1=nero, 0=bianco), e il quadrato b) da 2 pixel piu' una cornice di un pixel di colore grigio con intensita 0,4/2 (1=nero, 0=bianco). Ossia, sfruttiamo il colore per aumentare la risoluzione. Una tale tecnica si chiama antialiasing.

Il cerchio di prima potremmo disegnarlo con una risoluzione piu' alta di 640x480 pixel, per esempio 1280x960 pixel, e raggio 200 pixel, e poi ridimensionarlo alla risuluzione di 640x480 pixel mediante interpolazione.

Fate un esperimento: Disegnate un cerchio di raggio 100 pixel con il vostro software di grafica preferito alla risoluzione di 640x480, salvate il disegno come BMP a 24bit. Fate un analogo disegno alla risoluzione di 1280x960 e raggio 200 pixel e salvatelo sempre in formato BMP a 24 bit, riducete quest'ultimo disegno alla risoluzione di 640x480 mediante il vostro miglior programma di grafica, confrontate i due disegni. Nonostante i due disegni abbiano la medesima risoluzione, il secondo (quello ridimensionato) sara' nettamente migliore del primo. Questa tecnica si chiama "supersampling" e consente di attenuare l'aliasing.

Ora nella grafica 3D esistono due approcci diversi al supersampling per ridurre l'aliasing: 1) OGSS (Ordered Grid Supersampling) utilizzato da Nvidia e ATI 2) RGSS (Rotated Grid Supersampling) utilizzato da 3Dfx.

Il primo OGSS si basa sul seguente principio: renderizzare la scena 3D ad una risoluzione piu' alta rispetto alla risoluzione video, e quindi al ridimensionare la scena alla risuluzione video mediante campionamento del generico pixel da renderizzare. Ossia supponendo una risoluzione di 640x480 pixel ed un antialiasing 2X, faremo il rendere a 1280x480 pixel, e ridurremo la risoluzione orizzontale da 1280 pixel a 480 pixel mediante un media di due campioni vicini al pixel da renderizzare. Per analogia un Antialiasing a 4x avra' un render a 1280x960 e riduzione a 640x480 mediante l'uso di 4 campioni, (Nvidia aggiunge anche una messa fouri fuoco con distrubuzione in gaussiana).

Il secondo RGSS (3Dfx) si base sempre su un supersamplig ossia un sovracampionamento ma non a risoluzione superiori, ma la stessa scena leggermente spostata e campionata. Quindi per 3Dfx un antialiasing 4X equivale a renderizzare la medesima scena 4 volte, ma per esempio leggermente a destra a sinistra in alto e in basso, e a generare il pixel da renderizzare utilizzando le quattro scene (leggermente diverse) con medie su quattro campioni (questa tecnica si adatta alla perfezione al parallelismo del Vodoo 5 (5500/6000))

In sostanza l'antialiasing non e' una tecnica per diminuire le scalettature ma un tecnica di sovracampionamento per AUMENTARE LA RISOLUZIONE A VIDEO. Mediante antialiasing non solo si attenueranno le scalettature ma le textures appariranno piu' nitide.

Ora, secondo me, con l'introduzione del multisampling delle DIrectX 8 Nvidia e ATI hanno preso la palla al balzo. Spacciando il multisampling per antialiasing, hanno permesso un generale aumento delle prestazione del filtro "pseudo-antialiasing". Tale caratteristica e' offerta dai chip grafici GeForce3 o superiore e Radeon8500 o superiore. Ma che cos'e' il multisampling di DirectX 8? E' un sovracampionamento ma a parita' di campione. E' come fare RGSS con quattro scene uguali. Di fatto e' un filtro di sfocatura, che poiche' non richiede piu' di renderizzare una scena piu' grande o piu' volte, permette una notevole riduzione di banda di memoria, con evidente incremento delle prestazioni (al solito Nvidia aggiunge qualcosa: il quincux campionamento 4X ma con 5 campioni).

Vorrei far notare che tale tecnica permette di diminuire le scalettature poiche' di fatto le impasta. L'effetto collaterale e' che le textures appariranno sfocate. Dai tecnici Nvidia e Ati si e' sostenuto che l'effetto di sfocatura DOVREBBE essere appena visibile, grazie al fatto che le textures saranno sempre piu' grandi in futuro e quindi sempre piu' definite.

In conclusione non c'e' piu' l'antialiasing di una volta.

P.S. Perdonate gli errori/orrori di grammatica/ortografia; il mio italiano si sta arrugginendo sempre di piu'.

--
0F2h 0AEh

Lexiw

Grazie per l'esauriente spiegazione ma ormai
non importa + sapere cosa è l'antialiasing, basta che faccia vendere di più...
Come il t&l...


ToxicWaltz

lo spiegheresti anche ai tecnici di nvidia? :D
scherzi a parte, sarei davvero curioso di sentire la loro risposta...


;)

Celly 900@1200 256mb Voodoo3 3500TV@203MHz e timings al minimo ;)
bios Voodoo4 4500 1.16
Presto anche una Voodoo5 5500!!

re-voodoo

Ho sempre detto che la grafica 3dfx è ancora migliore di Ati e Nvidia, alla faccia vostra.

re-voodoo

re-voodoo

Milotto

Repne scasb mi congratulo per la tua magistrale spiegazione...!!!  ;)
Conoscere le cose è diverso dall'averle sentite dire..
Ciao da MaX

izio75

Asus P5K-E
Intel® Core™2 Q6600
Cellshock Value DDRII 667  
OCZ PowerStream 520W PSU
PNY 8800 GTS
SB Audigy
Thermaltake TSUNAMI

Superbox

Il migliore "articolo" (Repne passami il termine) che io abbia mai letto sull'antialiasing.

Proporrei quasi di metterlo in rilievo... :);)

In filosofia, in religione, in etica e in politica, due e due avrebbero potuto fare cinque. Ma fino a che ci si manteneva nell'ambito di disegnare un aeroplano o un fucile, dovevano fare quattro.
- G. Orwell