anchor.diff:          app.Runtime.PrepareTexture(PixTexture2d(PixImageMipMap [| pi :> PixImage |], true)) :> ITexture
   
       let getTileTexure (coord : V2i) (zoom : string)=
  -        init()
  +        //init()
           cache.GetOrAdd((zoom, coord), fun (zoom, coord) ->
               let info = TileInfo()
               info.Index <- TileIndex(coord.X, coord.Y, zoom)
  
positive.code: 
  [<AutoOpen>]
  module Textures =
      let mutable shouldInit = true
  
      let init() =
          if shouldInit then
              shouldInit <- false
              IL.Init()
              IL.OriginFunc(OriginMode.LowerLeft) |> ignore
              IL.Enable(EnableCap.AbsoluteOrigin) |> ignore
  
      // get a chached texture for the given tile and zoom-level
      // TODO: add proper memory management (textures are never deleted)
  
negative.code:         q.IndexArray <- [|0;1;2; 0;2;3|]
          q.IndexedAttributes <- SymDict.ofList [
              DefaultSemantic.Positions, [|V3f.OOO; V3f.IOO; V3f.IIO; V3f.OIO|] :> Array
              DefaultSemantic.DiffuseColorCoordinates, [|V2f.OI; V2f.II; V2f.IO; V2f.OO|] :> Array
          ]
  
          Sg.ofIndexedGeometryInterleaved [DefaultSemantic.Positions; DefaultSemantic.DiffuseColorCoordinates]  q
  