anchor.diff:      // ShaderState here.
       type CompilerState = ShaderState
   
  -    type Compiler() =
  +    let private version410 = Version(4,1)
  +    let private version120 = Version(1,2)
  +
  +    type Compiler(?glslVersion : Version) =
  +        let glslVersion = defaultArg glslVersion (Version(4,1))
           let funDefCache = MemoCache(false)
   
           let rec compileZero (t : Type) =
  
positive.code: 
              let! inputs = inputs |> Seq.mapCi (fun i (KeyValue(_,n)) -> 
                  compile {
                      if n.Type.IsArray then
                          let t = n.Type.GetElementType()
                          let! r = compileVariableDeclaration t n.Name
                          return sprintf "layout(location = %d) in %s[];" i r
                      else
                          let! r = compileVariableDeclaration n.Type n.Name
                          return sprintf "layout(location = %d) in %s;" i r
                  })
  
              let! outputs = outputs |> Seq.mapCi (fun i (KeyValue(_,(_,n))) -> 
                  compile {
                       if s.shaderType = ShaderType.TessControl then
                          let t = n.Type
                          let! r = compileVariableDeclaration t n.Name
                          return sprintf "layout(location = %d) out %s[];" i r
                      else
                          let! r = compileVariableDeclaration n.Type n.Name
                          return sprintf "layout(location = %d) out %s;" i r
                      })
  
  
  
negative.code:     let private compileEffectInternal (e : Compiled<Effect, ShaderState>) =
          compile {
              let! e = e
              let! glslVersion = version
  
              let hasgs = match e.geometryShader with | Some _ -> true | _ -> false
              let topUsed = ["Colors", typeof<V4d>; "Depth", typeof<float>] |> Map.ofList
  