anchor.diff:     (element-type :initform 'v-double)
      (dimensions :initform '(3) :reader v-dimensions)
      (casts-to :initform '(v-uvec3 v-vec3 v-dvec3))))
  -(def-v-type-class v-dvec4 (v-dvector v-gvec4)
  +(def-v-type-class v-dvec4 (v-dvector)
     ((core :initform t :reader core-typep)
      (glsl-string :initform "dvec4" :reader v-glsl-string)
      (element-type :initform 'v-double)
  
positive.code:    (glsl-size :initform 4)))
  
  (def-v-type-class v-vector (v-container) ())
  (def-v-type-class v-fvector (v-vector v-tf v-tvec) ())
  
  (def-v-type-class v-vec2 (v-fvector)
    ((core :initform t :reader core-typep)
  
negative.code:   ((core :initform T :reader core-typep)
     (glsl-string :initform "isampler2DMSArray" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-isampler-2d-rect (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isampler2DRect" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-isampler-3d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isampler3D" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-isampler-buffer (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isamplerBuffer" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-isampler-cube (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isamplerCube" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-isampler-cube-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "isamplerCubeArray" :reader v-glsl-string)
     (element-type :initform 'V-IVEC4)))
  (def-v-type-class v-sampler-1d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler1D" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-1d-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler1DArray" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-1d-array-shadow
      (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler1DArrayShadow" :reader
                  glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-1d-shadow (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler1DShadow" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2D" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DArray" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-array-shadow
      (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DArrayShadow" :reader
                  glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-ms (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DMS" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-ms-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DMSArray" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-rect (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DRect" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-rect-shadow (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DRectShadow" :reader
                  glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-2d-shadow (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler2DShadow" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-3d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "sampler3D" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-buffer (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerBuffer" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-cube (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerCube" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-cube-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerCubeArray" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-cube-array-shadow
      (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerCubeArrayShadow" :reader
                  glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-sampler-cube-shadow (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "samplerCubeShadow" :reader v-glsl-string)
     (element-type :initform 'V-VEC4)))
  (def-v-type-class v-usampler-1d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler1D" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-1d-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler1DArray" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-2d (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler2D" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-2d-array (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler2DArray" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  (def-v-type-class v-usampler-2d-ms (v-sampler)
    ((core :initform T :reader core-typep)
     (glsl-string :initform "usampler2DMS" :reader v-glsl-string)
     (element-type :initform 'V-UVEC4)))
  