;; Vignette effect - darkens corners (require-primitives "image") (define-effect vignette :params ( (strength :type float :default 0.5 :range [0 1]) (radius :type int :default 1 :range [0.5 2]) ) (let* ((w (image:width frame)) (h (image:height frame)) (cx (/ w 2)) (cy (/ h 2)) (max-dist (* (sqrt (+ (* cx cx) (* cy cy))) radius))) (map-pixels frame (lambda (x y c) (let* ((dx (- x cx)) (dy (- y cy)) (dist (sqrt (+ (* dx dx) (* dy dy)))) (factor (- 1 (* (/ dist max-dist) strength))) (factor (clamp factor 0 1))) (rgb (* (red c) factor) (* (green c) factor) (* (blue c) factor)))))))