[Bf-cycles] Disney BRDF Implementation in Cycles

Pascal Schön pascal_schoen at gmx.net
Wed May 18 09:36:24 CEST 2016



Now that the Disney BRDF is committed into a new branch of the Blender git, I’m working on refining it. Currently it is a single node that only OSL can process. But I want it to be like all the other shaders. 

Here I’m getting the problem to process it via SVM which seems to be tricky. I think, for this a split version of the BRDF/BSDF would be the best in the following way:


Burley Diffuse: This can be included in the Diffuse BSDF node by adding a new selection to the drop down menu.

Sheen: I would separate this from the default diffuse part into a new node OR also include it in the Diffuse BSDF node as a new selection. Which one would be better?

Subsurface Scattering: Here the default Subsurface Scattering node can be used because it already implements the updated version from Burley.

Disney Specular: This would be a new node because it has the metal and dielectric part which would be hard to get into the Glossy BSDF node (primarily because of the parameter names).

Disney Clearcoat: This would also be a new node. 


What do you think? Would this be a better solution. One problem of this is that artists have to create a node group that implements the correct behavior. Is there a way of providing a node group that artists can use?


I hope you have some suggestions on this topic.




From: bf-cycles-bounces at blender.org [mailto:bf-cycles-bounces at blender.org] On Behalf Of Sergey Sharybin
Sent: Dienstag, 17. Mai 2016 09:29
To: Discussion list to assist Cycles render engine developers
Subject: Re: [Bf-cycles] Disney BRDF Implementation in Cycles




Thanks for sharing the work!


As for getting commit access to our git, think it's all reasonable to move development of such feature under blender.org infrastructure (in a branch initially, so we don't ruing master branch immediately). For that you'll need to be registered at developer.blender.org first.


Also, if you can drop by to IRC #blendercouders ar irc.freenode.net it will speed up some communication. You can poke me in there (nick hackerman), or just ask the guys around there if you'll have some difficulties or such.



On Tue, May 17, 2016 at 9:09 AM, "Pascal Schön" <pascal_schoen at gmx.net> wrote:

I have pushed my implementation in a bitbucket repository with the branch name cycles_disney_brdf. You can clone (or add it as a new remote) and test it, if you want:




But now I have another question for committing to the original Blender repo. I need commit rights but don't know how to get it. I've read that I have to get in contact with one of the admins, but on the wiki I'm always refered to the mailing lists. Thus I just wanted to ask, if I only have to write to the bf-committers list or what do I have to do?


You can answer directly to my mail address if is refered to my committing question, because it doesn't have to be discussed here I think. ;-)




Gesendet: Donnerstag, 12. Mai 2016 um 13:54 Uhr
Von: "Pascal Schön" <pascal_schoen at gmx.net>
An: "Discussion list to assist Cycles render engine developers" <bf-cycles at blender.org>
Betreff: Re: [Bf-cycles] Disney BRDF Implementation in Cycles

Yes, that's excacly what it is. It's an approximation of the glossiness of a clear varnish. It's described in the paper that Disney published and I refered to in my first mail.


On 5/11/16, 19:39 Zauber Paracelsus <zauber at gridmail.org> wrote: 

Pardon my asking, but what is clearcloat?  Is that a simulation of having a thin layer of glossy/transmissive material on top of another?  (eg: simulating things like varnish)

On 05/11/2016 01:36 PM, "Pascal Schön" wrote:

Thanks for your quick replies.

Some words to the implementation:

I've already splitted the BRDF into three closures after trying to get a single closure implementation to work correctly. But it came to my mind that this would be against the cycles architecture of splitting stuff into diffuse and glossy. And it made it also much more complex.

The three closures are:
- disney_diffuse(...): Calculates the Burley diffuse term, subsurface scattering and the sheen
- disney_specular(...): Calculates the "normal" specular highlight and the metalness (also anisotropy is included here)
- disney_clearcoar(...): By this the clearcoat specular highlight is calculated (less bright and no anisotropy)

In an OSL script, which is also the script for the node, these three closures are called correctly and added together.

