optimize SpriteRenderer.Draw()

instantiate the shader only once
reduced the amount of time spent sorting