setInternalFormat(uniform) {
        if(uniform.value.type === "Vec2") {
            uniform._internalFormat = "Vec2";
            uniform.lastValue = uniform.value.clone();
        }
        else if(uniform.value.type === "Vec3") {
            uniform._internalFormat = "Vec3";
            uniform.lastValue = uniform.value.clone();
        }
        else if(uniform.value.type === "Mat4") {
            uniform._internalFormat = "Mat4";
            uniform.lastValue = uniform.value.clone();
        }
        else if(uniform.value.type === "Quat") {
            uniform._internalFormat = "Quat";
            uniform.lastValue = uniform.value.clone();
        }
        else if(Array.isArray(uniform.value)) {
            uniform._internalFormat = "array";
            uniform.lastValue = Array.from(uniform.value);
        }
        else if(uniform.value.constructor === Float32Array) {
            uniform._internalFormat = "mat";
            uniform.lastValue = uniform.value;
        }
        else {
            uniform._internalFormat = "float";
            uniform.lastValue = uniform.value;
        }
    }
Auto detect the format of the uniform (check if its a float, an integer, a Vector, a Matrix, an array...)
     Also set a lastValue property that we'll use to compare to our value property and update the uniform if it changed

     params :
     @uniform (object): the uniform
*