A container for the standard sorting methods.
Sort by depth, back-to-front. Useful for transparent objects, since blending should take into account everything that lies behind.
Sort by depth, front-to-back. Useful for opaque objects that updates the depth buffer. The front stuff will occlude more pixels, leaving less work to be done for the farther objects.
Sort by mesh. Allows minimizing the vertex format changes.
Sort by shader program. Switching a program is one of the heaviest state changes, so this variant is useful when the order is not important.