PDA

View Full Version : Anti-aliasing: chi mi spiega una cosa?


Xilema
11-08-2009, 15:56
Purtroppo non sono un "tecnico", ma mia piacerebbe saperne un po' di più sull'anti-aliasing.
O meglio, vorrei capire perchè l'AA funzioni solo parzialmente (o non funzioni proprio) con motori come l'Unreal engine 3.0 o il Cry engine 2.
Spiego bene la cosa: ho notato che applicando l'AA a giochi come Gears of war, Bioshock o Crysis, quello che è poligonale viene "smussato" bene, dove invece c'è losbrilluccichio degli shader (per esmpio i bordi delle finestre, alcune mattonelle, i pontili in legno ecc.) si continua a notare un certo aliasing, come se l'algoritmo avesse difficoltà a smussare certe superfici "ricoperte" da particolari effetti.
Qualcuno sa dirmi perchè succede questo e se sarà possibile migliorare la resa dell'AA con le nuove librerie grafiche in arrivo (DX11)?
Grazie.

RoMZERO
11-08-2009, 23:29
Non so, forse la spiegazione va cercata nel fatto che sia l'AA che l'HDR sono effetti di postprocessing e in qualche modo collidono tra loro.

lowenz
12-08-2009, 00:02
L'HDR non è post-processing, il Bloom che ne simula la resa lo è oppure il tone mapping su base HDR :D

Cmq sì, questa cosa che dice Xilema si nota benissimo in Far Cry UNO: mettete l'AA e andate in giro con il fucile e dietro di esso il mare.....vedrete che il mare "entra" nel fucile e ne rende "vorticoso" il contorno.
Il motivo è semplice: il MSAA prende una zona di pixel "intorno"al pixel dato e ne fa la media.....ergo se i pixel cambiano colore (shader del mare) i pixel del contorno del fucile vengono "mossi" :p

E' un limite - invalicabile penso - del MSAA.

http://en.wikipedia.org/wiki/Multisample_anti-aliasing

* Aliasing and other artifacts are still visible inside rendered polygons.
* Multi-pass rendering techniques may suffer when interacting with edges.
o Since stencil values are still per-pixel according to the specification, some strange interactions can occur at the edges of polygons when using techniques such as shadow volumes.

Darkless
12-08-2009, 08:07
C'è anche da dire però che con le risoluzioni sempre maggiori supportate da monitor e schede video l'AA oramai serve sempre meno.

lowenz
12-08-2009, 08:21
C'è anche da dire però che con le risoluzioni sempre maggiori supportate da monitor e schede video l'AA oramai serve sempre meno.
Dipende tutto dalla grandezza del pixel: il discorso filava con i 17/19 pollici a 1600x1200 di 11 anni fa, ora abbiamo monitor di 22/24 pollici a 1920.....

Xilema
12-08-2009, 08:22
L'HDR non è post-processing, il Bloom che ne simula la resa lo è oppure il tone mapping su base HDR :D

Cmq sì, questa cosa che dice Xilema si nota benissimo in Far Cry UNO: mettete l'AA e andate in giro con il fucile e dietro di esso il mare.....vedrete che il mare "entra" nel fucile e ne rende "vorticoso" il contorno.
Il motivo è semplice: il MSAA prende una zona di pixel "intorno"al pixel dato e ne fa la media.....ergo se i pixel cambiano colore (shader del mare) i pixel del contorno del fucile vengono "mossi" :p

E' un limite - invalicabile penso - del MSAA.

http://en.wikipedia.org/wiki/Multisample_anti-aliasing

* Aliasing and other artifacts are still visible inside rendered polygons.
* Multi-pass rendering techniques may suffer when interacting with edges.
o Since stencil values are still per-pixel according to the specification, some strange interactions can occur at the edges of polygons when using techniques such as shadow volumes.


Capisco quello che dici, ma io parlo anche di superifci solide.
Prendiamo per esempio i pavimenti a mattonelle di Gears of war o di Bioshock: per quanto AA uno applichi, e bordi delle mattonelle risultano sempre scalettati, come se l'AA non venisse applicato.
Non so se si tratti di normal map, di shader particolari o di cos'altro, fatto sta che le linee che dovrebbero risultare smussate... non lo sono.