I've already seen the updated version of the Disney BRDF but I wanted to focus on the more simple one that was proposed in 2012. The additionals (like getting from a BRDF to a BSDF) would be one of the next steps.

I'm going to commit my implementation to a new branch next week, because this week is a bit stressful and as it is my first commit, I wanted to take some time for it.


On 11.05.16, 19:06 Stefan Werner  <http://swerner@smithmicro.com> <swerner at smithmicro.com> wrote: 

Eventually, it might be interesting to split it into separate closures, so that one can still use separate ray counts for specular/diffuse/transmission and get them to render into separate passes. This will probably require to put fresnel back into the closures (going back in history, it looks like Cycles initially had that).

Stefan Werner | Senior Software Engineer; Productivity & Graphics
Smith Micro Software, Inc. | http://www.smithmicro.com <http://www.smithmicro.com>  <http://www.smithmicro.com/>

On 5/11/16, 4:18 PM,  <http://bf-cycles-bounces@blender.orgonbehalfofLukasStockner> "bf-cycles-bounces at blender.org on behalf of Lukas Stockner"  <http://bf-cycles-bounces@blender.orgonbehalfoflukas.stockner@freenet.de> <bf-cycles-bounces at blender.org on behalf of lukas.stockner at freenet.de> wrote:

>The Disney BRDF shader is actually pretty interesting for Cycles!
>I've played around with it for a while as well, but my code isn't fully
>working yet, so it'd be awesome to have your code around.
>Some notes:
>- There's actually a later revision of the paper you linked with a few
>more details, might be handy:
>- There's also a completely revised BSDF that includes actual subsurface
>scattering and transmission, and they note that it solves a few issues
>with energy conservation and path tracing in general that the original
>2012 BRDF has:
>- I'm currently working on energy-conserving microfacet closures, which
>would pretty much solve the issue that caused them to include the sheen
>stuff - at the cost of not being 100% compatible to other implementations.
>But that can all be handled later - in general, it would be awesome to
>have the Disney BRDF/BSDF in Cycles, and your code would certainly be
>welcome! Even if we go with the revised BSDF, it is pretty similar to
>the original BRDF, so it could be upgraded easily.
>Am 11.05.2016 um 15:57 schrieb "Pascal Schön":
>> Hey guys,
>> For a few months now I’m implementing (on a private repository) the
>> Disney BRDF shader
>> (https://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. Both acted the same
>> in my testcases (except for the rendering approches by the two
>> renderers, which cause some minor differences in indirect lighting).
>> Another step that I’ve taken was to implement the node to easily access
>> the Disney BRDF.
>> 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. There I hope to get some help by the community
>> because it's a bit confusing where to add which code fragment.
>> You can see some screenshots here:
>> https://www.dropbox.com/sh/j7w4v0bu9a5jhvz/AADSF3nm3LZCZnHgyPMwhrT6a?dl=0 <https://www.dropbox.com/sh/j7w4v0bu9a5jhvz/AADSF3nm3LZCZnHgyPMwhrT6a?dl=0> 
>> I would be pleased if you tell me if this would be nice to have or if it
>> is too special for Blender.
>> Pascal
>> _______________________________________________
>> Bf-cycles mailing list
>> Bf-cycles at blender.org <http://Bf-cycles@blender.org> 
>> https://lists.blender.org/mailman/listinfo/bf-cycles <https://lists.blender.org/mailman/listinfo/bf-cycles> 
Bf-cycles mailing list
Bf-cycles at blender.org


Bf-cycles mailing listBf-cycles at blender.orghttps://lists.blender.org/mailman/listinfo/bf-cycles

_______________________________________________ Bf-cycles mailing list Bf-cycles at blender.org https://lists.blender.org/mailman/listinfo/bf-cycles <https://lists.blender.org/mailman/listinfo/bf-cycles> 

_______________________________________________ Bf-cycles mailing list Bf-cycles at blender.org https://lists.blender.org/mailman/listinfo/bf-cycles

Bf-cycles mailing list
Bf-cycles at blender.org



With best regards, Sergey Sharybin

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-cycles/attachments/20160518/76a6eb00/attachment.htm 

More information about the Bf-cycles mailing list