Natural Media Layers

A Natural Media layer turns a normal pixel layer into a live fluid-paint simulation. Instead of just stamping color, the brush deposits pigment and water onto the surface, and the layer then simulates how that wet paint flows, diffuses, pools at drying edges and settles into the paper — the way real watercolor (or oil) behaves after it leaves the brush.

Where it lives. A Natural Media layer is a NaturalMedia node wrapping a plain Pixels node. You paint into the Pixels node; the NaturalMedia node owns the simulation maps and composites the result. Create one with Layer → New → Natural Media Layer, then pick a Watercolor or Bristle brush and paint.

The media

Every brush feeds the same simulation; what it deposits is set by the brush's Natural Media settings (modeled on Rebelle's Water / Loading panel), independent of the tip type. The medium is a preset of these values, not a brush class.

Water

Water deposited per stroke (dynamics-capable — map to pressure). 0% = dry brush: pigment goes down but nothing flows. 100% = dripping wet: paint runs, blooms outward, darkens at drying edges and granulates into the paper.

Body

Paint thickness (impasto height) deposited per stroke (dynamics-capable). 0% = a perfectly flat, matte wash — the watercolor look. 100% = thick paint that is lit with a directional light and blocks flow — the oil look.

Ridge

The deposited paint's cross-section: 0% = a smooth dome following the tip profile; 100% = paint pushed out to the stroke's edges, like a palette knife or stiff bristles squeezing paint aside.

Typical presets: watercolor = high Water, zero Body; oil = low Water, high Body; gouache = moderate both. Any tip — dab, strip ribbon, or bristle — can paint any of them.

Paper & granulation

Two optional textures shape the result. Connect them to the NaturalMedia node's paper and granulation inputs.

Tilt & gravity

Set a gravity angle and strength to tilt the virtual canvas. Wet washes run downhill, pool, and leave runs and backruns — exactly like working on an easel.

Simulation controls

Select the NaturalMedia node to expose the simulation parameters:

ControlWhat it does
Diffusion RateHow fast wet paint spreads laterally across the surface.
AbsorbencyHow quickly active water settles into the paper. High = washes set fast; low = water flows longer.
Re-WetHow easily already-dried pigment re-dissolves when fresh water touches it (0 = locked, 1 = lifts easily).
Edge DarkenPigment migration toward the drying front — the dark outlines (“blooms”) characteristic of watercolor washes.
Advect StrengthHow strongly flowing water carries pigment with it.
Gravity Angle / StrengthDirection and force of canvas tilt.
Paper InfluenceHow much the paper texture steers flow and absorption.
Granulation Strength / ContrastIntensity and sharpness of pigment granulation.
Light (angle / elevation), Surface Scale, GlossImpasto lighting for the height (oil) — direction, exaggeration, and specular sharpness.

How it works (technical)

The engine follows the established fluid-paint lineage from computer-graphics research (see References). It splits cleanly into deposit (the brush) and simulate + composite (the layer), mirroring the structure of Curtis et al.'s canonical 1997 watercolor model.[1]

Pipeline

  1. Deposit. The brush engine builds a continuous triangle-strip ribbon from the stroke and draws pigment (RGBA, premultiplied by density), water and — for oil — height into the layer's simulation maps.
  2. Simulate. A live timer (~30 fps) advances the wet paint through four GPU passes, ping-ponging full-canvas float textures.
  3. Composite. The layer renders the current pigment map with the suspended pigment riding over it (and, for oil, lights the result from the height map) to the screen.

Simulation maps