lowenz
12-08-2009, 08:41
Capisco quello che dici, ma io parlo anche di superifci solide.
Prendiamo per esempio i pavimenti a mattonelle di Gears of war o di Bioshock: per quanto AA uno applichi, e bordi delle mattonelle risultano sempre scalettati, come se l'AA non venisse applicato.
Non so se si tratti di normal map, di shader particolari o di cos'altro, fatto sta che le linee che dovrebbero risultare smussate... non lo sono.
Quelle mica sono superfici solide infatti, sicuramente sono rese col normal mapping: sono texture.

Darkless
12-08-2009, 08:49
Dipende tutto dalla grandezza del pixel: il discorso filava con i 17/19 pollici a 1600x1200 di 11 anni fa, ora abbiamo monitor di 22/24 pollici a 1920.....

Mah, ti dirò, su un 22" in 1680x1050 si nota davvero poco di solito.

Xilema
12-08-2009, 09:29
Quelle mica sono superfici solide infatti, sicuramente sono rese col normal mapping: sono texture.


OK, anche le altre superfici solide sono però rivestite da textures.
Alcune però risultano perfettamente smussate, altre mantengono un certo livello di aliasing.
Vorei capire se questo dipende dalla tipologia di effetto applicato e se c'è la possibilità di smussare tutto.
Ricordo che si parlava di Gears of war e AA relativamente al deferred shading: inizialmente infatti, sembrava che solo con le DX10 si potesse applicare l'AA a Gears of war (e così è ancora ufficialmente, basti vedere il pannello delle opzioni grafiche).
Oggi invece, sappiamo che le schede nVidia di ultima (e penultima) generazione (e sembra anche le ATI), riescono ad applicare l'AA all'Unreal engine 3 (forzandolo dal pannello di controllo dei driver).
Questo è evidente anche giocando la demo di Batman: Arkham asylum o Mirror's edge, giochi che usano l'Unreal engine 3.0 e tuttavia permettono di attivare l'AA dal pannello delle opzioni.
Tutto ciò permette appunto l'attivazione "castrata" dell'AA di cui parlo, che probabilmente non è l'AA che i programmatori avevano previsto per questo engine, ma un surrogato che comunque fa la sua porca figura.
E' per questo che volevo capire se nuove api potranno garantire un AA anche applicato a superfici con textures particolari...

lowenz
12-08-2009, 09:57
E' per questo che volevo capire se nuove api potranno garantire un AA anche applicato a superfici con textures particolari...
Più che altro shader particolari, la texture fa da "base" su cui lavorare con le informazioni con cui è mappata (normal map, parallax map, ecc.)
Penso proprio di sì: API nuove=nuovi scenari di uso immaginabili, altrimenti non verrebbero nemmeno create.

Er Monnezza
12-08-2009, 11:39
da me in gears of war l'antialiasing è inesistente, anche se lo attivo dal control center, nel gioco si nota comunque la sua mancanza

RoMZERO
12-08-2009, 11:47
L'HDR non è post-processing, il Bloom che ne simula la resa lo è oppure il tone mapping su base HDR :D[/i]

Ah ok grazie, ho sempre confuso il bloom con l'hdr allora :D

II ARROWS
12-08-2009, 11:53
Tutto ciò permette appunto l'attivazione "castrata" dell'AA di cui parlo, che probabilmente non è l'AA che i programmatori avevano previsto per questo engine, ma un surrogato che comunque fa la sua porca figura.Intendi che se io disabilito l'AA(lasciando decidere all'applicazione) dal pannello dei driver mi trovo un AA di migliore qualità?

Xilema
12-08-2009, 13:31
Intendi che se io disabilito l'AA(lasciando decidere all'applicazione) dal pannello dei driver mi trovo un AA di migliore qualità?


No, parlo in questo caso dell'AA con l'Unreal engine 3.0 (e in minor misura col Cry engine... ed altri engine di nuovissima generazione).
Molti giochi che usano questo motore non prevedono l'attivazione dell'AA nelle opzioni (vedi Bioshock, UT3, Gears of war ecc.), tuttavia l'AA è attivabile dal pannello di controllo dei driver (sicuramente per le schede nVidia di ultima e penultima generazione, le ATI... sono un mistero: alcuni dicono che l'AA vada... altri dicono di no), e garantisce un buon livello di smussamento, smussamento che però non è completo come nei giochi di precedente generazione (vedi Half life 2, Doom 3 ecc.).
Restano delle parti di scenario sulle quali sembra che l'AA non sia applicato, soprattutto parti con shader sbrilluccicosi e textures particolari.
Volevo capire il perchè della cosa... e se nuove api possono garantire un AA totale.

