renderer's update sprite function, chapter 3(final)
implement some destructors + material cache
implement screen visibility

in short, we don't update quads that too far from screen
implement command visibility

in short, if a command have full of invisible sprite, no need to render
it
optimize workflow