Community
Arnold General Rendering Forum
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Does Arnold's microfacets model use multiple scattering to avoid energy loss when using high roughness values?

8 REPLIES 8
Reply
Message 1 of 9
milovan_mladenovic
655 Views, 8 Replies

Does Arnold's microfacets model use multiple scattering to avoid energy loss when using high roughness values?

Does Arnold's microfacets model use multiple scattering to avoid energy loss when using high roughness values?

here is a Siggraph paper on the subject:

https://eheitzresearch.wordpress.com/240-2/

Tags (1)
Labels (1)
8 REPLIES 8
Message 2 of 9

nope. heitz does a stochastic random-walk that generally means you get some other noise to deal with. arnold uses a tabulated energy compensation term. there's no energy loss for high roughness if that's what doesn't make you sleep well 🙂

Message 3 of 9

Thanks Max for the clarification.

Yes! I was more interested if there is a energy compensation when using high roughness values not so much what exact method is used for the compensation but it's good to know.

I did a test with a sphere and a AIstandardSurface with different roughness values which confirmed visually there is no energy loss but when I have transmission set to 1 (for example I want to achieve a frosted glass look with a higher roughness value) it looks like there is a energy loss because there is a visible darkening of the sphere.

Can you confirm that there is a energy compensation for refraction like there is for reflections?

We had a Netflix vendor test (one part of the test was the render engine) where we could not match the look of their test spheres when the sphere has transmission 1 and roughness 1. Our sphere did look darker (all other render tests we where pretty on spot).

We passed the test but I'm curious which one was physically more correct. The reference provided by Netflix (they didn't specify which render they did use) but it looked like it could be more correct or our sphere which had some darkening on high roughness values.

Thanks,

Marko

Message 4 of 9

I can't confirm anything because I don't work for autodesk but that's what I read from tech papers.

however on a 'white furnace test' I just did right now .. incredibly not the reflection nor the refraction have got a chance to pass it.

Here tests with reflection roughness at 1, 0.5, 0.2 .. everything should be pure white .. instead it approaches proper energy conservation only below 0.2 roughness.

3035-mmmhhhh.png

3036-mmmhhhh-05.png

3037-mmmhhhh-02.png

Eventually a test material in arnold that does proper multiple-scattering with roughness fixed at _1_ .. only multiple scatter bounces change here .. respectively 5, 10 and 20 bounces. at 20 almost no energy leak.. just some slight darkening artifacts at edges (that's a different problem than energy leak).

3040-rombo-10-5-10bounces.png

3038-rombo-10.png

Message 5 of 9

Also sampling gets weird with rough materials. A basic comparison between a fully energy conserving material (left) and aistandardsurface.

3049-rombovsaistandard.png

3050-rombovsaistandard-wft.png

Message 6 of 9

Hey Max,

I did a 'white furnace test' with the aistandardsurface (base weight set to 1) and I didn't see any energy loss. I get pure white in the 0 to 1 roughness range. Only when I have transmission turned on it shows energy loss, same as in your example in the previous post. Also when I use some HDRI it does not show noticeable energy loss (see attached picture).

aistandard-roughness.png

My conclusion was that aistandardsurface is energy conserving with high roughness values except when using transmission but your test shows that my conclusion was wrong. How did you do this test?

Message 7 of 9

here we're talking about microfacet reflections, right ? so you have to set metalness to 1 with also base=1 and specular=1 .. ie full reflections with no fresnel (or another setup.. diffuse to fully black and ior to 500). attach a default skydome light (with full white color) to your scene then start increasing roughness on your material ... you'll begin to see energy leaking from 0.2 and up.

# copy&paste it into energyleak.ass then .. 
# $ kick energyleak.ass 
options
{
 AA_samples 4
 outputs "RGBA RGBA filterg driverx"
 camera "perspShape"
 xres 960
 yres 540
 frame 1
}
gaussian_filter
{
 name filterg
}
driver_exr
{
 name driverx
 filename "microfacet_energyleak.exr"
}
persp_camera
{
 name perspShape
 position 0 0 10
 fov 40
}
skydome_light
{
 name aiSkyDomeLightShape1
 color 1 1 1
}
sphere
{
 name mysphere1
 radius 2
 shader aiStandardSurface1
}
standard_surface
{
 name aiStandardSurface1
 base 1
 specular_roughness 1
 metalness 1
}

output :

3075-microfacet-energyleak.png

Message 8 of 9

eventually things gonna be worst as soon as we add normal/bump mapping .. that beside producing other kind of artifacts, it also sucks energy! here compared to proper normal mapping based on micro-faceting (right).

3077-rombovsaistandard-wft-normalmap.png

Message 9 of 9

Hey Max,

I made a mistake and didn't set metalness to 1. Now I get same results as you.

Thank you very much for the explanations.

It's good to know that aiStandardSurface is not 100% energy conserving on high roughness values.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report