Encapsulated shaders into their own objects