
Night Crossing
The fourth state of light, and the one that could most easily have been made by cheating. A night piece wants a black ground, and a black ground would have ended the series: every other piece earns its value from how densely it is drawn, and one that arrived at darkness by starting dark would not belong with them. The frame is upright and the eye is low, close enough to the surface that the water starts just beneath the viewer and runs the whole height of the picture to a small horizon near the top. Almost nothing here is sky. So the ground stays the same pale paper as the others and the darkness is built from ink. The hatch runs at roughly half again the opacity of the daylight pieces and the cross-hatch reaches further up the frame, which is why the near water goes almost black while the marks are still legible in it. The ochre is at its narrowest in the series: one struck band where a light on the far shore reaches the water.
Technique
the shared Tidewater stack on a portrait frame at horizon 0.20. Sky, veil and water are pulled down in value while the paper ground beneath them is untouched, so the composite darkens without a black fill anywhere in the stack. \u26a0\ufe0f The water was tinted well below the horizon's value at first, and because terrain:water draws a hard top edge at its waterline that step ruled a visible line across the full width; it now sits just under the horizon's own value and the darkness it used to carry was moved into depth darkening and the hatch \u2014 which is what the piece argues for anyway. Every hatch pass gains opacity, the cross-hatch gains lines and reach, the grain rises, and the closing wash swaps its lighter slate for the palette's deepest tone.
Seeds
The same system at three seeds. What moves is the surface and the marks describing it; the composition, the palette and the depth rule stay put.
58
1744
6603
Layer stack
In paint order. Every mark in the image comes from these; there is no handwritten drawing code.
textures:paperPaper Groundterrain:skySkyatmosphere:cloudsCirrostratus Veilterrain:waterFlatsatmosphere:mistSea Fretpainting:flow-linesHatch, Farpainting:flow-linesHatch, Midpainting:flow-linesHatch, Nearpainting:flow-linesCross-hatchpainting:mark-fieldGrainpainting:watercolorSlate Wash
Source
The complete composition. Open it in GenArt to re-render, re-seed, or take it apart.
{
"genart": "1.2",
"id": "night-crossing",
"title": "Night Crossing",
"created": "2026-09-10T00:00:00Z",
"modified": "2026-09-10T20:23:35.633Z",
"renderer": {
"type": "canvas2d",
"version": "1.x"
},
"canvas": {
"width": 900,
"height": 1400
},
"parameters": [],
"colors": [],
"state": {
"seed": 58,
"params": {},
"colorPalette": [
"#1f2933",
"#3e4c59",
"#7b8794",
"#cbd2d9",
"#e8e6df",
"#b08968"
]
},
"algorithm": "// Layers-only composition. canvas2d requires a sketch entry point, so\n// this clears to the paper ground and hands the frame to the compositor.\nfunction sketch(ctx, state) {\n ctx.fillStyle = state.colorPalette[4];\n ctx.fillRect(0, 0, state.canvas.width, state.canvas.height);\n}\n",
"layers": [
{
"id": "ground",
"type": "textures:paper",
"name": "Paper Ground",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "cold-press",
"roughness": -1,
"color": "#e8e6df",
"seed": 58
}
},
{
"id": "sky",
"type": "terrain:sky",
"name": "Sky",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "noon",
"zenithColor": "#6f8091",
"horizonColor": "#c3ccd4",
"hazeColor": "#b08968",
"hazeIntensity": 0.2,
"hazePosition": 1,
"hazeWidth": 0.09,
"horizonLine": 0.2,
"depthLane": "sky"
}
},
{
"id": "veil",
"type": "atmosphere:clouds",
"name": "Cirrostratus Veil",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "cirrostratus-veil",
"seed": 58,
"cloudType": "cirrostratus",
"algorithm": "streak",
"coverage": 0.55,
"altitude": 0.09,
"scale": 2,
"cloudCount": 9,
"edgeComplexity": 0.3,
"turbulence": 0.1,
"cloudColor": "#c8d2da",
"shadowColor": "#8e9aa6",
"highlightColor": "#f4f1ea",
"opacity": 0.4,
"sunAngle": 150,
"sunElevation": 0.22,
"depthSlot": 1
}
},
{
"id": "water",
"type": "terrain:water",
"name": "Flats",
"visible": true,
"locked": false,
"opacity": 0.85,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "still-lake",
"seed": 58,
"waterlinePosition": 0.2,
"rippleFrequency": 3,
"rippleAmplitude": 0.4,
"rippleMode": "noise",
"waterColor": "#b4bfc9",
"depthDarkening": 0.64,
"shimmerIntensity": 0.12,
"depthLane": "midground"
}
},
{
"id": "fret",
"type": "atmosphere:mist",
"name": "Sea Fret",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "morning-mist",
"seed": 58,
"density": 0.45,
"color": "#d8dee4",
"opacity": 0.4,
"bandTop": 0.14,
"bandBottom": 0.5,
"edgeSoftness": 0.75,
"noiseScale": 4.5,
"noiseOctaves": 3,
"driftX": 0.16,
"driftPhase": 0,
"layerCount": 4,
"depthSpread": 0.3,
"skyColor": "#cfd9e3",
"colorShift": 0,
"depthSlot": 0.6
}
},
{
"id": "hatch-1",
"type": "painting:flow-lines",
"name": "Hatch, Far",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:1:0.9",
"fieldCols": 48,
"fieldRows": 48,
"minMagnitude": 0.1,
"seed": 58,
"lineCount": 2400,
"seedDistribution": "grid-jittered",
"lineLength": 300,
"stepSize": 6,
"lineWeight": 1,
"lineWeightVariation": 0.45,
"taper": "both",
"color": "#3e4c59",
"colorVariation": 0.1,
"opacity": 0.42,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.2,
"depthWeightRange": "[0.2, 1.4]",
"depthOpacityRange": "[0.12, 0.8]",
"maskCenterY": 0.4,
"maskSpread": 0.3
}
},
{
"id": "hatch-2",
"type": "painting:flow-lines",
"name": "Hatch, Mid",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:-4:0.9",
"fieldCols": 48,
"fieldRows": 48,
"minMagnitude": 0.1,
"seed": 61,
"lineCount": 2200,
"seedDistribution": "grid-jittered",
"lineLength": 240,
"stepSize": 6,
"lineWeight": 1.4,
"lineWeightVariation": 0.5,
"taper": "both",
"color": "#3e4c59",
"colorVariation": 0.12,
"opacity": 0.48,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.2,
"depthWeightRange": "[0.2, 2.0]",
"depthOpacityRange": "[0.08, 0.95]",
"maskCenterY": 0.62,
"maskSpread": 0.3
}
},
{
"id": "hatch-3",
"type": "painting:flow-lines",
"name": "Hatch, Near",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:7:0.9",
"fieldCols": 44,
"fieldRows": 44,
"minMagnitude": 0.1,
"seed": 69,
"lineCount": 2200,
"seedDistribution": "grid-jittered",
"lineLength": 180,
"stepSize": 4,
"lineWeight": 2.2,
"lineWeightVariation": 0.5,
"taper": "tail",
"color": "#1f2933",
"colorVariation": 0.12,
"opacity": 0.52,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.2,
"depthWeightRange": "[0.15, 2.6]",
"depthOpacityRange": "[0.0, 1.0]",
"maskCenterY": 0.84,
"maskSpread": 0.24
}
},
{
"id": "cross",
"type": "painting:flow-lines",
"name": "Cross-hatch",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:-19:0.9",
"fieldCols": 40,
"fieldRows": 40,
"minMagnitude": 0.1,
"seed": 77,
"lineCount": 1300,
"seedDistribution": "grid-jittered",
"lineLength": 120,
"stepSize": 4,
"lineWeight": 1.8,
"lineWeightVariation": 0.5,
"taper": "both",
"color": "#0f1418",
"colorVariation": 0.08,
"opacity": 0.46,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.2,
"depthWeightRange": "[0.1, 2.2]",
"depthOpacityRange": "[0.0, 1.0]",
"maskCenterY": 0.96,
"maskSpread": 0.14
}
},
{
"id": "grain",
"type": "painting:mark-field",
"name": "Grain",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "noise:0:0.1:3",
"fieldCols": 30,
"fieldRows": 30,
"seed": 63,
"density": 7000,
"markLength": 18,
"markLengthVariation": 0.6,
"markWeight": 1.6,
"markWeightVariation": 0.4,
"color": "#1f2933",
"colorVariation": 0.2,
"opacity": 0.36,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.2,
"depthDensityRange": "[0.3, 2.6]",
"depthWeightRange": "[0.4, 1.6]",
"maskCenterY": 0.74,
"maskSpread": 0.3
}
},
{
"id": "wash",
"type": "painting:watercolor",
"name": "Slate Wash",
"visible": true,
"locked": false,
"opacity": 0.22,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 900,
"height": 1400,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "noise:0:0.1:3",
"fieldCols": 20,
"fieldRows": 20,
"colors": "[\"#3e4c59\",\"#1f2933\"]",
"dilution": 0.82,
"granulation": 0.45,
"paintMode": "multiply",
"edgeStyle": "soft",
"seed": 65,
"maskCenterY": -1,
"maskSpread": 0.25,
"debug": false,
"debugOpacity": 0.7,
"debugMode": "all"
}
}
]
}