anchor.diff:    (values (* transform (v! (pos vert) 1s0))
             (* (tex vert) (v! 1 uv-y-mult))))
   
  -(defun-g draw-texture-frag ((tc :vec2) &uniform (tex :sampler-2d))
  -  (texture tex tc))
  +(defun-g draw-texture-frag ((tc :vec2) &uniform (tex :sampler-2d)
  +                            (color-scale :vec4))
  +  (* (texture tex tc) color-scale))
   
   (def-g-> draw-texture-pipeline ()
     #'(draw-texture-vert g-pt) #'(draw-texture-frag :vec2))
  
positive.code:                         &key
                            (pos (v! 0 0))
                            (centered t)
                            (flip-uvs-vertically nil))
    (let* ((size (v! (texture-base-dimensions (sampler-texture sampler))))
           (vp-size (viewport-resolution (current-viewport)))
           (ratio (v2:/ size vp-size))
  
negative.code:           (* (s~ (pos vert) :xy) uv-mult 2)))
  
  (defun-g draw-cube-face-frag ((tc :vec2) &uniform (tex :sampler-cube)
                                (mat :mat3) (color-scale :vec4))
    (* (texture tex (* mat (v! tc -1)))
       color-scale))
  
  (def-g-> draw-cube-face-pipeline ()
    #'(draw-cube-face-vert g-pt) #'(draw-cube-face-frag :vec2))
  
  ;;------------------------------------------------------------
  
  (defun %draw-cube-face (sampler pos-vec2 rotation scale color-scale)
    (let* ((tex (sampler-texture sampler))
           (tex-res (resolution tex))
           (win-res (resolution (current-viewport)))
  