The mixing well works, and it feels like a settings screen. Four ways to make it feel like paint.
Where this landed. The dish never shipped. It worked, and on a phone it took room from the painting for something the paper already does, so mixing happens on the sheet: two wet colours that meet make the colour the pigments would make.
The pigments sit in the dish as dabs. You drag through them.
No ratio control at all. Two dabs go in and you smear them together with your finger; how mixed it is, is how much you stirred. Stop early and it stays streaky, and the brush picks up whatever is under the point where you lifted, so an under-stirred dish loads a two-tone brush.
Drag inside the dish to stir. Lift where you want to load the brush.
Sampled across the brush's contact patch, front to back, so a half-stirred dish gives a stroke that changes colour along its length. A single mix ratio cannot do that, and it is a large part of why hand-mixed paint looks hand-mixed.
What it costs: a small 44×44 field over the well holding ratio and amount, advected along the drag. No fluid solve. The one engine change is that a stroke's mix becomes per-point instead of per-stroke, and the batch already carries per-point data (it was given per-point radius for the piping fix), so the shape is already there.
No continuous control anywhere. You add what you add.
Tapping a pigment drops a dab into the dish; tapping again drops another. Water is a tap too. You do not set the ratio. It follows from putting in three of one and one of the other, and to change it you add more of something. Nothing to learn and nothing to discover; the whole state is countable at a glance.
The weakness is resolution. Four dabs give you fifths, and getting a subtle warm grey means tapping eleven times. It also cannot do what 攪 does without trying: every dish here is evenly mixed, because there is no stirring to leave unfinished.
What it costs: almost nothing, just a count per pigment. It is the smallest change on this page and makes the dish the easiest to read.
The well runs the same engine, at small scale.
This is actual mixing, not a picture of it. The well is a second, tiny instance of the paper simulation: pigment dropped in blooms and spreads with the same physics, meets other pigment and mixes through the same spectral ramp, dries if you leave it. You load the brush by touching it anywhere, and what you get is what is there.
It is the most beautiful answer and the only one where the dish and the paper cannot disagree, because they are the same code. It is also the only one that adds a second live simulation to a loop already sensitive enough that idle frames had to be gated off.
What it costs: a second field, a second ping-pong pair and a second set of surfaces. At 44×44 that is under 1% of the main field's pixels, but it is a second loop, and the last two regressions on this app were both about frame cost. It would need measuring on device before anything else.
Half of this already exists and is invisible.
The engine already carries pigment between strokes. There is a carried load that picks colour off the sheet, decays as it goes down, and survives from one stroke to the next. Picking a new pigment counts as the dip that rinses it out. None of that is visible, so it reads as inconsistency rather than as a brush.
Show the brush: what is on it, how loaded it is, how dirty. Make rinsing something you do, a dip in the water pot, rather than a side effect of tapping a colour. Just making the existing behaviour visible covers most of what "human" means here.
What it costs: nothing in the engine. It is display plus one explicit rinse gesture. This is orthogonal to the other three and improves all of them.
| Direction | Gains | Costs |
|---|---|---|
| 攪 Stir | A real gesture; streaky loads; two-tone strokes | A small field, and per-point mix in the batch |
| 滴 Dabs | Total legibility; nothing to learn | Coarse ratios; no incomplete mixing |
| 皿 Dish as sheet | Dish and paper cannot disagree | A second live loop, on a frame budget already tight |
| 筆 Dirty brush | Makes existing physics felt | None, just display and one gesture |
筆 first, then 攪. The dirty brush is free, it is orthogonal, and it fixes the root of the complaint: the app already simulates a brush and never lets you see it. Then stirring, because it is the one direction that makes the dish produce something a slider cannot represent at all: a load that is not one colour.
皿 may be the best answer eventually, but it should not come next. It should wait behind whatever is done about frame cost, since a second simulation is exactly the kind of change that has cost this app its responsiveness twice.