Disney-inspired PBS

After reading THIS 2012 article from Disney, I was inspired to apply the same principles to a PBS in Blender. For one, I liked the emphasis on artistic vision rather than mimicking reality. The settings that I had look like this:
/uploads/default/original/4X/b/c/3/bc3822dc5f6ad620850cb2023178ee282602591b.jpgstc=1
Like Disney’s shader, this shader is meant to be mixed and masked using the parameter values rather than the shader itself. Ideally, materials would be described by only parameter values, but Cycles has no method of grouping values in such a way.
baseColor: The surface color, usually an image. This affects the diffuse and metallic color.
Specularity: This controls the incident refelctivity. This is mapped to the 0-8% reflectivity of most diffuse materials. This corresponds to an IOR of 1.0-1.8, with the default of 0.5 corresponding to a typical IOR of 1.5.
SpecularTint: This shifts the color of the specular highlights from white to the baseColor.
Matallic: Replaces the diffuse/specular with a metallic shader whose incident color is baseColor.
Clearcoat: This is a white clearcoat on top of a material. It has a fixed IOR of 1.5 (polyurethane). The parameter affects the strength of the clearcoat, normallized to 0-25%.
ClearcoatGloss: This functions like inverted roughness for just the clearcoat. But, a gloss of 0 would be less than a roughness of 1.
Sheen: This adds an artificial fresnel affect upon the baseColor.
SheenTint: Tints the Sheen towards a more saturated baseColor.
Roughness: Roughness the material. The Diffuse uses roughness/4. This is usually squared for finer control of small values.
Subsurface (fast): A fake SSS that mixes the diffuse with a very rough diffuse shader combined with some AO. This slightly smooths the lighting and brightens the shadows. This is far from real SSS, but it looks decent for being so fast.

Here are some sample renders (purple rubber and gold):
/uploads/default/original/4X/c/0/5/c05c41076cf54ff2ede5fdede57037184140d141.pngstc=1/uploads/default/original/4X/6/2/d/62d976b2b88bb4f044e8b60d66260165262a752a.pngstc=1
I didn’t tweak these to be ultra realistic. This is an artistic tool to get things to look the way you want based upon physical principles.

Attachments




Here are more renders (cloth and skin):
/uploads/default/original/4X/b/9/7/b9746c826b208fbf00ff59c4f4375b0899e48357.pngstc=1/uploads/default/original/4X/f/a/c/facf7d425018cc9bc81a16d7b4aa4e01dde19378.pngstc=1

The skin is… meh. But, it is very fast. In fact, this shader seems to be only slightly slower than a Diffuse shader.

Here is a character using only this shader for all the materials.
(This character belongs to TheDuckCow)

The shader supports normal maps, and I even used some textures to influence some of the shader’s parameters. In this way, you mask different materials by influencing the parameters of the shader, not by adding more shaders. Unfortunately, I don’t know of a way to bundle multiple parameters into a single package (like a datatype), so having images that mix completely different materials is troublesome since you need to modify each parameter individually.

So far, I really like the usability of this shader. I would like to add SSS, translucent, and glass options; but I haven’t figured out how to add them without degrading the beauty of this shader’s simplicity.

Attachments