anchor.diff:             (clip-pos (* proj view-pos)))
         (values
          clip-pos
  -       texture))))
  +       texture
  +       point-color))))
   
   (defmethod vert-transform-for ((kind (eql :range)))
     'range-vert-transform)
  
positive.code: ;;------------------------------------------------------------
  
  (defun-g pgraph-dot-frag ((uv :vec2)
                            &uniform
                            (point-color :vec4))
    (let ((sdf-scale 25f0))
      (mix
       (v! 0 0 0 0)
       point-color
       (nineveh.sdf.2d:mask-fill
        (nineveh.sdf.2d:circle (- (* uv 2 sdf-scale) (vec2 sdf-scale))
                               sdf-scale)))))
  
negative.code:                                 (world->view :mat4)
                                  (proj :mat4)
                                  (point-size :float)
                                  (point-color :vec4)
                                  ;;
                                  (x-min :float)
                                  (x-max :float)
                                  (y-min :float)
                                  (y-max :float)
                                  (by :float)
                                  (spacing :float))
    (with-slots (position texture) vert
      (let* ((id (float gl-instance-id))
             (x-range (/ (- x-max x-min) by))
             (y-range (/ (- y-max y-min) by))
             (x (* (mod id x-range) by))
             (y (* (/ id x-range) by))
             (input (vec2 x y))
             (pos2 (* input spacing point-size))
             (func-result (funcall fn input))
             (world-pos (v! (x pos2) func-result (y pos2) 1.0))
             (view-pos (+ (* world->view world-pos)
                          (vec4 (* position point-size) 0)))
             (clip-pos (* proj view-pos)))
        (values
         clip-pos
         texture
         point-color))))
  
  (defmethod vert-transform-for ((kind (eql :height)))
    'height-vert-transform)
  
  (defmethod args-for ((kind (eql :height)))
    '((x-min 0f0 :float (float x-min 0f0))
      (x-max 100f0 :float (float x-max 0f0))
      (y-min 0f0 :float (float y-min 0f0))
      (y-max 100f0 :float (float y-max 0f0))
      (by 1f0 :float (float by 0f0))
      (spacing 1.3f0 :float (float spacing 0f0))))
  
  (defmethod instance-count-for ((kind (eql :height)))
    `(floor (* (/ (- x-max x-min) by)
               (/ (- y-max y-min) by))))
  
  (defmethod wrap-in-func-for ((kind (eql :height)) var body)
    `(graph-func ((,var :vec2)) (the :float (progn ,@body))))
  
  ;;------------------------------------------------------------
  ;; Height-Col Graph
  
  (defun-g height-col-vert-transform ((fn (function (:vec2) (:float :vec4)))
                                  (vert g-pt)
                                  (world->view :mat4)
                                  (proj :mat4)
                                  (point-size :float)
                                  (point-color :vec4)
                                  ;;
                                  (x-min :float)
                                  (x-max :float)
                                  (y-min :float)
                                  (y-max :float)
                                  (by :float)
                                  (spacing :float))
    (with-slots (position texture) vert
      (let* ((id (float gl-instance-id))
             (x-range (/ (- x-max x-min) by))
             (y-range (/ (- y-max y-min) by))
             (x (* (mod id x-range) by))
             (y (* (/ id x-range) by))
             (input (vec2 x y))
             (pos2 (* input spacing point-size)))
        (multiple-value-bind (func-result func-col)
            (funcall fn input)
          (let* ((world-pos (v! (x pos2) func-result (y pos2) 1.0))
                 (view-pos (+ (* world->view world-pos)
                              (vec4 (* position point-size) 0)))
                 (clip-pos (* proj view-pos)))
            (values
             clip-pos
             texture
             func-col))))))
  
  (defmethod vert-transform-for ((kind (eql :height-color)))
    'height-col-vert-transform)
  
  (defmethod args-for ((kind (eql :height-color)))
    '((x-min 0f0 :float (float x-min 0f0))
      (x-max 100f0 :float (float x-max 0f0))
      (y-min 0f0 :float (float y-min 0f0))
      (y-max 100f0 :float (float y-max 0f0))
      (by 1f0 :float (float by 0f0))
      (spacing 1.3f0 :float (float spacing 0f0))))
  
  (defmethod instance-count-for ((kind (eql :height-color)))
    `(floor (* (/ (- x-max x-min) by)
               (/ (- y-max y-min) by))))
  
  (defmethod wrap-in-func-for ((kind (eql :height-color)) var body)
    `(graph-func ((,var :vec2)) ,@body))
  
  ;;------------------------------------------------------------
  
  