I want to share with you an early evolution of my Texture-based Generic Shader which I update with a new PBR node group in order to realize also non texture-based materials, covering a wider range of needs. That’s why I named it (very modestly) Mega Shader!!!
In addiction to the use of a PBR Surface node group, which allows you to realize Dielectric, Metallic and Glass materials, I fixed some issues on the Texture Manager structure for a better behaviour with Gloss and Reflection maps.
Mega Shader comes with no texture at all
I deliberately do not use Displacement maps within the shader because I think (but obviously it is just in my opinion) theese maps could give the best results when used with a Displace Modifier.
The shader has 3 node groups: PBR Surface for the creation of PBR materials, Texture Manager to manage all the textures’ settings and Scaling controls to set separately texture’s scales and coordinates.
PBR Surface node group can be used without any texture and it reates Dielectric, Metallic and Glass PBR materials. The settings used by all types of materials are Diffuse Color, Roughness and Reflection Boost, IOR and Normal input; for metallic materials you can also set a Rim color, while for Glass materials you can add a Volume Absorption effect, with Color and Density values, connecting the Volume output-input.
This node is based on the PBR shader series of tutorials by CynicatPro.
If you want a texture-based materials which follows the PBR rules, you just have to load you textures and connect the two node groups.
Texture Manager essentially works as my earlier Texture-based Generic Shader, except for the changes above. So very easily if I have a Diffuse map I load it into the Diffuse texture node and connect the Color connectors; the same for the Normal map.
We can control the Roughness and Reflection Boost values through some Gloss map and Reflection map; once loaded and connected, values can be managed by the sliders on the Texture Manager.
AO map is mixed to the Diffuse map with a Multiply math node and its usage is optimized with both maps (otherwise you’ll see the beautiful “purple effect”). You’ll be eventually able to use AO map alone (even if I can’t figure out why you should do ti!!) simply disconnecting the Diffuse Map input of the Texture Manager and setting the Diffuse Color from here (AO map will be mixed with RGB Color).
Texture Manager allows you to add up to two overlay effects, one for the Roughness (i.e. fingerprints, droplets etc.) and one for the surface (i.e. scratches).
Gloss Overlay map affects the Roughness value so Roughness input-output must be connected, even without a global Gloss map. You can therefore set he values with the Gloss Overlay Amount slider .
Surface Overlay allows you to use a normal map for the relief (controlled by the Surface Overlay Depth slider) and also a B/W map to darken (or lighten) the crevices (as an AO map), controlled by the Surface Overlay Darkness slider.
Surface Overlay NORMAL map is mixed to the global Normal Map and it has to be used with both maps plugged in; if you don’t have a global Normal map, you can add the Surface Overlay alone by connecting the Normal input-output, setting the Surface Overlay Depth to 1 and managing the scretches depth with the Normal Strenght slider.
The Surface Overlay map, as an AO map, is mixed to the Diffuse map with a Multiply math node and its usage is optimized with both maps (otherwise you’ll see the beautiful “purple effect”). You’ll be eventually able to use Surface Overlay map alone simply disconnecting the Diffuse Map input of the Texture Manager and setting the Diffuse Color from here.
Texture Manager node group is meant to be used with a white to black Gloss Overlay map and a black to white Surface Overlay map; if needed, you can invert the B/W values of the maps by enabling/disabling (M) the Invert nodes onto the Overlays frame .
Talking about texture-based materials, I think tha it’s quite impossible to set a generic shader which is perfect with every kind of texture, just because much of the final result is done by the textures themselves, depending on how they are (colors, resolution, contrast etc.).
I just tried to obtain a good balance among the infinite possible adjustments, aiming to speed up my workflow and to save the time spent with theese repetitive but necessary steps.
This could be the main reason why this shader could not suit your specific needs or the expected result.
Reguarding the PBR matter, I’m totally newbie and my only knowledge comes from few tutorials (as mentioned above) or from some old memory of analisys and physics studies…. very old ones!!!
So in case of rude or huge mistakes, please have mercy!!!
Feel free to send me any suggestion, feedback or report using my contact information at the bottom of this page or directly from my Contact section.