changed shader to use hash tables for uniforms and attributes