PBR Uber-Shader

by Blackhart Films' Marketplace in Scripts and Addons

Easy PBR right inside Cycles!

With the rise of PBR in the AAA game industry and Allegorithmic's wildly popular Substance toolset, it's about time someone created a simple solution for implementing PBR textures inside of Blender. Finally, no more fiddling for hours with material nodes trying to vaguely make something that looks good. Now there's one solution that gets it right every time and in every lighting condition! Liberate yourself as an artist to focus on your art!

Uber Shading!
Controls

This shader is the culmination of months of working with Blender, playing with materials in Cycles, trying out other rendering solutions like Renderman, and taking the best elements of what I’ve learned and combining it into a single Uber-Shader. The benefit of an Uber-Shader of course being that it simplifies your Blender workflow, giving you a single set of controls to get the objects in your scene to look exactly as you want them, which you can re-use in all your projects instead of having to constantly recreate the same node-trees over and over. Since the release of this product, I've used this setup in every single one of my projects.

My solution takes things one step further, providing controls which are intuitive and should be very familiar to anyone with experience in the industry standard PBR Metal/Roughness workflow, such as can be found in Unreal Engine or Unity 5. My solution is specifically aimed towards letting Blender users take advantage of these intuitive controls which the game industry has been enjoying, and allows you to work with texture maps generated from dedicated material design software, such as Substance, 3D Coat, or Quixel. Any software that can output base colour, roughness, metallness, and normal/height maps will work with this solution. This setup combines dielectric, metallic, and refractive shading into a single shader- something no other solution I've come across has done.

Plug and Done!

Based on a PBR Metal/Rough workflow, all you have to do is import your textures, plug them in, and you're ready to go! This node group supports maps for:

  • Base Colour (Albedo, Diffuse...)
  • Ambient Occlusion
  • Roughness
  • Metallic
  • Normal
  • Emission
  • Height (Bump)
  • Opacity

 

From Product Owners:

  • "... the process is much simpler than I had imagined. This is a great plug-in for easily bringing PBR materials into Blender!"
  • "After evaluating a number of free Cycles PBR shaders, this turned out to be the most complete all-in-one PBR solution to boost your Cycles materials with physically based properties, complemented by good looking caustics and dispersion."
  • "Best PBR nodes I found, recommended!"
  • "I really like how he listens to the community and puts in features accordingly."
  • "I’ve been trying to reconcile Substance Painter and Cycles for my studio to create some pre-rendered 2d assets for a good amount of time. Your node is going to be invaluable to me. I just wish I had found it sooner, and I would have payed thrice the price."
  • "Thanks a lot for updating this PBR Material ! very appreciated ! It can sometimes been challenging with blender to get a PBR texture set working nicely… keep it up"

 

IMPORTANT INFO

In anticipation of the 2.79 release, which will include the "Disney" Principled BSDF shader, I did some testing comparing my PBR Uber-Shader versus the new Principled Solution. I did a lengthy write-up for /r/Blender about my findings, but the short answer is that the Principled BSDF is actually a really great universal shading solution now built into Blender. It will accept PBR Metal/Roughness maps, so it means that my solution is now somewhat obsolescent for standard dielectric and metallic shading. However, I also found that the solution's glass shading was very lacking, just like Blender's old Glass BSDF, and that my solution provided arguably more detailed roughness information, direct IOR control instead of ambiguous "specular" control, as well as a few other minor features... as such, I'm now offering a variant of my product for a serious discount which only includes the PBR Glass Shader (which is much better than the Principled or Glass BSDF solutions inside Blender), as well as my utility graphs for things like Inverting your normal maps to convert between DirectX and OpenGL, creating glass dispersion, creating glass absorption, getting more accurate Fresnel, etc... This variant is also included in the full price purchase for old and new customers alike. 

I want to thank everyone who has purchased by PBR Uber-Shader for supporting me, and I will continue to work on new add-ons and solutions for Blender, and continue to create content on my Channel to educate new digital artists. I'm glad that Blender is finally going to have a good PBR solution out-of-the-box, and I hope they continue to develop it into something even more robust. For now, I'll continue to offer the utility variant of my product, and probably add more little utilities to that over the coming months. Thank you all, and have a great day.


