genart.dev
Download GenArt
Slack Water

Slack Water

Tidewater · 2026 · 1400×1000 · Canvas 2D

Slack water is the still interval when the tide has stopped going out and has not yet begun to come in. Nothing in the frame is doing anything. The piece is one decision about where to put the horizon, and then a refusal to give the water an event to look at. What carries it instead is line. Four passes of hatching cross at angles a degree or two apart, and none of their density is free: weight and opacity are both tied to distance, so the lines are almost bare at the horizon and closing to black at the near edge. The surface is described entirely by how hard it is drawn. The only warm note in the palette is the ochre in the low band of air at the horizon, which the far water carries and the near water never reaches.

Technique

a cold-press paper ground under a high-key sky from plugin-terrain, its haze band tinted ochre so the warm note is a clean gradient rather than painted pigment. A streaked cirrostratus veil from plugin-atmosphere gives the sky structure without giving it an event, and a narrow mist band straddling the horizon dissolves the far water into the sky instead of meeting it at a drawn line. The drawing is four plugin-painting flow-line passes on linear fields at +1.5, -2.5, +3.5 and -14 degrees, each depth-scaled off the horizon and masked to its own band; the last is a cross-hatch confined to the darkest near edge, deepening the shadow by crossing rather than by pressing harder. A fine mark-field adds grain so the darks are not flat ink, and a slate watercolour wash closes it.

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.

  1. Slack Water, seed 4141
  2. Slack Water, seed 12901290
  3. Slack Water, seed 77027702

Layer stack

In paint order. Every mark in the image comes from these; there is no handwritten drawing code.

  1. textures:paperPaper Ground
  2. terrain:skySky
  3. atmosphere:cloudsCirrostratus Veil
  4. terrain:waterFlats
  5. atmosphere:mistSea Fret
  6. painting:flow-linesHatch, Far
  7. painting:flow-linesHatch, Mid
  8. painting:flow-linesHatch, Near
  9. painting:flow-linesCross-hatch
  10. painting:mark-fieldGrain
  11. painting:watercolorSlate Wash

Source

The complete composition. Open it in GenArt to re-render, re-seed, or take it apart.

