anchor.diff:                  
           )
   
  +        let addToPool(ag : AdaptiveGeometry) = 
  +            
  +            Report.BeginTimed("add to pool: vc={0}", ag.vertexCount)
  +            Report.Line("ManagedBuffer.Set takes super long to fill up missing DiffuseColorCoordinates with 0")
  +            let mdc = pool.Add ag
  +            Report.End() |> ignore
  +            mdc
  +
           let geometriesLazy = 
               geometries |> ASet.map (fun (ig, trafo) -> ig
  -                                                        |> AdaptiveGeometry.ofIndexedGeometry [Sem.Hugo, Mod.constant trafo :> IMod ]
  -                                                        |> pool.Add)
  +                                                        |> AdaptiveGeometry.ofIndexedGeometry [ (Sem.Hugo, (Mod.constant trafo :> IMod)); (Sem.HugoN, Mod.constant (trafo.Backward.Transposed) :> IMod) ]
  +                                                        |> addToPool)
   
           // initial evaluation
           ASet.toArray geometriesLazy |> ignore
  
positive.code:                     Map.ofList [ 
                          DefaultSemantic.Positions, typeof<V3f>
                          DefaultSemantic.Normals, typeof<V3f> 
                      ]
                  uniformTypes = 
                      Map.ofList [ 
                          Sem.Hugo, typeof<M44f> 
                      ]
              }
  
  
negative.code:     open FShade
      module Sem =
          let Hugo = Symbol.Create "Hugo"
          let HugoN = Symbol.Create "HugoN"
  
      type HugoVertex = 
          {
              [<Semantic("Hugo")>] mt : M44d
              [<Semantic("HugoN")>] nt : M33d
              [<Position>] p : V4d
              [<Normal>] n : V3d
          }
  
      let hugoShade (v : HugoVertex) =
          vertex {
              return { v 
                  with 
                      p = v.mt * v.p 
                      n = v.nt * v.n
              }
          }
  
  