initial code for compiling shaders. should probably be a separate file.