slack-water.genart
{
  "genart": "1.2",
  "id": "slack-water",
  "title": "Slack Water",
  "created": "2026-09-10T00:00:00Z",
  "modified": "2026-09-10T20:23:35.521Z",
  "renderer": {
    "type": "canvas2d",
    "version": "1.x"
  },
  "canvas": {
    "width": 1400,
    "height": 1000
  },
  "parameters": [],
  "colors": [],
  "state": {
    "seed": 41,
    "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": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "preset": "cold-press",
        "roughness": -1,
        "color": "#e8e6df",
        "seed": 41
      }
    },
    {
      "id": "sky",
      "type": "terrain:sky",
      "name": "Sky",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "preset": "noon",
        "zenithColor": "#aebccb",
        "horizonColor": "#e8e6df",
        "hazeColor": "#b08968",
        "hazeIntensity": 0.26,
        "hazePosition": 1,
        "hazeWidth": 0.17,
        "horizonLine": 0.32,
        "depthLane": "sky"
      }
    },
    {
      "id": "veil",
      "type": "atmosphere:clouds",
      "name": "Cirrostratus Veil",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "preset": "cirrostratus-veil",
        "seed": 41,
        "cloudType": "cirrostratus",
        "algorithm": "streak",
        "coverage": 0.42,
        "altitude": 0.09,
        "scale": 2,
        "cloudCount": 9,
        "edgeComplexity": 0.3,
        "turbulence": 0.1,
        "cloudColor": "#e8e6df",
        "shadowColor": "#b9c6d2",
        "highlightColor": "#f4f1ea",
        "opacity": 0.24,
        "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": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "preset": "still-lake",
        "seed": 41,
        "waterlinePosition": 0.32,
        "rippleFrequency": 3,
        "rippleAmplitude": 0.4,
        "rippleMode": "noise",
        "waterColor": "#cbd2d9",
        "depthDarkening": 0.35,
        "shimmerIntensity": 0.22,
        "depthLane": "midground"
      }
    },
    {
      "id": "fret",
      "type": "atmosphere:mist",
      "name": "Sea Fret",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "preset": "morning-mist",
        "seed": 41,
        "density": 0.55,
        "color": "#eef0f2",
        "opacity": 0.5,
        "bandTop": 0.26,
        "bandBottom": 0.45,
        "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": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "field": "linear:1.5:0.9",
        "fieldCols": 48,
        "fieldRows": 48,
        "minMagnitude": 0.1,
        "seed": 41,
        "lineCount": 2400,
        "seedDistribution": "grid-jittered",
        "lineLength": 300,
        "stepSize": 6,
        "lineWeight": 1,
        "lineWeightVariation": 0.45,
        "taper": "both",
        "color": "#7b8794",
        "colorVariation": 0.1,
        "opacity": 0.3,
        "paintMode": "multiply",
        "depthScale": true,
        "horizonY": 0.32,
        "depthWeightRange": "[0.2, 1.4]",
        "depthOpacityRange": "[0.12, 0.8]",
        "maskCenterY": 0.58,
        "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": 1400,
        "height": 1000,
        "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": 44,
        "lineCount": 2200,
        "seedDistribution": "grid-jittered",
        "lineLength": 240,
        "stepSize": 6,
        "lineWeight": 1.4,
        "lineWeightVariation": 0.5,
        "taper": "both",
        "color": "#3e4c59",
        "colorVariation": 0.12,
        "opacity": 0.34,
        "paintMode": "multiply",
        "depthScale": true,
        "horizonY": 0.32,
        "depthWeightRange": "[0.2, 2.0]",
        "depthOpacityRange": "[0.08, 0.95]",
        "maskCenterY": 0.72,
        "maskSpread": 0.28
      }
    },
    {
      "id": "hatch-3",
      "type": "painting:flow-lines",
      "name": "Hatch, Near",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "field": "linear:3.5:0.9",
        "fieldCols": 44,
        "fieldRows": 44,
        "minMagnitude": 0.1,
        "seed": 52,
        "lineCount": 1800,
        "seedDistribution": "grid-jittered",
        "lineLength": 180,
        "stepSize": 4,
        "lineWeight": 2.2,
        "lineWeightVariation": 0.5,
        "taper": "tail",
        "color": "#1f2933",
        "colorVariation": 0.12,
        "opacity": 0.4,
        "paintMode": "multiply",
        "depthScale": true,
        "horizonY": 0.32,
        "depthWeightRange": "[0.15, 2.6]",
        "depthOpacityRange": "[0.0, 1.0]",
        "maskCenterY": 0.88,
        "maskSpread": 0.2
      }
    },
    {
      "id": "cross",
      "type": "painting:flow-lines",
      "name": "Cross-hatch",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "field": "linear:-14:0.9",
        "fieldCols": 40,
        "fieldRows": 40,
        "minMagnitude": 0.1,
        "seed": 60,
        "lineCount": 900,
        "seedDistribution": "grid-jittered",
        "lineLength": 120,
        "stepSize": 4,
        "lineWeight": 1.8,
        "lineWeightVariation": 0.5,
        "taper": "both",
        "color": "#0f1418",
        "colorVariation": 0.08,
        "opacity": 0.34,
        "paintMode": "multiply",
        "depthScale": true,
        "horizonY": 0.32,
        "depthWeightRange": "[0.1, 2.2]",
        "depthOpacityRange": "[0.0, 1.0]",
        "maskCenterY": 0.97,
        "maskSpread": 0.13
      }
    },
    {
      "id": "grain",
      "type": "painting:mark-field",
      "name": "Grain",
      "visible": true,
      "locked": false,
      "opacity": 1,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "rotation": 0,
        "scaleX": 1,
        "scaleY": 1,
        "anchorX": 0,
        "anchorY": 0
      },
      "properties": {
        "field": "noise:0:0.1:3",
        "fieldCols": 30,
        "fieldRows": 30,
        "seed": 46,
        "density": 5200,
        "markLength": 18,
        "markLengthVariation": 0.6,
        "markWeight": 1.6,
        "markWeightVariation": 0.4,
        "color": "#1f2933",
        "colorVariation": 0.2,
        "opacity": 0.3,
        "paintMode": "multiply",
        "depthScale": true,
        "horizonY": 0.32,
        "depthDensityRange": "[0.3, 2.6]",
        "depthWeightRange": "[0.4, 1.6]",
        "maskCenterY": 0.8,
        "maskSpread": 0.24
      }
    },
    {
      "id": "wash",
      "type": "painting:watercolor",
      "name": "Slate Wash",
      "visible": true,
      "locked": false,
      "opacity": 0.22,
      "blendMode": "normal",
      "transform": {
        "x": 0,
        "y": 0,
        "width": 1400,
        "height": 1000,
        "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": 48,
        "maskCenterY": -1,
        "maskSpread": 0.25,
        "debug": false,
        "debugOpacity": 0.7,
        "debugMode": "all"
      }
    }
  ]
}