Status
Open source
Period
September – October 2026
Stack
JavaScript · WebGL2 · GLSL · Canvas
Quality comes from seeing, composing, material and self-critique — in that order. Motifs come last.
The skill never reuses the reference scene. It copies only the generic material core and writes a new pipeline for every subject.
1Works
Four paintings made with the skill — four different assemblies of the same kit, never one scene reused. Each one runs live in the browser and paints itself in when it comes into view.
Scroll the wall sideways →
月满中秋Full moon, mid-autumn
Landscape · 16:9 · paper
Landscape, 16:9. Mountains computed in a shader and painted over with brushwork, a river that reflects the painting, a plum branch, geese and lamplight. Paints itself in from blank paper.
踏歌Singing and dancing, after Ma Yuan
Hanging scroll · silk
Hanging scroll on aged silk, after a Song master. Axe-cut peaks built from wet strokes, mist that the trees rise out of, a weeping willow grown as one tree. Paints itself in.
雨市Rain market
Vertical scroll · paper
Vertical scroll, a city instead of mountains. A diagonal street of umbrellas between wet roofs, the void as a shape, rain and steam as the only motion — the skill’s first subject far from the reference.
清风Bamboo in the breeze
Album leaf · paper
Album leaf — the smallest complete build of the kit. Culms in one dry stroke per segment, joints, leaves as single pressed strokes; mostly empty paper.
2Problem
Asked for an ink painting, a model reaches for the same picture every time: mountains, a moon, water. Given a worked example, it copies the example — the first cause of template pictures.
When it does draw something new, the computer shows through: strokes of flat width, ink that sits in beads, visible stitching between marks, blur applied evenly everywhere, a grey mush where the tones should separate — and shapes that read as something else: a tree that is a plank, a knot that is an eye.
The style is not a set of motifs (mountains, moon, pavilion). It is a way of seeing plus a material.references/seeing.md
3How it works

aSee and compose before drawing
Five questions for every subject: its spirit (神), what is solid and what stays paper (实 / 虚), the family of line, the depth planes, the format. Then the canon: one host and its guests, empty paper as a shape (留白), hiding and revealing (藏露), one or two red accents.
Nothing is drawn until the composition passes as flat tones — the tonal sketch on the left is the gate the Ma Yuan scroll had to pass. For an unfamiliar subject the skill studies real paintings first and crops the master’s motif at 3× before building it.

bPaper and water
Every mark writes into a wetness map; the ink then spreads along the paper fibres over 20–36 diffusion steps on half-float textures, with darkened edges, granulation and a soft halo. Silk gets a different sheet from xuan paper: tighter edges, a woven texture, the tone of age.
Everything that should look painted goes through this pass — a shape laid on top afterwards reads as a vector cut-out.

cA brush, not a fill
Tone is built the way a painter builds it: many faint, very wet strokes laid side by side that the diffusion merges — never a blur. Dry brush is a hairy brush: dozens of bristles, each with its own ink load, running dry into long streaks of flying white (飞白), held upright or on its side (中锋 / 侧锋).
Wide strokes on the crisp ink layer always read digital (a plank, a rope, stacked boards); mass goes into the wet layer, the ink layer keeps the narrow strokes.

dStructure before texture
“Unnatural” almost always means wrong construction, not wrong brushwork. Trees grow as one graph: the trunk flows into the main limb, thickness falls continuously so the limbs carry their share of the trunk (Leonardo’s rule), branches bend under gravity by their thickness, a collar at every joint, roots grow into the ground — and the whole tree is filled as one body of ink.
Then the species decides: a willow is a bare leaning trunk with whips and curtains of strands, not an oak. This took a dozen failed constructions to learn; each is now a rule.




eThe reveal
Each painting appears on blank paper. Whole states of the picture — bare paper, washes only, finished — each pass through the full material pipeline; big pools bloom along a smooth field with a damp band running ahead of each front, the tone arrives pale and deepens, every ink stroke travels from its entry to its exit, and the inscription and seal come strictly last. Then the quiet motion starts: water, mist, rain, steam, geese.
Built first for the rain market, then made a kit module; every visible bug on the way (white stripes, shimmering sand, seams along the front) is written down.
| Reads as | Cause | Fix |
|---|---|---|
| a plank | a filled shape with dashes on top | build the mass wet, strokes on top |
| an eye | a ring with a dot for a knot | a slanting dark scar |
| a slingshot | a bare fork ending in two points | end limbs in thin shoots |
| bamboo nodes | texture or swelling at every joint | plain thin limbs, merge only at forks |
| a broom on a stick | branches only at the top | branches along the whole trunk |
| a dome | a depth mark sticking out past an object | write depth as the exact shape |
fCriticise at zoom
At least two rounds of critique, top-down: composition, tone, structure, the tells of a computer, the marks, the motion — at thumbnail size, blurred, side by side with the master, and zoomed in. One test catches more than any other: what else could this shape be read as?
Every failure from four paintings became a rule — 103 of them in ten sections, with a whole section on joints, the most frequent mistake.
Paper is the light. Sky, water, snow, white walls, mist and lit sides are unpainted paper. Nothing glows.SKILL.md
4Results
Suggest, don’t enumerate. 40 tile strokes read as a roof; 400 read as a texture map.SKILL.md
5Limitations
- The four paintings were made with close feedback; the three test prompts that would show whether the skill carries over to any subject on its own are still not run.
- Trees were the hardest motif by far: a dozen failed constructions (a plank, a cartoon flower, a slingshot, a rope, a broom on a stick) before the one-graph, one-body approach.
- No photographic detail, cast shadows or full colour, by design. Faces, hands and anatomy are weak; figures stay small and summarised.
- Needs WebGL2 with float render targets; older and some mobile GPUs cannot run it.
Sources and prior work
- The skill — workflow and principles
- Seeing and translating a subject
- Composition canon
- Materials → shaders
- Brush grammar
- Critique protocol
- Trees — structure, species, one body of ink
- The reveal and quiet motion
- Pitfalls — 103 rules from real failures
- Fibre diffusion shader
- Tree growth module · reveal shader
- Prior work the skill builds on: MoXi (Chu & Tai), Curtis et al. on computer-generated watercolour, Bousseau et al. on watercolour rendering, and Lingdong Huang’s shan-shui-inf
- Marius Ballot, procedural data trees — the continuous-thickness rule; the Mustard Seed Garden Manual for branch structure (出枝, 蟹爪, 鹿角)