If you have a dielectric (non metallic) sphere with a large roughness value (say, 0.95), and put it in a lighting environment that has a constant onmidirectional lighting value (such as 0.5) Cook-Torrance ggx PBR renderers seem to be missing a darkening at glancing angles.

I thought this was a bug in my PBR implementation at first when comparing vs a mitsuba ggx render, but I've found the same issue in google filament (https://github.com/google/filament) as well as in substance.

For instance, below is the iray version from substance compared to the opengl version from substance. 0 metalness, 1 roughness, omnidirectional ibl of 0.5, albedo of (1,1,1).

Is this a known limitation of cook-torrance ggx based PBR? Can anyone explain why this limitation is here, and the reason for the difference?

I've noticed that it's much closer to the path traced "ground truth" at lower roughness values (like up to around 0.5-0.75), and that the most commonly interesting roughness values are near the lower end of roughness. 0.5 even looks almost "completely rough" for instance. Is the issue that the approximations used don't really try to make these less important higher roughness values look correct?

it's odd to see that in substance, the IBL color is interpreted different between the path traced and rasterized version, but that's unrelated :P
– Alan WolfeSep 12 at 18:35

couldn't that be a result of some tonemapping postprocessing step?
– ivokabelSep 20 at 12:45

Nope, it doesn't have anything to do with tone mapping or any other post processing. Verified by doing other furnace tests, and comparing between different renderers which have explicit controls for those things.
– Alan WolfeSep 20 at 14:04

2 Answers
2

The problem is in the diffuse term, which can be seen by making the specular portion of IBL not be added into the result. The diffuse only render will not have the darkening, and of course, the specular can't make the diffuse darker. (Note, fresnel vs no fresnel is not the issue here).

The core problem is that lambertian diffuse is being used, which is view independent. There are other view independent diffuse terms which give results closer to the ground truth.

@Alan Wolfe - Although Oren-Nayar may give a closer look to the ground truth, I think the main problem is in fact the Fresnel Issue. Fresnel issue guarantees that at glancing angles, more light reflects, this would mean at glancing angles we have more specular part and very low diffuse part thus giving the black ring. Atleast that's what makes sense to me.
– gallickgunnerSep 14 at 14:06

This is not related to the edge but in https://eheitzresearch.wordpress.com/240-2/ you can clearly see that energy is lost for the microfacet stuff when roughness is increased. The issue is that the rougher the surface is, the more occlusion you get from the shadowing function.