mirkonorroz
12-08-2009, 19:14
In genere anche nei renderers non realtime la gestione dell'AA sulle zone "bianche" (come anche ad esempio poligoni emittenti che servono da fonte luminosa) ha rischiesto/richiede delle ottimizzazioni. A tuttora, ad esempio, mi sembra che ArtOfIllusion non se la cavi molto bene in quelle circostanze. Indigo, invece, ad un certo punto dello sviluppo e' migliorato moltissimo.
L'AA in UT3 funziona forzato da CCC solo se e' attiva la A.I., in quanto e' attraverso essa che vengono trattati casi particolari dei giochi. Se si mette gestito dall'applicazione non dovrebbe funzionare (a me che ho una 3850 non va, ma non so se per caso con la serie 48xx ed edge-detect per caso funziona, ma non ho mai sentito niente a riguardo).
Spesso quello che si crede sia tutta colpa dell'AA, in realta' e' molta colpa anche del AF, infatti con quest'ultimo assente o su valori bassi le zone in lontananza risultano molto frastagliate/seghettate: si puo' notare molto bene in giochi come liveforspeed, rfactor e gtr2. In ogni caso, come ho detto un'altra volta, mi sembra che ci siano giochi in cui l'assenza di AA sia molto piu' fastidiosa che in altri: ad esempio le seghettature di UT3 e rfactor mi sembrano molto piu' di grana grossa rispetto a quelle di GTR2 e LFS.
Io, con un 17 pollici a 1280x1024 fatico a giocare con un AA<4x perche' e' un effetto che mi da' molto fastidio (piu' del tearing): preferisco che il gioco sia un po' meno fluido (ovvio che deve essere giocabile) che non capire nulla di quello che ho sullo schermo.

II ARROWS
12-08-2009, 19:23
IA avanzata o standard? :D

Così per essere sicuro, io ci sono impazzito dietro questa generazione per capire come fare andare l'anti aliasing e mi sono arreso.

Comunque credo che molto dipenda da quando il motore grafico esegue certe operazioni...

mirkonorroz
12-08-2009, 19:47
IA avanzata o standard? :D

Sicuramente standard (quella che uso io), ma mi sembra anche avanzata

Xilema
12-08-2009, 20:54
In genere anche nei renderers non realtime la gestione dell'AA sulle zone "bianche" (come anche ad esempio poligoni emittenti che servono da fonte luminosa) ha rischiesto/richiede delle ottimizzazioni. A tuttora, ad esempio, mi sembra che ArtOfIllusion non se la cavi molto bene in quelle circostanze. Indigo, invece, ad un certo punto dello sviluppo e' migliorato moltissimo.
L'AA in UT3 funziona forzato da CCC solo se e' attiva la A.I., in quanto e' attraverso essa che vengono trattati casi particolari dei giochi. Se si mette gestito dall'applicazione non dovrebbe funzionare (a me che ho una 3850 non va, ma non so se per caso con la serie 48xx ed edge-detect per caso funziona, ma non ho mai sentito niente a riguardo).
Spesso quello che si crede sia tutta colpa dell'AA, in realta' e' molta colpa anche del AF, infatti con quest'ultimo assente o su valori bassi le zone in lontananza risultano molto frastagliate/seghettate: si puo' notare molto bene in giochi come liveforspeed, rfactor e gtr2. In ogni caso, come ho detto un'altra volta, mi sembra che ci siano giochi in cui l'assenza di AA sia molto piu' fastidiosa che in altri: ad esempio le seghettature di UT3 e rfactor mi sembrano molto piu' di grana grossa rispetto a quelle di GTR2 e LFS.
Io, con un 17 pollici a 1280x1024 fatico a giocare con un AA<4x perche' e' un effetto che mi da' molto fastidio (piu' del tearing): preferisco che il gioco sia un po' meno fluido (ovvio che deve essere giocabile) che non capire nulla di quello che ho sullo schermo.


A 1280x1024 devo avere almeno un 2x.
C'è stato un tempo in cui non lo attivavo nemmeno a 1024x768 (quando l'AA era un lusso), ma oggi come oggi... non riuscirei a stare senza.

