Material competency can be illustrated with a breakdown of a custom Celshader as per below:

Overview

Divide the scene color by the diffuse color to create a mask approximating lighting values.
*This could be more accurate if we exposed the lighting info or hooked into the process with SceneViewExtension but this is simple and sufficient for most uses.
Using a curve atlas, we sample a grayscale curve with stepped keys we then use the lighting mask as its UVs. 
This method allows the 0 to 1 values of the lighting mask to remap the infinite values of normal scene lighting to the fixed values of the curve.
We approximate lighting color into a mask. Again, not as accurate as more complicated methods but is quick and sufficient for most uses.

Multiply the scene diffuse color by the lighting mask. Apply coloring from lights, if desired.

We take any values from the SceneTexture over some cutoff value (set by scalar parameter) and allow them to exceed the normal max lighting value.

Crosshatching for shadows on any model that is set to the appropriate custom depth stencil.

Material Function - Depth Stencil Occlusion Test

Using a Sobel and Normal comparison we add outlines.

Material Function - Sobel Compare.

Material Function - Normal Compare

We fade out the outlines over distance.

Material Function - Scene Depth based Alpha

HLSL is modified to provide a Kuwahara effect. This is a standard smoothing algorithm which can be used to create a somewhat painterly effect.

Lastly, we exclude anything with a predetermined custom depth stencil value. Using stencil values rather than custom depth alone allows us to use each of 256 values for individual filtering/masking rather than just one.

Debug view of Scene Depth Stencil Values.

Final output of celshader.

Back to Top