only use one program, one shader to avoid flushing. allow custom shaders, but one program is simpler and faster for now
separate shaders into separate file
remove busted packing code