Skip to content
Uyen Dang
All notes

Blender watercolor shader (tutorial notes)

Notes from following a watercolor shader tutorial: toon base to watercolor breakup to outlines (inverted hull plus grease pencil) to a quick compositor stack.

Date
Sep 2, 2025

Credit (original tutorial)

This entry is based on a tutorial walkthrough. The steps were followed and the node setups were captured as notes along the way.

Original tutorial (YouTube)


Initial render settings

Baseline first. Render Engine set to EEVEE. Color Management, View Transform set to Standard.

Render settings: EEVEE selected
Render settings: EEVEE selected
Color Management: View Transform set to Standard
Color Management: View Transform set to Standard

Basic toon shader on Suzanne

Start with a clean toon base. Keep values simple so the watercolor layer has a stable foundation.

Toon shader node setup on Suzanne
Toon shader node setup on Suzanne
Toon shader viewport result
Toon shader viewport result

Target here is readability. Controlled shading first. Texture breakup later.


Basic watercolor effect (with Voronoi texture)

Add Noise plus Voronoi. Drive Voronoi with Noise so the breakup reads as paint patches instead of uniform noise. Connect Noise Vector to Voronoi Vector. Connect Noise Color to Voronoi Smoothness.

Noise to Voronoi setup (start)
Noise to Voronoi setup (start)
Noise to Voronoi wiring (overview)
Noise to Voronoi wiring (overview)

Tune scale until the patches read clearly.

Voronoi smoothness driven by Noise color
Voronoi smoothness driven by Noise color

Adjust scale and confirm the breakup behaves as intended.

Scale adjustment result
Scale adjustment result

Add a ColorRamp to control how painterly the breakup reads.

ColorRamp inserted for breakup control
ColorRamp inserted for breakup control
ColorRamp tuning and output check
ColorRamp tuning and output check

Combine toon + watercolor (material output)

Add the nodes needed to merge the toon base with the watercolor breakup, then route the final result to Material Output.

Toon plus watercolor combined node graph (pass 1)
Toon plus watercolor combined node graph (pass 1)

After the first merge, the work is mostly strength balancing and keeping forms readable.

Toon plus watercolor combined node graph (refined)
Toon plus watercolor combined node graph (refined)

Line art

Line art uses two passes: inverted hull and Grease Pencil.

IV. Inverted hull method

The inverted hull method creates outlines by duplicating a mesh, pushing it outward slightly, and flipping faces so it renders inside-out.

First part: basic outline

Outline pass 1 uses an inverted hull setup in Geometry Nodes. The core idea is to extrude a shell, flip faces, join it back to the original, and assign an outline material.

Starting point and follow-along setup
Starting point and follow-along setup

Open Geometry Nodes and add a Geometry Nodes modifier.

Geometry Nodes editor opened
Geometry Nodes editor opened

Build the base node chain.

Geometry Nodes modifier added (start)
Geometry Nodes modifier added (start)
Rename GN
Rename GN
Rename GN to "outlines" for clear organization
Rename GN to "outlines" for clear organization

Add Extrude Mesh. Disable Individual. Keep the offset small.

Extrude Mesh node added (Individual unchecked)
Extrude Mesh node added (Individual unchecked)
Extrude settings adjusted
Extrude settings adjusted

Set Offset to a small value (example shown: 0.01).

Result preview for desired extrude offset value
Result preview for desired extrude offset value

Add Flip Faces, then Join Geometry. Join the outline shell with the original geometry.

Flip Faces plus Join Geometry nodes added
Flip Faces plus Join Geometry nodes added
Join wiring including Group Input
Join wiring including Group Input
GN graph state after join
GN graph state after join

Add Set Material for the outline.

Set Material node added
Set Material node added

Create the outline material and test it on a simple object.

Outline material test on cube
Outline material test on cube

Add the Geometry Backfacing node needed for the outline behavior.

Geometry node addition
Geometry node addition

This setup is used to keep the outline behaving correctly in the intended renders.

Add the additional nodes shown, then set up a View Layer AOV with a matching name.

Additional outline nodes added
Additional outline nodes added
View Layer: AOV created and named
View Layer: AOV created and named

Basic outline setup result.

Basic outline result and overview
Basic outline result and overview

Second part: outline enhancement

Add the enhancement node group shown. Vector Math is set to Subtract with values at 0.5 to recenter the effect.

