genart.dev
Download GenArt
Fog Bank

Fog Bank

Tidewater · 2026 · 1200×1200 · Canvas 2D

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.

  1. Fog Bank, seed 806806
  2. Fog Bank, seed 22312231
  3. Fog Bank, seed 55905590

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.

fog-bank.genart
{
  "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"
      }
    }
  ]
}