
Fog Bank
This is the piece with no distance in it. The bank has taken the far water and the horizon with it, so rather than look out at nothing the eye is turned down, onto the surface a few yards off. The frame is square because there is no distance for a wide one to hold and no height for a tall one. The drawing spreads out instead of banking at the near edge. Everywhere in this picture is near, so the depth rule that gives the other pieces their weight has almost nothing to work against, and the hatch stays even and faint across the whole square. Ochre is all but gone. The rule has never been that the series contains ochre; it is that ochre appears where light lands on water, and in fog almost none does.
Technique
the shared Tidewater stack on a square frame at horizon 0.08, so only a sliver of sky is left, with the mist band widened to run from 0.18 to 0.82 at near-full density and softness so it eats the far water rather than banding across it. ⚠️ The water layer draws a hard top edge at its waterline, which in fog reads as a ruled line through the bank; the water is tinted close to the sky's own value so the join has no step in it. Hatch opacities drop to a third of their usual and their masks widen to cover the whole frame instead of pulling toward the near edge.
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.
806
2231
5590
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": "fog-bank",
"title": "Fog Bank",
"created": "2026-09-10T00:00:00Z",
"modified": "2026-09-10T20:23:35.558Z",
"renderer": {
"type": "canvas2d",
"version": "1.x"
},
"canvas": {
"width": 1200,
"height": 1200
},
"parameters": [],
"colors": [],
"state": {
"seed": 806,
"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": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "cold-press",
"roughness": -1,
"color": "#e8e6df",
"seed": 806
}
},
{
"id": "sky",
"type": "terrain:sky",
"name": "Sky",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "noon",
"zenithColor": "#bcc7d1",
"horizonColor": "#e8e6df",
"hazeColor": "#b08968",
"hazeIntensity": 0.08,
"hazePosition": 1,
"hazeWidth": 0.1,
"horizonLine": 0.08,
"depthLane": "sky"
}
},
{
"id": "veil",
"type": "atmosphere:clouds",
"name": "Cirrostratus Veil",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "cirrostratus-veil",
"seed": 806,
"cloudType": "cirrostratus",
"algorithm": "streak",
"coverage": 0.7,
"altitude": 0.09,
"scale": 2,
"cloudCount": 9,
"edgeComplexity": 0.3,
"turbulence": 0.06,
"cloudColor": "#e8e6df",
"shadowColor": "#b9c6d2",
"highlightColor": "#f4f1ea",
"opacity": 0.34,
"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": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "still-lake",
"seed": 806,
"waterlinePosition": 0.08,
"rippleFrequency": 3,
"rippleAmplitude": 0.4,
"rippleMode": "noise",
"waterColor": "#dde4ea",
"depthDarkening": 0.22,
"shimmerIntensity": 0.08,
"depthLane": "midground"
}
},
{
"id": "fret",
"type": "atmosphere:mist",
"name": "Sea Fret",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"preset": "morning-mist",
"seed": 806,
"density": 0.95,
"color": "#eef0f2",
"opacity": 0.82,
"bandTop": 0.18,
"bandBottom": 0.82,
"edgeSoftness": 0.98,
"noiseScale": 3,
"noiseOctaves": 3,
"driftX": 0.16,
"driftPhase": 0,
"layerCount": 7,
"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": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:2.5:0.9",
"fieldCols": 48,
"fieldRows": 48,
"minMagnitude": 0.1,
"seed": 806,
"lineCount": 2400,
"seedDistribution": "grid-jittered",
"lineLength": 257.14,
"stepSize": 5.14,
"lineWeight": 0.86,
"lineWeightVariation": 0.45,
"taper": "both",
"color": "#7b8794",
"colorVariation": 0.1,
"opacity": 0.1,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.08,
"depthWeightRange": "[0.2, 1.4]",
"depthOpacityRange": "[0.12, 0.8]",
"maskCenterY": 0.42,
"maskSpread": 0.44
}
},
{
"id": "hatch-2",
"type": "painting:flow-lines",
"name": "Hatch, Mid",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:-3.5:0.9",
"fieldCols": 48,
"fieldRows": 48,
"minMagnitude": 0.1,
"seed": 809,
"lineCount": 2200,
"seedDistribution": "grid-jittered",
"lineLength": 205.71,
"stepSize": 5.14,
"lineWeight": 1.2,
"lineWeightVariation": 0.5,
"taper": "both",
"color": "#3e4c59",
"colorVariation": 0.12,
"opacity": 0.18,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.08,
"depthWeightRange": "[0.2, 2.0]",
"depthOpacityRange": "[0.08, 0.95]",
"maskCenterY": 0.56,
"maskSpread": 0.42
}
},
{
"id": "hatch-3",
"type": "painting:flow-lines",
"name": "Hatch, Near",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:4.5:0.9",
"fieldCols": 44,
"fieldRows": 44,
"minMagnitude": 0.1,
"seed": 817,
"lineCount": 1800,
"seedDistribution": "grid-jittered",
"lineLength": 154.29,
"stepSize": 3.43,
"lineWeight": 1.89,
"lineWeightVariation": 0.5,
"taper": "tail",
"color": "#1f2933",
"colorVariation": 0.12,
"opacity": 0.3,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.08,
"depthWeightRange": "[0.15, 2.6]",
"depthOpacityRange": "[0.0, 1.0]",
"maskCenterY": 0.7,
"maskSpread": 0.38
}
},
{
"id": "cross",
"type": "painting:flow-lines",
"name": "Cross-hatch",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "linear:-11:0.9",
"fieldCols": 40,
"fieldRows": 40,
"minMagnitude": 0.1,
"seed": 825,
"lineCount": 900,
"seedDistribution": "grid-jittered",
"lineLength": 102.86,
"stepSize": 3.43,
"lineWeight": 1.54,
"lineWeightVariation": 0.5,
"taper": "both",
"color": "#0f1418",
"colorVariation": 0.08,
"opacity": 0.22,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.08,
"depthWeightRange": "[0.1, 2.2]",
"depthOpacityRange": "[0.0, 1.0]",
"maskCenterY": 0.84,
"maskSpread": 0.26
}
},
{
"id": "grain",
"type": "painting:mark-field",
"name": "Grain",
"visible": true,
"locked": false,
"opacity": 1,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "noise:0:0.1:3",
"fieldCols": 30,
"fieldRows": 30,
"seed": 811,
"density": 5200,
"markLength": 15.43,
"markLengthVariation": 0.6,
"markWeight": 1.37,
"markWeightVariation": 0.4,
"color": "#1f2933",
"colorVariation": 0.2,
"opacity": 0.18,
"paintMode": "multiply",
"depthScale": true,
"horizonY": 0.08,
"depthDensityRange": "[0.3, 2.6]",
"depthWeightRange": "[0.4, 1.6]",
"maskCenterY": 0.6,
"maskSpread": 0.42
}
},
{
"id": "wash",
"type": "painting:watercolor",
"name": "Slate Wash",
"visible": true,
"locked": false,
"opacity": 0.22,
"blendMode": "normal",
"transform": {
"x": 0,
"y": 0,
"width": 1200,
"height": 1200,
"rotation": 0,
"scaleX": 1,
"scaleY": 1,
"anchorX": 0,
"anchorY": 0
},
"properties": {
"field": "noise:0:0.1:3",
"fieldCols": 20,
"fieldRows": 20,
"colors": "[\"#3e4c59\",\"#7b8794\"]",
"dilution": 0.82,
"granulation": 0.45,
"paintMode": "multiply",
"edgeStyle": "soft",
"seed": 813,
"maskCenterY": -1,
"maskSpread": 0.25,
"debug": false,
"debugOpacity": 0.7,
"debugMode": "all"
}
}
]
}