Blender Cycles: Simple PBR shader

UPDATE

You should use the Principled BSDF shader instead of the method described here. See https://jtheninja.wordpress.com/2017/05/11/substance-and-blender-2-79/ for more information.

__________

There are a lot of ubershaders out there for Cycles. Node groups that promise to cover every possible use you might have, mimicking the ubershader in Blender Internal, and some similar shaders in other renderers, like Arnold’s aiStandard.

This isn’t one of those node groups. The problem with those things is that they end up being a 700 pixels tall node with 27 buttons and sliders on it that doesn’t make any sense at all. I’ve never bothered with those things, because I don’t want to sort through all that crap. Ubershaders like this work for BI or Maya/Arnold because they have UI things like checkboxes and tabs and rollouts. Node groups don’t have those. Even then, they aren’t perfect. Occasionally you find yourself trying to outsmart the ubershader because you need some specific effect it isn’t set up for. For those tricky shaders, Cycles’ bare-metal node design works great, you can have things just the way you want.

All this is a rambling way of establishing that all that crap is useless 90% of the time. Handling tricky shaders is great, and Cycles has a way to do that. But most shaders AREN’T tricky. Look around you. I’m betting most of the items in your room right now could be described with a simple metal/coated-glossy shader, and most of the ones that aren’t are made of glass. A lot of the time in Cycles, you’ll find yourself dragging the same set of nodes together, especially for environment trinkets. This grind is why I made Simple PBR. A minimalistic physically-based shader for all those times you DON’T need over 9000 sliders. Say hello:

default

exploded

Simple PBR makes things like wood, plastic, ceramic, and metal easy. All the bits you need are pre-wired and packaged, you just need to supply values and textures. Simple PBR has just 6 inputs:

-Albedo aka Diffuse Color
-Specular Color, controls brightness of non-metal reflections
-Fresnel IOR, controls fresnel effect on non-metal reflections
-Roughness: the input for gloss/roughness/microfacet/whatever-we’re-calling-it-this-month
-Metalness: blends between metallic and non-metallic reflections
-Normal: bump/normal maps plug in here.

You can download it here: https://dl.dropboxusercontent.com/u/1706676/YouTube%20Summary%20Files/simple_pbr.blend.zip

Currently, metal reflection color is controlled by the albedo input. I’m a bit indecisive on whether they should be controlled from this input or specular color, or its own color. That might change in a future version. Also note that as a result currently spec color is not actually a color, it’s a 0-1 spec intensity value pretending to be a color. Any color isn’t actually used. (this might change in future versions of Simple PBR, if they exist).

After some thought, I decided to attach the spec map by using it to scale the fresnel mix factor used to mix diffuse/glossy reflections. In my opinion, this produces the best combination of physical accuracy and ease of artist control.

The roughness value is shared by diffuse, glossy, and metal components. It’s just Cycles’ usual 0-1 roughness value. Remember that in your gloss maps white is rough, black is shiny. Don’t forget to invert your map if needed, like when your gloss map is slightly modified version of your spec map.

The metalness input is there because metals are weird. They DO have colored reflections, and they don’t have fresnel. This input controls the blending of a second glossy shader that handles this department.

Some other example renders:

Brown albedo

metalness_none

Metalness increased to 50%:

metalness_half

Metalness at 100%

metalness_full

With textures

textured