All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m33s
Merges full history from art-dag/mono.git into the monorepo under the artdag/ directory. Contains: core (DAG engine), l1 (Celery rendering server), l2 (ActivityPub registry), common (shared templates/middleware), client (CLI), test (e2e). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> git-subtree-dir: artdag git-subtree-mainline:1a179de547git-subtree-split:4c2e716558
37 lines
1.1 KiB
Common Lisp
37 lines
1.1 KiB
Common Lisp
;; Vignette effect using xector operations
|
||
;; Demonstrates α (element-wise) and β (reduction) patterns
|
||
|
||
(require-primitives "xector")
|
||
|
||
(define-effect xector_vignette
|
||
:params (
|
||
(strength :type float :default 0.5 :range [0 1])
|
||
(radius :type float :default 1.0 :range [0.5 2])
|
||
)
|
||
(let* (
|
||
;; Get normalized distance from center for each pixel
|
||
(dist (dist-from-center frame))
|
||
|
||
;; Calculate max distance (corner distance)
|
||
(max-dist (* (βmax dist) radius))
|
||
|
||
;; Calculate brightness factor per pixel: 1 - (dist/max-dist * strength)
|
||
;; Using explicit α operators
|
||
(factor (α- 1 (α* (α/ dist max-dist) strength)))
|
||
|
||
;; Clamp factor to [0, 1]
|
||
(factor (αclamp factor 0 1))
|
||
|
||
;; Extract channels as xectors
|
||
(r (red frame))
|
||
(g (green frame))
|
||
(b (blue frame))
|
||
|
||
;; Apply factor to each channel (implicit element-wise via Xector operators)
|
||
(r-out (* r factor))
|
||
(g-out (* g factor))
|
||
(b-out (* b factor)))
|
||
|
||
;; Combine back to frame
|
||
(rgb r-out g-out b-out)))
|