Gallery › Painting

First Rain

A river valley in layered watercolour, palest and wettest first, each ridge darker and drier.

First Rain, a river valley in layered watercolour washes with five receding ridges and a veil of rain
Click the picture for the full-size render.

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