anchor.diff:          Lookup: Dictionary<int, Dictionary<int, Texture2DBuffer option * RenderBucket>>
       }
   
  -    member this.Add (programId, textureId, texture, transformComp, position, uv) =
  +    member this.Add (programId, textureId, texture, transformComp, position, uv, color) =
           let textureLookup =
               match this.Lookup.TryGetValue (programId) with
               | true, lookup -> lookup
  
positive.code:         Transforms: TransformComponent ResizeArray
          Positions: Vector3ArrayBuffer ResizeArray
          Uvs: Vector2ArrayBuffer ResizeArray
      }
  
  type RenderState =
  
negative.code: let materialQueue =
      componentAddedQueue (fun ent (materialComp: MaterialComponent) deltaTime em ->
  
          match em.TryGet<TransformComponent> ent with
          | Some transformComp ->
  
              match em.TryGet<MeshComponent> ent with
              | Some meshComp ->
  
                  let programId =
                      match materialComp.ShaderProgramState with
                      | ShaderProgramState.ReadyToLoad (vertex, fragment) ->
  
                          match shaderCache.TryGetValue ((vertex, fragment)) with
                          | true, programId ->
                              materialComp.ShaderProgramState <- ShaderProgramState.Loaded programId
                              programId
  
                          | _ ->
                              let mutable vertexFile = ([|0uy|]) |> Array.append (File.ReadAllBytes (vertex))
                              let mutable fragmentFile = ([|0uy|]) |> Array.append (File.ReadAllBytes (fragment))
  
                              let programId = Renderer.loadShaders vertexFile fragmentFile
                              materialComp.ShaderProgramState <- ShaderProgramState.Loaded programId
                              shaderCache.Add ((vertex, fragment), programId)
                              programId
  
                      | ShaderProgramState.Loaded programId -> programId
  
               
                  let textureId, texture =
                      match materialComp.Texture with
                      | Some texture ->
                          texture.TryBufferData () |> ignore
                          texture.Id, Some texture
                      | _ ->
                          0, None
                         
                  state.Add (programId, textureId, texture, transformComp, meshComp.Position, meshComp.Uv, materialComp.Color)
  
              | _ -> ()
          | _ -> ()
  
      )
  