public void Run() { TextureChunkData[] chunksToPullFrom = textureCollection.GetTextureChunkData(); TextureChunkData[] chunksToRecreate = TextureUtility.GetChunkDataForTexture(textureToRecreate); System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); TextureChunkData[] recreatedChunks = chunksToRecreate.AsParallel().Select((chunkToRecreate, index) => GetBestChunkForChunk(chunkToRecreate, chunksToPullFrom)).ToArray(); stopwatch.Stop(); Debug.Log(stopwatch.ElapsedMilliseconds); Texture2D finalTexture = TextureUtility.AssembleChunksIntoTexture(recreatedChunks, textureToRecreate.width); TextureUtility.WriteTexToPNG(finalTexture, "Result"); }