Painting a Fake Starry Night in Unity.
by Vicente C.
Published |
17
Share
Counterfeit Gallery lets you paint a copy of The Starry Night. Zsombor Rózsa shows how the wet colors blend and how the game scores your work.
In Counterfeit Gallery, you copy famous paintings with a mouse, finger or stylus,  then hang your copies in your gallery. Developer Zsombor Rózsa wanted the oil colors to mix like paint. He also needed a way to grade your copy without punishing every slightly misplaced brushstroke.
Posts from the unity3d
community on Reddit
For the oil paint, Zsombor uses Kubelka–Munk mixing per channel instead of simply blending RGB values. That gives blue and yellow a more believable green when they meet on the canvas.

New strokes pick up and blend with paint already on the canvas until it dries. A relief shader gives the marks their raised, thick-paint look.
When a player finishes, an appraiser checks composition, color, shape and detail. Both paintings are reduced to 128×128 first, so the result doesn't depend on the device's screen resolution.

A raw pixel comparison would punish a decent copy that's shifted a few pixels to one side. The shape check tries a few nearby alignments instead.

Zsombor originally averaged the four scores. That let a grayscale copy score higher than a convincing colored one, since three checks rely mostly on brightness. He changed the total to a weighted geometric mean, so weak color pulls it down.

To see whether the scores felt fair, Zsombor tested 16 kinds of copy across 57 paintings, including blurred and shifted versions, scribbles and flat fills. He gave each kind an expected score and ranked them by eye, then compared both with the game's results.

He also checked what happened as strokes got bigger. A Starry Night copy made with 8-pixel blocks scored 0.767, but the 9-pixel version dropped to 0.341. The two looked almost the same.
The regular block pattern interfered with the grid used to measure detail, making that part of the score drop to zero. Zsombor added a slight blur to the edge maps before comparing them. In that build, the 9-pixel score rose to 0.701.

Zsombor has kept tuning the scorer since then. The current benchmark has a mean error of 0.0369 against his expected scores. It still puts four pairs of attempts in a different order from his own ranking.

Interested in making shader effects in Unity?
Jettelly wishes you success in your professional career! Did you find an error? No worries! Write to us at [email protected], and we'll fix it!

Subscribe to our newsletter to stay up to date with our latest offers

© 2026 Jettelly Inc. All rights reserved. Made with ❤️ in Toronto, Canada