lowenz
13-08-2009, 08:50
L'AF funziona AL CONTRARIO dell'AA (nella texture), quindi bisogna tenerlo alto per mantenere i dettagli interni alla texture (compresa la sensazione di seghettatura dovuta ai contorni del contenuto della texture), altrimenti si ha l'effetto "pappa".

Quindi risulta estremamente strano (se non impossibile) questo:

AF, infatti con quest'ultimo assente o su valori bassi le zone in lontananza risultano molto frastagliate/seghettate"

Se poi l'implementazione con i Catalyst porta a questi risultati controintuitivi.....dite ad AMD/ATI di fare qualcosa :asd:

mirkonorroz
13-08-2009, 09:05
Fa entrambe le cose (sembra): riduce l'aliasing (quindi per oggetti piccoli in lontananza (es: foglie), ma non solo, li rende meno seghettati) e riduce lo smear delle texture per certe angolazioni (quindi ripropone il dettaglio delle texture).

Darkless
13-08-2009, 09:33
A 1280x1024 devo avere almeno un 2x.
C'è stato un tempo in cui non lo attivavo nemmeno a 1024x768 (quando l'AA era un lusso), ma oggi come oggi... non riuscirei a stare senza.

Sono talmente abituato a non usarlo che non lo attivo nemmeno adesso che ho la 275, e spesso se non ci sono nel menu opzioni del gioco mis cordo pure i filtri

lowenz
13-08-2009, 09:36
Per l'AF puoi tenerlo forzato a 16x dal pannello di controllo della 275.....non causa *praticamente* mai problemi.

L'unico titolo che cade in performance con la forzatura dell'AF è Stalker&co perchè l'X-Ray Engine usa un AF diverso da quello che tutti gli altri usano (cioè l'AF standard) e questo porta in pratica ad avere un sovraccarico della VRAM.

Xilema
13-08-2009, 11:20
Sono talmente abituato a non usarlo che non lo attivo nemmeno adesso che ho la 275, e spesso se non ci sono nel menu opzioni del gioco mis cordo pure i filtri


Visto che hai una scheda tosta, attiva almeno l'aniso a 8X sempre.
L'AA decidi in base al gioco: l'esperienza visiva cambia notevolmente.

Darkless
13-08-2009, 18:33
Visto che hai una scheda tosta, attiva almeno l'aniso a 8X sempre.
L'AA decidi in base al gioco: l'esperienza visiva cambia notevolmente.

Eeeh lo so, ma fino all'altro ieri avevo la 7600GT quindi non sono abituato ad andare nel pannello di controllo e forzare i filtri.
Poi, si sa, io sono uno che alla grafica ci bada poco ed ho standard molto bassi sotto questo punto di vista.

john18
13-08-2009, 19:04
Eeeh lo so, ma fino all'altro ieri avevo la 7600GT quindi non sono abituato ad andare nel pannello di controllo e forzare i filtri.
Poi, si sa, io sono uno che alla grafica ci bada poco ed ho standard molto bassi sotto questo punto di vista.



E ti prendi una gtx 275...Alla faccia degli standard bassi.:stordita:

.:Sephiroth:.
13-08-2009, 20:20
E ti prendi una gtx 275...Alla faccia degli standard bassi.:stordita:

mi sembra giusto :D

io passai da una schifosissima 6200 a una 8800GT :sofico:

Scannabue²
13-08-2009, 22:16
Da utonto ignorante dico la mia ...

Ho provato ad attivare l'AA in Mass Effect (con ATT) ok niente scalettature ma avevo come l'impressione che la grafica perdesse qualcosa, non so dare una spiegazione tecnica ma mi sembrava meno ... luminoso, più piatto.

Per cui mi sono fatto una mezza idea che -forse- gli engine attuali siano stati sviluppati per gestire una serie di effetti tipo HDR ed altri, e che puntino su quelli per rendere la grafica piacevole.
Ora l'AA è un filtro, in qualche caso nemmeno presente nel menù del gioco ma forzato dalla scheda video, che si sovrappone alla scena creata dall'engine per smussare le scalettature.
Nel far questo in qualche modo altera quella che era la grafica pensata dagli sviluppatori, e quindi il risultato è dubbio.

Siccome a pensare male si pecca ma non si sbaglia ... chi ha sempre trascurato l'AA è stata nvidia, che storicamente non ha mai avuto algoritmi efficienti per l'AA (al contrario di Ati), sostenendo che per non vedere le scalettature bastava aumentare ad libitum la risoluzione ...

Il tutto rigorosamente imho!