Community
Arnold General Rendering Forum
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Specular Roughness - BRDF Functions causes excessive darkening!

6 ANTWORTEN 6
GELÖST
Antworten
Nachricht 1 von 7
aneto1
816 Aufrufe, 6 Antworten

Specular Roughness - BRDF Functions causes excessive darkening!

Hello Arnold Devs,

 

I am a Look Dev artist from Cinesite Montreal, I've been working with Arnold rendering for years from shader development to look dev assets for different shows.

 

Over the years I've been reading different paper research about brdf and physical plausible shading.

Most recently I've been more and more annoyed by the way specular roughness contributes to make my assets to look have it's reflectance value darker as the roughness increase.

 

Because of that I decided to do some of those ideal dome light/material setup to test for much darker the specular reflectance portion of the shader would go.

For that I setup the typical white furnace test, which consists of a dome light with a white map, so the lighting power is equal to 1.0

 

For the material I decided to make it a perfect metal, where diffuse color and weights are equal to 1.0 as well specular color and weights. That material is then assigned to a sphere, or even a plane that is facing the camera.

 

From there all you need to do is start an IPR section and increase the specular roughness little by little all the way to 1.0

As you increase the specular roughness you will notice that the light reflected from the object start to becomes darker and darker, even tho the whole environment is emitting light from all directions at intensity of 1.0

In that sense my only conclusion is that the microfacet of the shader is starting to create self-shadowing, and possible some of the light coming from the surface has been bounced internally between this micro grooves that are getting shadow different angles.

 

The image below should be the rendering result:

render_result.jpg

 

 

 

 

 

For those not familiar with the concept behind BRDF of shaders, here's a link that gives you more details about how that works: https://learnopengl.com/PBR/Theory

geometry_microfacet_function.jpg

 

Perhaps even the Normal distribution function could be contributing to this too, but that only the devs would be able to test by leaving testing a render with only the Normal Distribution function and another with just the Geometry Function.

Normal Distribution Function.jpg

 

I would expect to have some energy loss like 1 to maybe 10% when the specular roughness is 1.0, but not something like 70% for this "ideal" material with 100% reflectance .

 

I would recommend to add a lerp function to the shader code that could compensate for this energy loss. Maybe that lerp would blend the original result from the BRDF math to a compensated value based on the reflectance result of the material(spec weight * spec map * fresnel).

 

Let me know what you guys think.

 

Best regards,

Antonio Neto.

6 ANTWORTEN 6
Nachricht 2 von 7
maxtarpini
als Antwort auf: aneto1

Ain't looking it is the microfacet stuff only losing energy because std material is not passing the white furnace test even with roughness set to zero (loses around 20% while with full roughness around 50%). Frankly I think it is a regression introduced lately because it wasn't like that last time I tested it, it was almost fully energy conserving.

 

This said, you might want to consider rombotools.

 

We recently added a new mode to our multiplescattering shader still not documented on the below page.

https://www.rombo.tools/2019/03/15/multiple-scattering-bsdf/

 

We're also almost fully energy conserving with bump and normal mapping.

Also here there's a new model that better preserves energy being added for the next release.

https://www.rombo.tools/2020/06/19/microfacet-based-normal-mapping/

Nachricht 3 von 7
aneto1
als Antwort auf: maxtarpini

Hum... multi-scattering reflection, that's sounds about right. 

And reminds me things discussed in this presentation:

https://www.activision.com/cdn/research/MaterialAdvancesInWWII.pdf

multiscattering_brdf.jpg

And this reference from their presentation is a good way to illustrate what is probably happening, but the difference from this image and the that pure ideal metal in a white furnace test, is that in the image below, the reflectance of the material is not 100%, and the light is not at 1.0 from all the angles, which would justify the 1.7 EV difference when seen the same material from a different angle over the same light, while the perfect metal and lighting would have minimal loss of energy even if it's a rougher material. 

 

Btw that image fits more into a retro-reflection model, which happens over very rougher surfaces, and below images gives some information about more recent research about brdf modes.

That's why my suggestion would be a cheap approach over having a true multiscattering specular solution, that makes light bounce and sample the microfacets normals variations as the surface gets rougher.lambertian_microfacet.jpgretro-reflectivity.jpg

Nachricht 4 von 7
jamie.portsmouth
als Antwort auf: aneto1

 

Hi Antonio,

 

The standard surface shader should in fact preserve energy and pass the furnace test (as we include a compensation term to account for multiple scattering between microfacets).

 

However your test seems to show there is some unexpected darkening, so it's possible there is some regression. Thanks for calling attention to this, we will investigate further on our side.

 

Is it possible for you to provide your repro case (ideally as a .ass file)? Also it would be helpful if you can state which version of Arnold and MtoA you are using.

 

If we find the issue, we'll update you here. Or otherwise keep in touch on our beta forum.

 

All the best,

Jamie

Nachricht 5 von 7
maxtarpini
als Antwort auf: aneto1

On my side I have to say that I left the base_weight set not to 1 which I didn't know was influencing the fresnelbycolors setup when metalness is on. With that stdmat is fully energy preserving and cannot repro what's on the OP. Until I don't add bump at least.

Nachricht 6 von 7
aneto1
als Antwort auf: aneto1

Hi Jamie,

 

Oh thanks mentioning that you guys had a fix implemented and that might be a regression.

So because you mentioned that I decided to check at work how's that behaving as at work I have access to latest versions of Arnold.

With that said I can confirm that the latest version of Arnold is doing fine as maxtarpini said, and the shader is not suffering that loss of energy as I thought. So my bad, I was doing that test under the personal computer at home, and my maya is from 2018, and Arnold is not up to date, it is just whatever version comes with that version of Maya.

Well was good to double check all of that and confirm this has been addressed in more recent Arnold updates, I used to have that impression in the back of my mind from past experiences from few years ago, and I think I've seen with other renderers too through the years. But as I was saying I haven't retested this theory in a more recent Arnold version until today when you brought up the questions about the version and that this should have been addressed in more recent versions of Arnold.

 

With all that said, I will appreciate you guys time, and sorry for any confusion caused by myself by testing stuff in old Arnold versions.

Nachricht 7 von 7
jamie.portsmouth
als Antwort auf: aneto1

No problem! Thanks for your post, best

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report