15h4 Mirror Layers

(meta linear-colour-space: 1)

(define
  coords1 [{[69.207 22.043] (gen/stray-2d from: [69.207 22.043] by: [10 10])}
           {[-220.633 -293.501] (gen/stray-2d from: [-220.633 -293.501] by: [10 10])}
           {[-17.378 -224.263] (gen/stray-2d from: [-17.378 -224.263] by: [10 10])}
           {[-235.333 156.696] (gen/stray-2d from: [-235.333 156.696] by: [10 10])}]

  coords2 [{[-342.573 295.281] (gen/stray-2d from: [-342.573 295.281] by: [10 10])}
           {[-297.274 -178.541] (gen/stray-2d from: [-297.274 -178.541] by: [10 10])}
           {[-139.891 193.888] (gen/stray-2d from: [-139.891 193.888] by: [10 10])}
           {[99.050 426.254] (gen/stray-2d from: [99.050 426.254] by: [10 10])}]

  coords3 [{[-283.695 -335.334] (gen/stray-2d from: [-283.695 -335.334] by: [10 10])}
           {[485.575 435.165] (gen/stray-2d from: [485.575 435.165] by: [10 10])}
           {[155.632 -55.001] (gen/stray-2d from: [155.632 -55.001] by: [10 10])}
           {[-322.526 376.519] (gen/stray-2d from: [-322.526 376.519] by: [10 10])}]

  col-fn-1 (col/build-procedural a: {[0.891 0.811 0.868] (gen/stray-3d from: [0.891 0.811 0.868] by: [0.2 0.2 0.2])}
                                 b: {[0.156 0.066 0.056] (gen/stray-3d from: [0.156 0.066 0.056] by: [0.2 0.2 0.2])}
                                 c: {[0.347 0.829 0.601] (gen/stray-3d from: [0.347 0.829 0.601] by: [0.2 0.2 0.2])}
                                 d: {[0.338 0.410 0.046] (gen/stray-3d from: [0.338 0.410 0.046] by: [0.2 0.2 0.2])}
                                 alpha: 0.08)
  col-fn-2 (col/build-procedural a: {[0.428 0.073 0.831] (gen/stray-3d from: [0.428 0.073 0.831] by: [0.2 0.2 0.2])}
                                 b: {[0.264 0.198 0.053] (gen/stray-3d from: [0.264 0.198 0.053] by: [0.2 0.2 0.2])}
                                 c: {[0.762 0.699 0.282] (gen/stray-3d from: [0.762 0.699 0.282] by: [0.2 0.2 0.2])}
                                 d: {[0.144 0.733 0.766] (gen/stray-3d from: [0.144 0.733 0.766] by: [0.2 0.2 0.2])}
                                 alpha: 0.08)
  col-fn-3 (col/build-procedural a: {[0.924 0.452 0.984] (gen/stray-3d from: [0.924 0.452 0.984] by: [0.2 0.2 0.2])}
                                 b: {[0.611 0.596 0.500] (gen/stray-3d from: [0.611 0.596 0.500] by: [0.2 0.2 0.2])}
                                 c: {[0.506 0.995 0.425] (gen/stray-3d from: [0.506 0.995 0.425] by: [0.2 0.2 0.2])}
                                 d: {[0.845 0.317 0.302] (gen/stray-3d from: [0.845 0.317 0.302] by: [0.2 0.2 0.2])}
                                 alpha: 0.08)
  step-1 (/ 1 200))

(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.800 g: 0.800 b: 1))
  (on-matrix-stack
    (translate vector: [(/ canvas/width 2) (/ canvas/height 2)])
    (repeat/rotate-mirrored fn: (address-of draw)
                            copies: {4 (gen/int min: 3 max: 7)})))

(render)

(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))))