Disney BRDF in Cycles
For a few months now I'm implementing (on a private repository) the Disney BRDF shader ( disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf ) as a new node in Cycles. By now there have only been a few external approaches, where a render server (like in Appleseed or Renderman) is accessed by a Blender plugin. But it would be nice to get access to this without any additional software to install.
The current state of my implementation is, that the OSL closure is finished and has also been tested against Renderman. Another step that I've taken was to implement the node to easily access the Disney BRDF. This can be seen in the screenshot below.
Currently OSL has to be activated, because I haven't done all steps to include the Disney BRDF completely in Cycles. But I think that's only one small step to take.
<b>Update1:</b> The shader is now usable also without OSL. I’ve added an additional normal input for the clearcoat so that one can apply a smoother normal map to get the simulation of a thin varnish layer that fills the "bumps" that are produced by the original normal map. Furthermore I've implemented the improved subsurface scattering that is presented here: blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf
The next step will be to implement the thin-surface and solid BSDF.
You can get my code by checking out the <b>cycles_disney_brdf</b> branch of the Blender repository.
13 Comments
Pretty fantastic - I can see this being a great shader start for my students and then learn how to make shader networks.
Little follow-up on this. There is a new branch in the dev repo (cycles_disney_brdf) , managed by new commiter Pascal Schön. The explicit goal here is to get this BSDF working in Cycles.
Yeah ... that's me. ;-)
Ha! I looked right at your most recent commit (which has your nick on it) and it didn't even register. Should've had more coffee before posting. :)
Compiled this on the weekend. Aside from the instacrash when using Subsurface, this looks fantastic and is very user-friendly.
Here it is not crashing when using Subsurface... Which OS do you use and what did you do exactly?
Was using Xubuntu. It's been ages but I think the crash is fixed now.
What's the difference between this BSDF and an Ubershader node group that you can assemble from the basic nodes?
There are some differences in specular reflections like a Fresnel term that causes reflections at gracing angles. I haven't found any solution to get such a behavior. Also the clearcoat that approximates a thin layer of clear varnish on the material can't be excactly built from the basic nodes. But this are only some of the things that can't be done.
The reason I've taken this step to get the Disney BRDF into Cycles was that it is a standardized model that is commonly used. And by providing this node, the BRDF can be used easily by artists that don't want to spend time on getting a similar behavior.
I don't really understand why do you guys like this shader. As it's defined as an ubershader it has a number of drawbacks that discards its awesomeness:
About Fresnel. I don't get it, sorry. Are there some more accurate algorithms in Disney in comparison of just mixing shaders by the Fresnel value?
Thank you for you attention.
The goal of the Disney BRDF is to be artist friendly first and foremost. Also note the later version have better SSS blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_slides.pdf
The newest version of the BSDF is one of the further steps that can be taken, but at first I wanted to have a well behaving implementation.
Love this! I already love it in Renderman.