15he Mirror Layers

(meta linear-colour-space: 1)

(render)

(define
  coords1 [{[-73.702 -369.905] (gen/stray-2d from: [-73.702 -369.905] by: [30 30])}
           {[-46.721 251.241] (gen/stray-2d from: [-46.721 251.241] by: [30 30])}
           {[482.683 486.754] (gen/stray-2d from: [482.683 486.754] by: [30 30])}
           {[249.841 -61.198] (gen/stray-2d from: [249.841 -61.198] by: [30 30])}]

  coords2 [{[67.201 -29.005] (gen/stray-2d from: [67.201 -29.005] by: [30 30])}
           {[-83.504 -56.009] (gen/stray-2d from: [-83.504 -56.009] by: [30 30])}
           {[-313.355 -455.848] (gen/stray-2d from: [-313.355 -455.848] by: [30 30])}
           {[-102.060 -190.176] (gen/stray-2d from: [-102.060 -190.176] by: [30 30])}]

  coords3 [{[-362.115 400.584] (gen/stray-2d from: [-362.115 400.584] by: [30 30])}
           {[35.240 -408.070] (gen/stray-2d from: [35.240 -408.070] by: [30 30])}
           {[255.548 86.787] (gen/stray-2d from: [255.548 86.787] by: [30 30])}
           {[285.243 -175.679] (gen/stray-2d from: [285.243 -175.679] by: [30 30])}]


  col-fn-1 (col/build-procedural a: {[0.373 0.364 0.799] (gen/stray-3d from: [0.373 0.364 0.799] by: [0.2 0.2 0.2])}
                                 b: {[0.253 0.495 0.006] (gen/stray-3d from: [0.253 0.495 0.006] by: [0.2 0.2 0.2])}
                                 c: {[0.104 0.601 0.934] (gen/stray-3d from: [0.104 0.601 0.934] by: [0.2 0.2 0.2])}
                                 d: {[0.164 0.403 0.759] (gen/stray-3d from: [0.164 0.403 0.759] by: [0.2 0.2 0.2])}
                                 alpha: 0.08)
  col-fn-2 (col/build-procedural a: {[0.642 0.748 0.334] (gen/stray-3d from: [0.642 0.748 0.334] by: [0.2 0.2 0.2])}
                                 b: {[0.928 0.543 0.441] (gen/stray-3d from: [0.928 0.543 0.441] by: [0.2 0.2 0.2])}
                                 c: {[0.237 0.239 0.426] (gen/stray-3d from: [0.237 0.239 0.426] by: [0.2 0.2 0.2])}
                                 d: {[0.739 0.418 0.843] (gen/stray-3d from: [0.739 0.418 0.843] by: [0.2 0.2 0.2])}
                                 alpha: 0.08)
  col-fn-3 (col/build-procedural a: {[0.174 0.541 0.742] (gen/stray-3d from: [0.174 0.541 0.742] by: [0.2 0.2 0.2])}
                                 b: {[0.014 0.900 0.972] (gen/stray-3d from: [0.014 0.900 0.972] by: [0.2 0.2 0.2])}
                                 c: {[0.650 0.115 0.842] (gen/stray-3d from: [0.650 0.115 0.842] by: [0.2 0.2 0.2])}
                                 d: {[0.571 0.494 0.150] (gen/stray-3d from: [0.571 0.494 0.150] by: [0.2 0.2 0.2])}
                                 alpha: 0.08))

(fn (draw)
    (fence (t num: 200)
    (poly coords: [(interp/bezier t: t coords: coords1)
                   (interp/bezier t: t coords: coords2)
                   (interp/bezier t: t coords: coords3)]
          colours: [(col/value from: col-fn-1 t: t)
                    (col/value from: col-fn-2 t: t)
                    (col/value from: col-fn-3 t: t)])))

(fn (render)
  (wash colour: {(col/rgb r: 0.017 g: 0.373 b: 0.853 alpha: 0.719) (gen/col)})
  (on-matrix-stack
    (translate vector: [(/ canvas/width 2) (/ canvas/height 2)])
    (repeat/rotate-mirrored fn: (address-of draw)
                            copies: 2)))

(fn (wash vol: 200
          line-width: 70
          line-segments: 5
          colour: (col/rgb r: 0.627 g: 0.627 b: 0.627 alpha: 0.4)
          seed: 272)
  (define
    w/3 (/ canvas/width 3)
    h/3 (/ canvas/height 3))
  (loop (d from: -20 to: 1020 inc: 20)
    (bezier tessellation: line-segments
            line-width: line-width
            coords: [[0            (wash-n x: 0            d: d seed: seed vol: vol)]
                     [w/3          (wash-n x: w/3          d: d seed: seed vol: vol)]
                     [(* w/3 2)    (wash-n x: (* w/3 2)    d: d seed: seed vol: vol)]
                     [canvas/width (wash-n x: canvas/width d: d seed: seed vol: vol)]]
            colour: colour)

    (bezier tessellation: line-segments
            line-width: line-width
            coords: [[(wash-n x: 0             d: d seed: seed vol: vol) 0]
                     [(wash-n x: h/3           d: d seed: seed vol: vol) h/3]
                     [(wash-n x: (* h/3 2)     d: d seed: seed vol: vol) (* h/3 2)]
                     [(wash-n x: canvas/height d: d seed: seed vol: vol) canvas/height]]
            colour: colour)))

(fn (wash-n x: 0 d: 0 seed: 0 vol: 1)
  (+ d (* vol (prng/perlin x: x y: d z: seed))))