Abstracted Shader class, and garbage collection for GPU shaders