Jump to content
nicolce

Antialiasing Con Buffer A 32bit....

Recommended Posts

Ciao ragazzi...

Ho riscontrato un problema con il buffer a 32 bit.... si notano delle seghettature sugli highlights che con il buffer a 16bit non si presentano...

Allego un'immagine esplicativa, nei riquadri il dettaglio al 100% del problema....

aabufferissuegy3.jpg

Nella scena non ci sono luci, il set è illuminato con il final gather generato da 2 pannelli autoilluminati che determinano anche gli highligts nelle riflessioni.

Sampling 1-16

Spatial contrast RGBA 0,03

Locksamples

Jitter on

Bucket order Hilbert.

Ciao ciao

Share this post


Link to post
Share on other sites

Box, ma non c'entra, stesso problema anche con gli altri filtri, li ho provati tutti.

Quello che attenua maggiormente il difetto è il gauss, con quel filtro quasi non si nota visto che sfoca parecchio...

Il fatto è che, a parità di impostazioni di sampling, con il buffer a 32 bit il difetto è evidente, invece con il buffer a 16 bit non c'è l'ombra di AA.

Share this post


Link to post
Share on other sites

Trovato, non avevo cercato bene.... :D !

Dal grande Zap Anderson:

This is actually completely "normal", although for most people, unexpected.

As a matter of fact, this effect happens in real life with real (digital) cameras too.

Here's the thing; Anti-aliasing is done by blending some subpixel samples.

Imagine a window, whose edge covers one quarter (1/4) of some pixel.

If we are rendering in low-dynamic range (i.e. not to floating point), mental ray clips each rays color to 1.0 (i.e. "white") *before* filtering.

This means that no matter HOW bright the window was (1.0, 10.0, 100.0 or 1000000.0) the ray gets clipped to 1.0 (white) and THEN blended with it's neigbours.

So for our example with a window that covers 1/4 of a pixel, the result is a 25% gray pixel, which is what you would expect for an anti-aliased white pixel covered to 25%.

However, in floating point rendering there is no clipping happening.

So if the intensity of the window was 10.0, and it covers 25% of the pixel, this is still a total intensity of 2.5 ... whiter than white (but still rendered on your screen as a "white pixel"! This is no less white than the "white" pixel that results from a pixel that is fully covered by the window. Even a pixel only covered 10% by the window still ends up "white". Yet the wall pixel beside it (covered 0% by the window) is dark. I.e. any pixel that even "touches" the window is full white. You get aliasing!

And this is completely normal. As a matter of fact, if you change the exposure in your HDR viewer you will see that when you get to the point where the window stops blowing out, your anti-aliasing comes back!

And yes, this would happen to a superbright pixel also in a real digital camera. However, intra-pixel bleed and glare tends to cover this up, it can sometimes be evident in a photographed image.

So... how do you get around it?

Well, there are two basic fixes:

a) Do what reality would do, and cover up the effect with glare.

In a real optical system, such superbrights would spill onto neighbouring pixels due to lateral scattering in the imaging surface (film, ccd, or retina of eye) or scattering inside the optical path (lenses, the optical goo inside the eye) and - to a much lesser extent and much less than people think - scattering in the atmosphere.

There are numerous shaders and tools to do this, from "glow" filters in photoshop, the Lume "Glare" shader that ships with max, Maya Glow, etc. etc. that all "does the job"... pick one. Use it. Enjoy.

B) Intentionally "pre-clamp" the rays before filtering with a lens shader.

This is the "best" way in the sense that it gives you your anti-aliasing back. However, be aware that this pretty much precludes you from doing any major exposure changes in post production, so you must already know that the exposure you have in your image is "ok" for how you plan to use it. I.e. the operation you do will pretty much keep blown-out things pegged as "white", and you will kill any detail in the overexposed region by doing so.

The problem with this is that doing the exposure in post is one of the main reasons of rendering to float in the first place! So it's a double-edged sword.

Anyway, there are multiple shaders to do this: One is the simple mib_lens_clamp shader which... well... just clamps. Duh.

