Cache shader uniform lookup

Updated shader to store uniform locations in a map, which should increase performance for uniform lookups