It teaches itself to paint
A single Substance Designer graph takes any picture and trains brush strokes on it. No Python touches training. It runs in Designer and outputs colour, height, roughness and normal maps, which Blender renders as thick, glossy oil paint.
Any picture in
The graph is the whole program. Give it a target image and it learns that picture as brush strokes, inside Designer, with nothing running beside it.
Swapping the picture takes no rebuild. The same graph trained on the Vermeer also takes the Great Wave. The wave is harder: it reaches 23.15 dB and reads as paint, but it loses print detail.

Fix the worst error
Strokes start evenly spread and grey. At step 40, the fine strokes move to wherever the graph's own error is worst. Nothing outside the graph tells them where to go.
That gives you coarse and fine at once: thick strokes in the body, tight ones on the face. An earlier reading said 4,096 strokes flattened the surface. That turned out to be a bug in the map export, which clipped the height. With the bug fixed, the trade-off went away.

It has thickness
The output is a surface, so it can be lit. Height and roughness carry the ridges and the wet sheen, which is why this reads as oil and not as a filter.


Every slider is live
Thickness, bristle depth, ridge, colour streak, gloss, gloss breakup, top-stroke dominance, canvas and reveal all change instantly with no retraining.
Target image, seed, stroke size, dryness, bristle scale and face focus need a retrain.