A "nicer" and "more gentle" method is to use the mia_exposure_simple shader, which has a bit of control allowing you to do a "gentle clamp" (with the help of the "compression" feature), or the new mia_exposure_photographic (which does it's "gentle clamping" with the help of the "highlights_burn" paremeter). In either case use them in a "gamma=1" mode to keep the result in scene-reffered linear space (but "gently clamped"), since - I'm hoping - you are applying your display gamma in some later display step.

/Z

http://forums.cgsociety.org/showthread.php?t=543646

:Clap03:

Comunque Mac, grazie mille.

Share this post


Link to post
Share on other sites

Quello che dice zap è che questa cosa accade anche nella realtà e le nostre macchine fotografiche o il nostro occhio, coprono questo superbrightness con un effetto che nei motori di rendering possiamo ricreare con un, ad esempio lume_shader. Un effetto glow, glare.

Ma avrò capito veramente quello che ho letto :blink2::hello::wallbash:


Edited by ytsejam

Share this post


Link to post
Share on other sites

Personalmente l'ho risolto usando il buffer a 16 bit, ma la risposta di Zap ci spiega come si può risolvere mantenendo un'output a 32bit...

In questo caso non avevo bisogno dell'output 32bit.

Ho sollevato la questione perchè trovato un problema sento la necessità di risolverlo :)

Anyway, la soluzione più razionale mi pare quella di coprire il difetto con un leggero glow e contemporaneamete abbassare un poco il burn del photographic exposure per fare in modo che i valori di overbright siano più bassi e permettano una media sensata con i pixel adiacenti.

Ho provato semplicemente abbassando il burn da 0,5 a 0,2 l'aliasing si è attenuato molto..... perdo anche un po' di contrasto, ma posso sempre recuperare in post lavorando sull'output float....

I questo render ho mantenuto il filtro box, il gauss lo ridurrebbe ulteriormente generando però una leggera sfocatura a tutta l'immagine.

solvedau9.jpg

Alzare i min samples è inefficace perchè le zone seghettate sono zone con un contrasto elevato, dove il sampling applicato è il massimo....

Ciao


Edited by nicolce

Share this post


Link to post
Share on other sites

Quoto nicolce, alzare i sample spesso può rilevarsi un crimine oltre che inefficace, mi piace la soluzione con shader lume glare ma la loro implementazione in maya tramite sli script-pixero non mi piace molto, anche il js-glare sempre di pixero non mi garba tanto... mentre in post è difficile trovare dei buoni filtri glow o glare chesfruttino bene tutta la gamma cromatica...

non smetterò di cercare perchè lavorare con framebuffer a 32b è molto utile.

Share this post


Link to post
Share on other sites
Quoto nicolce, alzare i sample spesso può rilevarsi un crimine oltre che inefficace, mi piace la soluzione con shader lume glare ma la loro implementazione in maya tramite sli script-pixero non mi piace molto, anche il js-glare sempre di pixero non mi garba tanto... mentre in post è difficile trovare dei buoni filtri glow o glare chesfruttino bene tutta la gamma cromatica...

non smetterò di cercare perchè lavorare con framebuffer a 32b è molto utile.

Non sono assolutamente d'accordo. Aumentare i max samples (non i min, avevo scritto i massimi) serve eccome, tutto dipende da 1)l'energia dei pixel "overbright" e 2) a quanto si clampa l'aa.

Per quanto riguarda il glow, consiglio caldissimamente - se si vuole farlo - di farlo in post, non direttamente da max/maya/qualsiasi sw! Avete provato con hdrshop, per esempio?


Edited by zemmuonne

Share this post


Link to post
Share on other sites
shader lume glare ma la loro implementazione in maya tramite sli script-pixero non mi piace molto, anche il js-glare sempre di pixero

Hai provato questa soluzione per maya, postata da DJX

http://www.djx.com.au/blog/2008/01/02/lume...-for-maya-2008/

Io mi trovo molto bene con questa soluzione

A proposito sempre sul blog di djx

http://www.djx.com.au/blog/2008/10/22/mip_...alrayswatchgen/

Scusate se ho postato cose che riguardano maya, ma molto spesso, saperne di più delle varie implementazioni aiuta un pò tutti No? :):)

Share this post


Link to post
Share on other sites
Non sono assolutamente d'accordo. Aumentare i max samples (non i min, avevo scritto i massimi) serve eccome, tutto dipende da 1)l'energia dei pixel "overbright" e 2) a quanto si clampa l'aa.

Per quanto riguarda il glow, consiglio caldissimamente - se si vuole farlo - di farlo in post, non direttamente da max/maya/qualsiasi sw! Avete provato con hdrshop, per esempio?

