Is there a way to make a true toon shader material in Cycles?
Here's, in order of importance, what would be ideal to find in such a shader:
- Must use Cycles
- Must be an actual shader
- Must not rely on lighting
- Must be independent of camera position
- Must react directly to lighting rather than manually having to change it to emulate it
- Should be easily made into a node-group
- Should have the following configurability:
- Main color
- Darkness color
- Shadow depth (how far the shadow goes from the unlit side)
Below, I'll be listing some already-found methods and their flaws:
Cycles's Toon BDSF:
Source: Blender
Result:
Node setup:
Cons:
- Not a clear-cut two-color shading
- Reacts to diffusion of surrounding objects
Mask & Ramp:
Source: Blender StackExchange
Result:
Node setup (Compositor):
Cons:
- Very grainy
- Does not support colour textures
- Not easy to change shadow depth in a nodegroup
- Not a material, requires compositor
- Requires use of object indexes
Shadeless Fresnel:
Source: NixArt
Result:
Node setup:
Cons:
- Uses camera's direction
- Ignores lighting
- Not easy to change shadow depth in a nodegroup
Shadeless Normal:
Source: NixArt
Result:
Node setup:
Cons:
- Ignores lighting
- Direction of shadow is manually changed
- Not easy to change shadow depth in a nodegroup
However, this one is easily the best one. It's pretty great, and would work still images very well.
That's all I've got. Does anyone else have any methods that fall under most of the criteria I listed above? Also note that OSL is totally fine, if it works.