;; Heavy Interpreted Pipeline Test
;;
;; Same effects as test_heavy_fused.sexp but using separate primitive calls

(stream "heavy_interpreted_test"
  :fps 30
  :width 1920
  :height 1080
  :seed 42

  ;; Load primitives
  (require-primitives "streaming_gpu")
  (require-primitives "geometry_gpu")
  (require-primitives "color_ops")
  (require-primitives "image")
  (require-primitives "math")

  ;; Frame pipeline - INTERPRETED (separate calls)
  (frame
    (let [;; Create base image
          r (+ 0.5 (* 0.5 (math:sin (* t 1))))
          g (+ 0.5 (* 0.5 (math:sin (* t 1.3))))
          b (+ 0.5 (* 0.5 (math:sin (* t 1.7))))
          color [(* r 255) (* g 255) (* b 255)]
          base (image:make-image 1920 1080 color)

          ;; Dynamic parameters
          angle (* t 30)
          zoom (+ 1.0 (* 0.1 (math:sin (* t 0.5))))
          phase (* t 2)

          ;; Apply 4 effects one by one (INTERPRETED - many kernel launches)
          step1 (geometry_gpu:rotate base angle)
          step2 (color_ops:hue-shift step1 30)
          step3 (geometry_gpu:ripple step2 15 :frequency 10 :decay 2 :time phase)
          step4 (color_ops:brightness step3 1.0)]

      step4)))
