implement setUniform via overloading instead of template