First Rain
A river valley in layered watercolour, palest and wettest first, each ridge darker and drier.
How it is made
paintkit's pkwash over a pkpaper ground, painted the way a watercolour is: the palest, wettest washes first, then five receding ridges, each darker, drier and tighter than the one behind it. Every colour is composited by the renderer over the paint already down rather than guessed in advance. The rain veil is a wash with its edge pooling turned off, and the reeds are pkribbon drawn under the same wash.
Details
- Category
- Painting
- Tags
- landscape
- Libraries
- artkit, paintkit
- Added
- 2026-08-28
- Built in
- issue #47
- Page size
- 760 × 560 points
Source
View source the whole program in a scrolling window, or read gallery/first_rain.ps on GitHub. To draw it yourself, from a checkout of the repository:
pscat --page 760x560 gallery/first_rain.ps
The first 40 of 231 lines of the source
%!PS-Adobe-3.0
%%Title: First Rain — a river valley in layered watercolor washes
%%Creator: pscat — issue #47, paintkit's watercolor medium
%%BoundingBox: 0 0 760 560
%%EndComments
% Everything you can see here except the reeds is one primitive:
% paintkit's `pkwash` (issue #47), filling a path as a translucent
% wash whose boundary wanders off the geometry it was given. The
% picture is built the way a watercolor actually is -- palest and
% wettest first, each later wash darker, drier and tighter, laid over
% paint that is already down and showing through it.
%
% That showing-through is the whole point, and it is why this piece
% needs pscat's `setalpha` rather than the nested-clip trick issue
% #46's spike measured as the pure-PostScript ceiling: five receding
% ridges over a three-band sky is far past the handful of regions that
% technique can express, and every ridge's color here comes from the
% renderer compositing it over whatever it overlaps, not from a blend
% color guessed in advance. Under an interpreter without `setalpha`
% (real Ghostscript) the whole valley falls back to flat opaque shapes
% -- recognizable, but the depth is gone. See docs/dev/design/WATERCOLOR.md.
%
% pscat --page 760x560 --speed 500 gallery/first_rain.ps
(lib/artkit.ps) run
(lib/paintkit.ps) run
47 srand
/W 760 def
/H 560 def
% The painted block sits inside the sheet, so the paper -- its tone,
% its grain, its fibers -- stays visible around it and the washes' own
% wet edges deckle into that margin instead of running off the page.
/M 36 def
/L M 6 sub def % block left/bottom
/R W M sub 6 add def % block right
/T H M sub 6 add def % block top