Texture2D.ReadPixels is too slow on mobile. (Unity Free)

I have made a page turning effect for the transition between levels in my game. I’m using Unity Free so I can’t use render textures and I have to use Texture2D.ReadPixels instead. Here’s how it works:

  • The player reaches the end of a level.
  • I call ReadPixels once on the entire screen, into a pre-allocated texture.
  • I assign that texture to a material on the page turning mesh, which I animate over 1 second.
  • I load the next level immediately and have the page turning mesh render in front of everything.

On PC, the ReadPixels call takes just over 0.01s. That’s pretty bad, but isn’t actually a problem. The problem is that I’m making my game for Android, where the call takes just over 0.5s. That’s half a second in which the game is completely frozen, which is not an acceptable cost for a useless (though cool looking) transition animation.

Is there any way I can speed up the way I’m capturing the screen into a texture without needing Unity Pro for render textures?

No. The solution is, quite simply, to buy Unity Pro.