Each material may have a set of calculations that must be evaluated before drawing with it.
Every expression that a material uses can be evaluated at one time, which will allow for perfect common subexpression removal when I get around to writing it.
Without this, scrolling an entire surface could result in evaluating the same texture matrix calculations a half dozen times.
Open question: should I allow arbitrary per-vertex color, texCoord, and vertex calculations to be specified in the material code?
Every stage will definately have a valid image pointer.
We might want the ability to change the sort value based on conditionals, but it could be a hassle to implement,