Cel-Shader & Outline Highly customizable cel-shading Material/lighting system. Mesh outlines are also included.
This is a cel-shading system that does not use post processing. It has five different light types and many options to customize the look of your project. Outline Materials are also included, both inverted hull and post process.
A quick look at the Material/light options:
NOTE: The blue-haired character shown above is my character and not included in this pack.
Material instance options to independently control shadow/specular thresholds, colors, light influence, brightness, fresnel, etc.
Shadow/specular thresholds can be offset by vertex color values or Textures. This is similar to a technique used in Arc System Works games such as GG XRD to give artists more control over what parts of a mesh are shaded, lit, or highlighted. The same can be used to control outline thickness when using an inverted hull outline.
Five different light types: directional, point, spot, area, and shadow.
Lights are on separate channels and can be combined with other channels individually selectable in Material instances.
All cel-shade lights are movable and have various options including color, brightness, range, and falloff, all of which can be changed at runtime.
There are 8 different cel-shade light channels although, more can be added in the respective Material function.
UE4’s lighting can also be used in conjunction with cel-shade lighting.
Inverted hull mesh outlines scale with distance and include a noise option for a more stylized outline with varying line thickness.
Post process outline is also included as an alternative to inverted hull outline
“Simple” cel-shader Material that has fewer features, but is more performant and easier to use than the main cel-shader Material.
Tested on Windows using Unreal Engine: 4.20 – 4.24
Materials: 2 Cel-shade Master, 3 outline Master
Blueprint: Cel-shade light
Am I correct in assuming a geometry centered approach gives the greatest control over lighting and line thickness eg. for terrain where you can see the shadow line of a hill merging gradually into a plain? What if I don’t need pixel lighting on my terrain surface? (And I probably wouldn’t plan on using vertex-based light/shadow or cell-based text backgrounds.)
Then I’d be better off sticking with the geometry-type approach, or instead is the screen space/segmentation approach to keep things simpler? If so, how would I get the “ink” of the hills in the mesh silhouette, instead of just the outline of the whole mesh (without the “ink” detail inside that contour? (Contour hinted by the outline of the whole mesh?) AKA, folds).
Finally, is it possible to cheaply simulate the flip rule approach, using a geometry shader? My concern with this is that I can certainly duplicate each single vertex and scale these vertices accordingly, but how can I approach the distinct flip and color normals in fragment shader?