Expand shader API to mix and match shader code
Branching in shaders is known to be expensive, so it's better to create multiple shader programs. This gets clunky to do with the current shaders API, though. Aside from making the Slice3D code cleaner, improving the API could also make it easier for custom effects to be added in the application, etc.