The idea to create custom Cycles shaders came to us after creating hundreds of studio renderings for our chocofur store, as well as through general conversations with people on the topic. Blender is great, we all know that, however it still lacks certain solutions that would make your work a bit easier. It specially applies to projects where many actions have to be repeated over and over again. We'd like to change that by sharing and explaining our approach to shaders and materials within Blender and Cycles.
Our idea is relatively simple - we've created few node groups inside Cycles and used them for creating 10, purpose focused shaders. It's basically 5 different material types: glossy/coated surfaces, metals, fabrics, translucent and glass (perhaps few more to come), each saved as basic and advanced shaders for more flexibility and different production purposes. We know there are many Cycles shaders out there already, however we've found some issues that can be associated with most of them.
First - the attempt to re-create an "Ubeshader", universal material / node group that could be used in every situation. Although it is possible, we've abandoned this kind of approach to shading in Cycles because we think it's not practical enough. The ability to control every material aspect at any given time sounds tempting, but is it really that necessary in day to day 3D production?
Our experience says "no" - we usually know what type of material should be assigned to the surface. Why then build it from the scratch with an Ubershader when you could apply a general "metal" or "plastic" shader and set it up with a few clicks?
Second - node tree lengths. Most of the Cycles shaders we've tested are really huge and complex. That's because of the "Ubershader" approach again - creating the solution that gives the user control over everything. The question is - do we actually need that? You may be familiar with Pareto principle - a theory stating that 80% of the desired effect can be achieved with only 20% of general knowledge on the topic. This is the exact approach we wanted to take creating our shaders - maximum effect with minimum adjustments (there sill will be some stuff to adjust don't worry).
Third - procedural shaders. As with the Ubershader approach - we don't criticise it however, in our day to day production we find simple image textures much more reliable and quick to configure. All the shaders you'll be seeing in this tutorial were created using only one texture input - we've found a neat solution to generate all the necessary maps like bump or reflection, just from a single image.
The license on all our shaders and textures has been changed to: CC0 1.0 Universal (CC0 1.0). What does it mean in practice? Quoting from the Creative Commons source:
You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
As for now, the CC0 license applies only to free shaders and textures published by chocofur. We plan extending the license to our 3D models too (models, shaders and textures included in the models), as soon as Blender Cloud supports them.