Outline enhancement node group added
Outline enhancement node group added

At first the displacement is too strong. This is expected before scaling it down.

Over-strong displacement result (before tuning)
Over-strong displacement result (before tuning)

Add a Vector Math node set to Multiply and reduce values (example shown: 0.1).

Multiply node added and tuned down
Multiply node added and tuned down

This becomes the displacement group.

Displacement group finalized
Displacement group finalized

Result check after tuning.

Outline enhancement result (tuned)
Outline enhancement result (tuned)

Make the node group more user-friendly

Expose key controls so the Geometry Nodes editor is not required for routine tweaks. The goal is quick adjustment from the modifier UI.

User-facing controls (first modifier UI pass)
User-facing controls (first modifier UI pass)

Add a Math node set to Divide and use it to drive offset scale.

Math Divide node driving offset scale
Math Divide node driving offset scale

Set input defaults in the N-panel (example shown: default 5.5, min 0).

Group input defaults in N-panel
Group input defaults in N-panel

Repeat for the other values.

More parameters exposed to the UI
More parameters exposed to the UI

Full setup check.

Full node group setup overview
Full node group setup overview
Full node graph view
Full node graph view

Add a Switch so the outline can be toggled on and off.

Switch node added for outline toggle
Switch node added for outline toggle

V. Grease Pencil

Outline pass 2 uses Grease Pencil for drawn lines, then converts through Geometry Nodes so it fits the same outline and AOV pipeline.

Add a Grease Pencil object. In Edit Mode, clear it. Switch to Draw Mode and draw strokes on the surface.

Grease Pencil setup and draw mode
Grease Pencil setup and draw mode

Converting Grease Pencil to mesh (Geometry Nodes)

Select the Grease Pencil object and add a Geometry Nodes modifier.

Geometry Nodes modifier added to Grease Pencil object
Geometry Nodes modifier added to Grease Pencil object

Name the group (example shown: gp to mesh).

Node group named gp to mesh
Node group named gp to mesh

Add Grease Pencil to Curves. Disable Layers as Instances.

Grease Pencil to Curves node added (Layers as Instances unchecked)
Grease Pencil to Curves node added (Layers as Instances unchecked)

Add the remaining nodes shown until the group matches the reference.

Full gp-to-mesh node group assembled
Full gp-to-mesh node group assembled

Create a dummy cube and set up the AOV output again. Name the AOV exactly: outline.

AOV output named outline for GP line pass
AOV output named outline for GP line pass

Do the same setup on the Grease Pencil side.

GP setup: matching outline AOV pipeline
GP setup: matching outline AOV pipeline

Result check.

Grease Pencil outline result (pass 1)
Grease Pencil outline result (pass 1)

Final check on the combined look at this stage.

Combined outline passes
Combined outline passes

VI. Compositing: tying everything together

Enable the required passes first, then build the compositor stack.

In View Layer properties, enable Combined and Z.

View Layer passes: Combined + Z enabled

Enable Cryptomatte (Object and Material).

Cryptomatte enabled (Object + Material)
Cryptomatte enabled (Object + Material)

Open the compositor and enable Use Nodes.

Compositor opened with Use Nodes enabled
Compositor opened with Use Nodes enabled

Add an RGB Curves node as a quick sanity check for live viewport updates.

RGB Curves node added to compositor
RGB Curves node added to compositor

Enable viewport compositing (Always) for real-time tuning.

Viewport compositing set to Always
Viewport compositing set to Always

Live compositor check.

Viewport showing compositor affecting the render
Viewport showing compositor affecting the render
Compositor node graph state overview
Compositor node graph state overview

Replace RGB Curves with a Soften node. Set type to Diamond Sharpen.

Soften node set to Diamond Sharpen
Soften node set to Diamond Sharpen

Result check after sharpening.

Sharpened result check
Sharpened result check

Add a Glare node between them.

Glare node added to compositor chain
Glare node added to compositor chain

Add two Kuwahara nodes and a Mix node between them.

Two Kuwahara nodes plus Mix node in compositor
Two Kuwahara nodes plus Mix node in compositor

Overview of setup.

Node graph overview
Node graph overview

Takeaways

  • Lock render and color settings first.
  • Keep the toon base clean. Control watercolor breakup with a ramp.
  • Inverted hull gives stable contours. Grease Pencil adds manual control.
  • The compositor is where the look starts to read as paper and paint.