first pass on shaderloader