anchor.diff:  
           override x.Compile(_, stream) =
               // never gets re-executed so the stream does not need to be cleared
  -            let o = compiler.manager.PrepareRenderObject(compiler.renderPass, o)
  +            
  +            let o = compiler.manager.PrepareRenderObject(compiler.renderPass, hook compiler.task o)
               for o in o.Children do
                   for r in o.resources do compiler.resources.Add r        
   
  
positive.code: 
      let compiler =
          {
              RuntimeCommands.Compiler.resources       = resources
              RuntimeCommands.Compiler.manager         = manager
              RuntimeCommands.Compiler.renderPass      = renderPass
  
negative.code:                         Mod.constant Box3d.Unit
              )
  
          static let rec hook (task : AbstractRenderTask) (o : IRenderObject) =
              match o with
                  | :? RenderObject as o -> task.HookRenderObject(o) :> IRenderObject
                  | :? MultiRenderObject as o -> o.Children |> List.map (hook task) |> MultiRenderObject :> IRenderObject
                  | o -> o
  
          member x.Uniforms =
              let rec get (o : IRenderObject) =
  