;; Bloom effect - glow on bright areas
(require-primitives "image" "blending")

(define-effect bloom
  :params (
    (intensity :type float :default 0.5 :range [0 2])
    (threshold :type int :default 200 :range [0 255])
    (radius :type int :default 15 :range [1 50])
  )
  (let* ((bright (map-pixels frame
                   (lambda (x y c)
                     (if (> (luminance c) threshold)
                         c
                         (rgb 0 0 0)))))
         (blurred (image:blur bright radius)))
    (blending:blend-mode frame blurred "add")))