V1.2 Update

  • Improved Fresnel Accuracy
  • Replaced 'Dielectric Reflectivity' with 'IOR' control
  • Added use of Height Maps (Bump Maps)*
  • Slight tweaks to Improve Default Accuracy of Roughness Maps
  • Added 'Roughness Strength' slider below the Roughness map input; affects sharpness of the map exponentially

BeforeAfter

*Addition of height maps (bump mapping) for better texture depth results. Previously was not included because of a bug in previous versions of Blender which affected light wrapping, particularly with mirrored objects (For Example). Be aware that 8 bit BW height maps can produce banding, RGB normal maps preferred.

V1.3

  • General Tweaks
  • Improved Default Parameter Values; better previews when first adding material, doesn't start with .5 metalness, etc...

V1.4 Update

  • Introduced "Opacity" maps with a custom emulated glass shader
  • Separate controls for Opacity (ability to create translucent materials), opacity map strength, and Refraction IOR

AbstractMarblesGraded

V1.5 Update

  • Added faked caustics* to opacity shader (emulated glass)- better looking results with reduced fireflies, caustics also take tint from base colour
  • Added "Caustic Strength" control slider to increase or decrease the strength of the faked caustic effect
  • Added ray-depth culling for opacity shader - better looking results, reduces dark refractive artifacts without having to increase transmission bouncesAnisotropic Metal
  • Added "Anisotropy" and "Anisotropy Rotation" inputs for metallic shading; allows you to make anisotropic metals, such as brushed steel like pots, pans, etc.. defaults to 0 for regular metallic shading
  • Added metallic rim shading, secondary effect which lightens the colour of the metallic shader edge specular. "Metallic Rim" slider controls the size of this effect

 

V1.6 UpdateNormalMap Demo

  • Normal maps now fully integrated; issues previously noticed resolved
  • Normal maps corrected from Substance Painter (DirectX) for Blender Tangent Space
  • Removed "displacement" output as it is no longer applicable; once the feature stops being 'experimental' usage will once again be investigated
  • Fixed issues with Glass Refraction IOR not working as expected
  • Quick fix for a known bug with normal maps making refraction/glass shading in Cycles opaque (issue fix credit to Jim Morren)

 

V1.7 Update

In anticipation of the upcoming 2.78 release, including fixes to normal map handling and micro-displacement...

  • Added AO Strength Slider
  • Added Slider to Toggle Normal Map Inverting On/Off (DirectX or OpenGL)
  • Removed Glass Shader Normal Quick-Fix; bug was resolved in 2.78 (see above), making the solution no longer necessary.
  • Added new version of Shader: "Substance_PBR_MicroDisp". Use this is cases where you want to use the Micro-Displacement feature. Normal Maps/ Height mapping removed for this, replaced with a Displacement input and strength control for true surface displacement.

V1.8 Update

  • Updated gloss algorithm to Multi-Scatter GGX (new to 2.78); reduced shader darkening when increasing roughness
  • Added faked refractive dispersion to the emulated glass shader*; effect controlled with new "Dispersion Strength" slider**
  • Tweaked caustic ramp to help with the look of dispersion
  • Removed separate refraction IOR for clarity
  • Fixed faked caustics not respecting normal mapped surface tangents

Dispersion Thumb2

* Recommended at least 50 samples for correct results, lower samples can create colour distortion.
** (strength values should be 0-5 max)


V1.9 Update

  •  Removed SSS Version. I found myself most of the time just adding a Translucent shader on top of my shader using the Add-Shader mix, SSS is an overly heavy effect used for very specific instances. If you're trying to create Skin you'll want a multi-layer SSS shader anyway, which simulates the layers of skin, fat, and muscle under the surface of your skin.
  •  Improved Glass Fresnel effect
  • Added Glass Absorption effect, this allows you to create a colour for the internal glass separate from the base colour you'd find on thin edges- a tint for thick glass. Controls are exposed for scale and absorption colour.
  • Added an optimisation to render times for Bump mapping; when using height maps you should see a fairly significant increase in Render times, up to 30% faster.