anchor.diff:  
   (glsl-multi-defun 
    :name 'texture 
  - :specs '((:in ((sampler :isampler-1d) (P :float) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-1d-array) (P :vec2) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-2d) (P :vec2) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-2d-array) (P :vec3) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-3d) (P :vec3) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-cube) (P :vec3) (bias :float)) :out :ivec4 )
  -          (:in ((sampler :sampler-1d) (P :float) (bias :float)) :out '(:vec4 )
  -          (:in ((sampler :sampler-1d-array) (P :vec2) (bias :float)) :out :vec4 )
  -          (:in ((sampler :sampler-1d-array-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :isampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :sampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :sampler-1d-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :sampler-2d) (P :vec2) (bias :float)) :out :vec4))
  -          (:in ((sampler :sampler-2d-array) (P :vec3) (bias :float)) :out :vec4 )
  -          (:in ((sampler :sampler-2d-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :sampler-3d) (P :vec3) (bias :float)) :out :vec4 )
  -          (:in ((sampler :sampler-cube) (P :vec3) (bias :float)) :out :vec4 )
  -          (:in ((sampler :sampler-cube-shadow) (P :vec4) (bias :float)) :out :float )          
  -          (:in ((sampler :usampler-1d) (P :float) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-1d-array) (P :vec2) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d) (P :vec2) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d-array) (P :vec3) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-3d) (P :vec3) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-cube) (P :vec3) (bias :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float )
  -          (:in ((sampler :sampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float )
  -          (:in ((sampler :isampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float )
  -          (:in ((sampler :usampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float ))
  + :specs '((:in ((sampler :isampler-1d) (P :float) (bias :float)) :out :ivec4)
  +          (:in ((sampler :isampler-1d-array) (P :vec2) (bias :float)) :out :ivec4)
  +          (:in ((sampler :isampler-2d) (P :vec2) (bias :float)) :out :ivec4)
  +          (:in ((sampler :isampler-2d-array) (P :vec3) (bias :float)) :out :ivec4)
  +          (:in ((sampler :isampler-3d) (P :vec3) (bias :float)) :out :ivec4)
  +          (:in ((sampler :isampler-cube) (P :vec3) (bias :float)) :out :ivec4)
  +          (:in ((sampler :sampler-1d) (P :float) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-1d-array) (P :vec2) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-1d-array-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :isampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :sampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :sampler-1d-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :sampler-2d) (P :vec2) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-2d-array) (P :vec3) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-2d-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :sampler-3d) (P :vec3) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-cube) (P :vec3) (bias :float)) :out :vec4)
  +          (:in ((sampler :sampler-cube-shadow) (P :vec4) (bias :float)) :out :float)          
  +          (:in ((sampler :usampler-1d) (P :float) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-1d-array) (P :vec2) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-2d) (P :vec2) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-2d-array) (P :vec3) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-3d) (P :vec3) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-cube) (P :vec3) (bias :float)) :out :uvec4)
  +          (:in ((sampler :usampler-2d-array-shadow) (P :vec3) (bias :float)) :out :float)
  +          (:in ((sampler :sampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float)
  +          (:in ((sampler :isampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float)
  +          (:in ((sampler :usampler-cube-array-shadow) (P :vec4) (compare :float)) :out :float))
    :transform "texture(~a, ~a, ~a)"
    :context-restriction '((:330)))
   
   (glsl-multi-defun 
    :name 'texture 
  - :specs '((:in ((sampler :isampler-1d) (P :float)) :out :ivec4 )
  -          (:in ((sampler :isampler-1d-array) (P :vec2)) :out :ivec4 )
  -          (:in ((sampler :isampler-2d) (P :vec2)) :out :ivec4 )
  -          (:in ((sampler :isampler-2d-array) (P :vec3)) :out :ivec4 )
  -          (:in ((sampler :isampler-2d-rect) (P :vec2)) :out :ivec4 )
  -          (:in ((sampler :isampler-3d) (P :vec3)) :out :ivec4 )
  -          (:in ((sampler :isampler-cube) (P :vec3)) :out :ivec4 )
  -          (:in ((sampler :sampler-1d) (P :float)) :out :vec4 )
  -          (:in ((sampler :sampler-1d-array) (P :vec2)) :out :vec4 )
  -          (:in ((sampler :sampler-1d-array-shadow) (P :vec3)) :out :float )
  -          (:in ((sampler :sampler-1d-shadow) (P :vec3)) :out :float )
  -          (:in ((sampler :sampler-2d) (P :vec2)) :out :vec4 )
  -          (:in ((sampler :sampler-2d-array) (P :vec3)) :out :vec4 )
  -          (:in ((sampler :sampler-2d-array-shadow) (P :vec4)) :out :float )
  -          (:in ((sampler :isampler-2d-array-shadow) (P :vec4)) :out :float )
  -          (:in ((sampler :usampler-2d-array-shadow) (P :vec4)) :out :float )
  -          (:in ((sampler :sampler-2d-rect) (P :vec2)) :out :vec4 )
  -          (:in ((sampler :sampler-2d-rect-shadow) (P :vec3)) :out :float )
  -          (:in ((sampler :sampler-2d-shadow) (P :vec3)) :out :float )
  -          (:in ((sampler :sampler-3d) (P :vec3)) :out :vec4 )
  -          (:in ((sampler :sampler-cube) (P :vec3)) :out :vec4 )
  -          (:in ((sampler :sampler-cube-shadow) (P :vec4)) :out :float )
  -          (:in ((sampler :usampler-1d) (P :float)) :out :uvec4 )
  -          (:in ((sampler :usampler-1d-array) (P :vec2)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d) (P :vec2)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d-array) (P :vec3)) :out :uvec4 )
  -          (:in ((sampler :usampler-2d-rect) (P :vec2)) :out :uvec4 )
  -          (:in ((sampler :usampler-3d) (P :vec3)) :out :uvec4 )
  -          (:in ((sampler :usampler-cube) (P :vec3)) :out :uvec4 ))
  + :specs '((:in ((sampler :isampler-1d) (P :float)) :out :ivec4)
  +          (:in ((sampler :isampler-1d-array) (P :vec2)) :out :ivec4)
  +          (:in ((sampler :isampler-2d) (P :vec2)) :out :ivec4)
  +          (:in ((sampler :isampler-2d-array) (P :vec3)) :out :ivec4)
  +          (:in ((sampler :isampler-2d-rect) (P :vec2)) :out :ivec4)
  +          (:in ((sampler :isampler-3d) (P :vec3)) :out :ivec4)
  +          (:in ((sampler :isampler-cube) (P :vec3)) :out :ivec4)
  +          (:in ((sampler :sampler-1d) (P :float)) :out :vec4)
  +          (:in ((sampler :sampler-1d-array) (P :vec2)) :out :vec4)
  +          (:in ((sampler :sampler-1d-array-shadow) (P :vec3)) :out :float)
  +          (:in ((sampler :sampler-1d-shadow) (P :vec3)) :out :float)
  +          (:in ((sampler :sampler-2d) (P :vec2)) :out :vec4)
  +          (:in ((sampler :sampler-2d-array) (P :vec3)) :out :vec4)
  +          (:in ((sampler :sampler-2d-array-shadow) (P :vec4)) :out :float)
  +          (:in ((sampler :isampler-2d-array-shadow) (P :vec4)) :out :float)
  +          (:in ((sampler :usampler-2d-array-shadow) (P :vec4)) :out :float)
  +          (:in ((sampler :sampler-2d-rect) (P :vec2)) :out :vec4)
  +          (:in ((sampler :sampler-2d-rect-shadow) (P :vec3)) :out :float)
  +          (:in ((sampler :sampler-2d-shadow) (P :vec3)) :out :float)
  +          (:in ((sampler :sampler-3d) (P :vec3)) :out :vec4)
  +          (:in ((sampler :sampler-cube) (P :vec3)) :out :vec4)
  +          (:in ((sampler :sampler-cube-shadow) (P :vec4)) :out :float)
  +          (:in ((sampler :usampler-1d) (P :float)) :out :uvec4)
  +          (:in ((sampler :usampler-1d-array) (P :vec2)) :out :uvec4)
  +          (:in ((sampler :usampler-2d) (P :vec2)) :out :uvec4)
  +          (:in ((sampler :usampler-2d-array) (P :vec3)) :out :uvec4)
  +          (:in ((sampler :usampler-2d-rect) (P :vec2)) :out :uvec4)
  +          (:in ((sampler :usampler-3d) (P :vec3)) :out :uvec4)
  +          (:in ((sampler :usampler-cube) (P :vec3)) :out :uvec4))
    :transform "texture(~a, ~a)"
    :context-restriction '((:330)))
   (glsl-multi-defun
  
positive.code: ;;  :name 'texture-3D 
  ;;  '(:in ((sampler :sampler-3d) (coord :vec3) (bias :float)) :out :int )
  ;;  :transform "texture3D(~a, ~a, ~a)"
  ;;  :context-restriction '((:330)))
  
  ;; (glsl-multi-defun 
  ;;  :name 'texture-3D 
  
negative.code:  :name 'texture-offset 
   :specs '((:in ((sampler :isampler-1d) (P :float) (offset :int) (bias :float)) :out :ivec4)
            (:in ((sampler :isampler-1d-array) (P :vec2) (offset :int) (bias :float)) :out :ivec4)
            (:in ((sampler :isampler-2d) (P :vec2) (offset :ivec2) (bias :float)) :out :ivec4)
            (:in ((sampler :isampler-2d-array) (P :vec3) (offset :ivec2) (bias :float)) :out :ivec4)
            (:in ((sampler :isampler-3d) (P :vec3) (offset :ivec3) (bias :float)) :out :ivec4)
            (:in ((sampler :sampler-1d) (P :float) (offset :int) (bias :float)) :out :vec4)
  