MapFormatHolds
pigment (deposited)RGBA32FRGB = pigment color (premultiplied by density), A = density. Pigment settled on the paper — the layer's pixels.
suspendedRGBA16FPigment riding the water (Curtis's two-compartment model[1]). Runtime-only — never saved; re-wetting reconstructs it from pixels + wetness.
wetRG32FR = total water, G = absorbed fraction. Active water = R·(1−G).
velocityRG32FFlow direction, updated from wetness-pressure gradients + gravity + paper.
heightR32FPaint thickness (impasto, the brush's Body). Deposit-only — the sim reads it (lighting, water runs off it) but never rewrites it.

Simulation passes

PassDoes
VelocityUpdates flow from the wetness pressure gradient (high→low), gravity, paper capillary slope (water flows peak→valley) and paint-height slope (water runs off raised paint).
SuspendTransport of the suspended pigment: semi-Lagrangian backward advection along the flow,[3] light Laplacian spreading and edge-darkening — plus the lift half of the pigment exchange.
DepositThe settle half of the exchange (suspension drains onto the paper as the water sinks in) and granulation. The deposited map never moves laterally — brush strokes and this exchange are the only things that change it.
DryActive water settles into the paper (absorbency), can re-wet, diffuses, and redistributes under gravity.

The pigment exchange follows Curtis et al.'s TransferPigment:[1] per tick, deposited pigment lifts into suspension where there is active water (δup = d·ρ/ω — a pigment's staining power ω is what protects a dried glaze), and suspended pigment settles onto the paper (δdown = g·ρ), both clamped by the receiving side's headroom. Because all lateral motion lives in the suspension, edge darkening, re-wet lifting and glaze protection emerge from the exchange rather than being painted-in effects: a fresh flood mobilizes pigment quickly (lift ∝ wet²), a gentle damp glaze barely disturbs the wash beneath, and what you see while painting is the suspension compositing over the settled pixels until the wash dries.

Height is deliberately not simulated: the height↔flow coupling is one-way (height shapes the flow; the flow never rewrites height). Advecting height with the water velocity was tried and removed — semi-Lagrangian gather is non-conservative and its bilinear resampling flattens sharp impasto within seconds, and a wet wash flowing over dried structure would erode it. Moving thick paint is a smudge / palette-knife operation, not a fluid one. Depositing is likewise a reshape, not an add: each stroke lerps the surface toward its own profile (Body × dome/Ridge) weighted by its coverage, so fresh ridges always imprint — there is no height ceiling that strokes stop registering against, and a low-Body stroke flattens thick paint like a knife.

The field model — what drives flow vs. lighting

The design separates a static paper substrate from a dynamic paint field, the pattern established by Curtis et al. (one paper height field both perturbs flow and sets absorbency).[1] The correct, physically-grounded wiring is:

FieldNatureDrives flow?Drives lighting?Drives color?
Paper (tooth)static substrateYes — capillary, absorption, streaksShould — paper grain catches lightvia granulation (pigment in valleys)
Paint heightdeposit-only (Body)Yes — thick paint is terrainYes — normals → specular impasto
Wetness / velocitydynamicYes — pressure + advection
Pigmentdynamiccarried by flowYes — the visible color
Design rule (from the literature). Watercolor is matte: it deposits pigment and water only and is rendered by translucency over white paper — it must not add impasto height or specular relief.[1] A paint-volume height field that yields surface normals for directional diffuse + specular lighting is the oil approach of the WetBrush system.[4] In this engine that distinction is the brush's Body setting (watercolor presets use Body = 0), not a property of the tip.

What each tip deposits

All three tips deposit all three quantities; Water and Body scale the water and height amounts (Body = 0 skips the height deposit entirely — matte).

Brush tipPigmentWaterHeight
Strip (continuous ribbon)✓ × Water✓ × Body, profile × Ridge
Bristle (per-hair ribbons)✓ × Water✓ × Body, profile × Ridge
Dab (MyPaint stamps)✓ × Water✓ × Body, profile × Ridge

Pigment optics

The physically-correct color model for watercolor is not RGB blending. Real paint gets its color from pigments, whose mixing follows Kubelka–Munk turbid-media theory (translucent layers of absorption/scattering over a white substrate) — which is why blue + yellow makes green, not gray, and why thin washes glow.[5] Curtis et al. composite the glazes optically with K–M rather than by physical mixing.[1] Zhao & Berns show the full translucent two-region K–M model statistically out-predicts the opaque simplification across real artist glazes.[6] A practical, RGB-in/RGB-out realization is Mixbox.[5]

Current implementation vs. target. Today the engine deposits pigment with additive premultiplied RGB and lights everything with the impasto (Sobel-normal) shader — a simplification. The research-backed target is: Kubelka–Munk translucent compositing for watercolor color (matte, luminous, granulating), with the specular height-lighting reserved for the oil path, and the paper substrate contributing to both flow and lighting. These are tracked improvements, documented here so the model is explicit.

Reference engines

How comparable tools are documented to behave. Internals are rarely fully public and features change across releases — each row links the relevant official documentation.

EngineWatercolor modelOil / impasto lightingPaper substrate
Corel Painter “Real Watercolor” fluid sim with paper absorption[7] Separate Impasto depth channel with directional lighting + shine[8] Paper grain as a distinct substrate that grainy brushes catch on
Escape Motions Rebelle “Real Watercolor” — water, absorbency, diffusion, tilt & gravity, granulation[9] “Real Oil” paint volume, lit via the Visual / light settings Paper with absorbency & tooth, separate from paint volume
Ambient Design ArtRage Thin wet media on a textured canvas Real paint thickness, lit by a single canvas light over the combined surface[10] Canvas grain feeds both texture and lighting
Adobe Fresco “Live Watercolor” — pigment blooms/flows on wet canvas[11] “Live Oils” build real paint volume that smears Paper interaction; substrate distinct from paint body

Note: the academic claims below are verified against primary sources; the engine-comparison rows summarize each vendor's official documentation and may vary by version.

References

  1. Curtis, Anderson, Seims, Fleischer, Salesin. “Computer-Generated Watercolor.” SIGGRAPH 1997, pp. 421–430. DOI 10.1145/258734.258896. project page + PDF · ACM. The three-layer model (shallow-water / pigment-deposition / capillary), paper as a height + fluid-capacity field, and Kubelka–Munk optical compositing.
  2. Stam, Jos. “Stable Fluids.” SIGGRAPH 1999, pp. 121–128. DOI 10.1145/311535.311548. josstam.com. Unconditionally-stable semi-Lagrangian advection — the basis of the real-time flow solver.
  3. Chu, Tai. “MoXi: Real-Time Ink Dispersion in Absorbent Paper.” SIGGRAPH 2005, ACM TOG 24(3):504–511. DOI 10.1145/1073204.1073221. ACM. Lattice-Boltzmann percolation for ink in porous paper.
  4. Chen, Kim, Ito, Wang. “Wetbrush: GPU-Based 3D Painting Simulation at the Bristle Level.” SIGGRAPH Asia 2015, ACM TOG 34(6). DOI 10.1145/2816795.2818066. author page · NVIDIA overview. Bristle-level oil as a 3D paint volume (hybrid Eulerian–Lagrangian, CUDA) → height → specular lighting.
  5. Sochorová, Jamriška. “Practical Pigment Mixing for Digital Painting” (Mixbox). SIGGRAPH Asia 2021, ACM TOG 40(6):234. DOI 10.1145/3478513.3480549. mixbox · CTU/DCGI. Kubelka–Munk-derived pigment mixing with an RGB-in/RGB-out interface.
  6. Zhao, Berns. “Predicting the spectral reflectance factor of translucent paints using Kubelka–Munk turbid media theory.” Color Research & Application 34(6):417–431, 2009. DOI 10.1002/col.20525. Wiley. Validates the translucent two-region K–M model for real artist glazes.
  7. Lu, Barnes, DiVerdi, Finkelstein. “RealBrush: Painting with Examples of Physical Media.” SIGGRAPH 2013. Princeton GFX. The data-driven alternative — synthesizes strokes from scans, without physical simulation.
  8. Corel Painter — Real Watercolor controls (official docs).
  9. Corel Painter — Impasto lighting and depth (official docs).
  10. Escape Motions — Rebelle 8 manual · Visual settings (official docs).
  11. Ambient Design — ArtRage: The Canvas (official docs).
  12. Adobe — Fresco Live Brushes (watercolor & oil) (official docs).

Note. The academic references are verified against primary sources (authors' institution pages, ACM, Crossref). Kubelka–Munk theory dates to Kubelka & Munk (1931); the implementations above are K–M-derived. Engine-comparison rows summarize each vendor's official documentation and may change across product versions.