anchor.diff:      | Array of len : int * elem : GLSLType * stride : int
       | Image of GLSLImageType
       | Sampler of GLSLSamplerType
  +    | DynamicArray of GLSLType
   
   and GLSLImageType =
       {
  
positive.code:                     )
  
                  GLSLType.Struct(name, newFields, offset), largestAlign, offset
  
              | GLSLType.Image _ ->
                  failwith "[GLSL] Images cannot be part of a UniformBuffer"
  
negative.code:                             | GLSLSampler t -> GLSLType.Sampler t
                      | _ -> failwithf "[GLSL] bad intrinsic type: %A" a
  
              | CType.CPointer(_,e) -> GLSLType.DynamicArray (ofCType e)
  
  
  module LayoutStd140 =
  