Jump to content
Wolfwood

BSDF Bonanza: GGX, Microfacets, Disney BRDF and More

Recommended Posts

Other Tidbits-

 

The GGX/GTR model has a roughness parameter that ranges from 0 to 1 instead of phong/blinn's shiny parameter that goes from 0 to inf.  In Houdini the shiny parameter has been reparameterized to be a angle between 0 and 90 degrees.  Blinn and Phong both have a well defined specular lobe that where as the GGX/GTR model's lobe has a really long tail that falls off over the full hemisphere.  (Which is why people like it.)  Because of this there isn't really a direct one to one mapping of the parameters however if you are only comparing the brightest part of the lobe you can get a fairly close mapping with the following

$roughness = sqrt(2.0/sqrt(6-log(4)/log(cos(radians($angle)))));
Edited by Wolfwood

Share this post


Link to post
Share on other sites

Thank you for this. This is awesome.

 

I will go and check this out asap.

 

 

Could you explain a little bit more on how you use Mathematica to evaluate your BSDFs? Maybe you could even share a notebook?

 

cheers,

Dennis

Share this post


Link to post
Share on other sites

Amazing work Jim! I have no idea about all of this really, but I will definitely give it a spin when I have some time to spare.

Share this post


Link to post
Share on other sites

So, I'm playing around with the new shading toys here, and they look fantastic.  I'm wondering though, what's a good way to use these along with refraction?  Would I add a physically based specular with refract label, and use the fresnel vop to blend between them?  or add them together? or is there another more "intelligent/correct" way to implement refraction here?

Share this post


Link to post
Share on other sites

So, I'm playing around with the new shading toys here, and they look fantastic.  I'm wondering though, what's a good way to use these along with refraction?  Would I add a physically based specular with refract label, and use the fresnel vop to blend between them?  or add them together? or is there another more "intelligent/correct" way to implement refraction here?

 

There isn't a "clean" way to do it currently.  If using the distribution only (and not the microfacet model) you can flip the normals and do it similar to how the Mantra surface works (fresnel blend), but ultimately support should be built in.   I already have logged an issue (#19) for this.  So far only the BRDF has been implemented from Walter's 2007 paper, issue #19 is to implement the BTDF too (making the full BSDF).  It shouldn't be too difficult, and is high up on my TODO list once I'm back from Siggraph.

Edited by Wolfwood

Share this post


Link to post
Share on other sites

Great work indeed, bringing mantra PBR shading to this decade ;)

 

.. once I'm back from Siggraph.

 

If I were there this year, I'd buy you a gallon of beer :)

Share this post


Link to post
Share on other sites

This topic is pure gold! :D

 

Things like this can only happen in houdini land. Thank you Jim for this brilliant work.

 

 

Cheers!

Tom

Edited by Tom

Share this post


Link to post
Share on other sites

Amazing! and extremely generous! :) 

 

And there goes my weekend... testing and putting this into our ubershader asap... :)

 

Many many thanks!

S

Share this post


Link to post
Share on other sites

One small issue - Disney Mixer doesn't mix anisoAngle.

Ha. I was debating whether or not that parm should be mixable just the other day. Guess that answers that. I'll have it updated in a few hours. (And I'm looking forward to the "I told you so" from one of my coworkers :) )

Fyi- currently none of the geometric parameters blend, like nN or the tangent directions.

Edited by Wolfwood

Share this post


Link to post
Share on other sites

Furthermore, seems like the Disney BRDF in passthough-mode doesn't pass anisoAngle through, so in any mixing scenario the angle is 0 everywhere.

Share this post


Link to post
Share on other sites

Furthermore, seems like the Disney BRDF in passthough-mode doesn't pass anisoAngle through, so in any mixing scenario the angle is 0 everywhere.

Correct, currently the disney_struct has no concept of any of those geometry terms and they can only be set on the final Vop. Was a design decision but an easily changeable one. :D (I had considered anisoAngle a geometric term, but I am easily swayed.)

Edited by Wolfwood

Share this post


Link to post
Share on other sites

Ah, yes, I see. Hmm. If the layering scenario is e.g. brushed paint on brushed metal, then the aniso direction would need to be different for the layers? A bit contrived, this - dunno if there is an actual use case.

If the layers are thought of as complete materials, then maybe the bump/normal should blend as well? Then again, if you want to have an option to use displacement, then you'd want to do the normal/displacement blending separately in the displacement shader anyway.

 

Ah, I don't know, it's quite fine as it is in any case.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×