E' vero anche che in questo modo sì perdono anche i vantaggi dell'adaptive sampling, però grazie terrò in considerazione per quando sarò alle strette. Anche la soluzione con hdrshop mi sembra parecchio interessante...

Hai provato questa soluzione per maya, postata da DJX

http://www.djx.com.au/blog/2008/01/02/lume...-for-maya-2008/

Io mi trovo molto bene con questa soluzione

Sì è proprio una delle due che ho considerato, che infatti utilizza gli AE_Templates di pixero... ma non mi convince molto per via del fatto che alcune funzioni non funzicano ed è poco maneggevole a parer mio.

A proposito sempre sul blog di djx

http://www.djx.com.au/blog/2008/10/22/mip_...alrayswatchgen/

Scusate se ho postato cose che riguardano maya, ma molto spesso, saperne di più delle varie implementazioni aiuta un pò tutti No? :):)

Questo è davvero interessante, lo hai provato? (sempre che non vado troppo off-topic), puoi spiegarmi pro e contro del sistema?

Share this post


Link to post
Share on other sites
Non sono assolutamente d'accordo. Aumentare i max samples (non i min, avevo scritto i massimi) serve eccome.

Ops, scusa, avevo letto male riguardo i samples minimi.

Così ha senso, però è una soluzione di forza bruta...

Quà è già a 1-16 ( altrimenti detto 0-2 :blink2: ), che per vari motivi considero un limite massimo :)

Non considerei di alzarlo per una necessità che riguarda solo un piccolo pezzo di immagine.

... tutto dipende da 1)l'energia dei pixel "overbright" e 2) a quanto si clampa l'aa.

In effetti, meditavo su questo, e pensando alla differenza fra la luce diffusa e luce riflessa sono arrivato a un'accorgimento.

Avvicinando i pannelli ho potuto abbassare l'esposizione di un punto e mezzo, e di conseguenza ho ridotto anche l'energia dei punti "roventi" sulle cromature, senza però diminuire troppo la luminosità delle superfici più lamberitiane, e senza forzare la curva di tonemapping.

volantehd03rawsd6.jpg

Per quanto riguarda il glow, consiglio caldissimamente - se si vuole farlo - di farlo in post, non direttamente da max/maya/qualsiasi sw! Avete provato con hdrshop, per esempio?

Il glow anche io preferisco gestirlo in post, photoshop su un layer a se'....

Dato il consiglio ho guardato hdrshop e la qualità del glow sembra ottima, ma la versione 1 che è free non permette di farlo, o sbaglio?

Share this post


Link to post
Share on other sites
Scusate se ho postato cose che riguardano maya, ma molto spesso, saperne di più delle varie implementazioni aiuta un pò tutti No? :):)

Posta posta... :)

Non importa il software, i Mentallari sono come una famiglia buttrock0138828yi4.gif

Share this post


Link to post
Share on other sites

HDRshop - oddio, non lo so se la versione free non possa... nel dubbio, consiglio n. 2: Blender, ha un buon compositor a nodi e qualche bel filtro.

Adaptive sampling: lo svantaggio è minore di quanto si creda: basta aumentare il "contrast" fra i pixel entro il quale scatta il livello di aa superiore (scusate, io parlo per B2 ma dò per scontato che gli altri moderni raytracer abbiano gli stessi controlli).

Share this post


Link to post
Share on other sites

Ciao

Ho fatto alcune prove, ritornando alla situazione più problematica con i pannelli distanti....

Ho abbassato i min samples a 1/4 e alzato il contrast a 0,4, questo ha creato un po' di rumore sul piano di appoggio, ma non è questo che ci interessava....

In ogni caso, alzando da 16 a 64 si nota un lieve miglioramento, da 64 a 256 non cambia nulla.

samplingqualityhf8.jpg

Il problema dipende più dal filtering che dal sampling, infatti, aumentando la dimensione del filtro box il difetto si attenua, a fronte di una progressiva sfocatura....

Sampling 1/4-16 contrast 0,4

filterboxsizekt0.jpg

Sempre il size del filter ho rilevato un'ottima prestazione dei filtri non blurry, mitchell e lanczos che con size di default producono una scalettatura anche peggiore.....

filtermitchellij9.jpg

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...