1632 Star

(meta linear-colour-space: 1)

(define
  coords1 [{[-16.200 -87.700] (gen/stray-2d from: [-16.200 -87.700] by: [10 10])}
           {[-273.060 -168.239] (gen/stray-2d from: [-273.060 -168.239] by: [10 10])}
           {[430.975 61.829] (gen/stray-2d from: [430.975 61.829] by: [10 10])}
           {[-31.060 41.194] (gen/stray-2d from: [-31.060 41.194] by: [10 10])}]

  coords2 [{[-40.860 -471.796] (gen/stray-2d from: [-40.860 -471.796] by: [10 10])}
           {[449.439 -309.675] (gen/stray-2d from: [449.439 -309.675] by: [10 10])}
           {[-323.095 267.840] (gen/stray-2d from: [-323.095 267.840] by: [10 10])}
           {[-104.251 112.489] (gen/stray-2d from: [-104.251 112.489] by: [10 10])}]

  coords3 [{[-202.860 280.206] (gen/stray-2d from: [-202.860 280.206] by: [10 10])}
           {[-244.704 108.644] (gen/stray-2d from: [-244.704 108.644] by: [10 10])}
           {[105.021 64.211] (gen/stray-2d from: [105.021 64.211] by: [10 10])}
           {[-7.379 -144.927] (gen/stray-2d from: [-7.379 -144.927] by: [10 10])}]


  col-fn-1 (col/build-procedural a: {[0.530 0.693 0.481] (gen/stray-3d from: [0.530 0.693 0.481] by: [0.1 0.1 0.1])}
                                 b: {[0.399 0.205 0.523] (gen/stray-3d from: [0.399 0.205 0.523] by: [0.1 0.1 0.1])}
                                 c: {[0.710 0.587 0.365] (gen/stray-3d from: [0.710 0.587 0.365] by: [0.1 0.1 0.1])}
                                 d: {[0.299 0.086 0.762] (gen/stray-3d from: [0.299 0.086 0.762] by: [0.1 0.1 0.1])}
                                 alpha: 0.08)
  col-fn-2 (col/build-procedural a: {[0.418 0.015 0.259] (gen/stray-3d from: [0.418 0.015 0.259] by: [0.1 0.1 0.1])}
                                 b: {[0.959 0.312 0.517] (gen/stray-3d from: [0.959 0.312 0.517] by: [0.1 0.1 0.1])}
                                 c: {[0.754 0.364 0.790] (gen/stray-3d from: [0.754 0.364 0.790] by: [0.1 0.1 0.1])}
                                 d: {[0.741 0.316 0.332] (gen/stray-3d from: [0.741 0.316 0.332] by: [0.1 0.1 0.1])}
                                 alpha: 0.08)
  col-fn-3 (col/build-procedural a: {[0.405 0.679 0.190] (gen/stray-3d from: [0.405 0.679 0.190] by: [0.1 0.1 0.1])}
                                 b: {[0.943 0.905 0.287] (gen/stray-3d from: [0.943 0.905 0.287] by: [0.1 0.1 0.1])}
                                 c: {[0.282 0.407 0.127] (gen/stray-3d from: [0.282 0.407 0.127] by: [0.1 0.1 0.1])}
                                 d: {[0.489 0.462 0.707] (gen/stray-3d from: [0.489 0.462 0.707] by: [0.1 0.1 0.1])}
                                 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.810 g: 0.593 b: 0.355 alpha: 0.936))
    (on-matrix-stack
     (translate vector: [(/ canvas/width 2) (/ canvas/height 2)])
     (repeat/rotate-mirrored fn: (address-of draw)
                             copies: {7 (gen/int min: 4 max: 10)})))

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