Apologies if this is a repeat question.
I am trying to create a neat way of detecting whether an object is being looked. I plan to achieve this by rendering relevant objects to a frame buffer object or a texture while all objects are being drawn. Then I will check the pixel at that frame buffer using the mouse location. If the pixel color (used as a key) is in the map of objects with control enabled (in the current scene), the engine will switch the control register of that objects.
Now, the issue is that I assign unique control color value to an object from its unique ID. The ID is an unsigned int, and when it gets assigned it gets chopped up into a vector of char to be used as a control color vector. I can load values into the uniform Vec3 value in my shader, however I realize that GLSL is using floats between 0 and 1 for representing colors. Will I experience any issues when sending Vec3 of unsigned chars into GLSL to be converted to Vec3 of floats, then to be read as RGB Vec3 of unsigned chars? Will the color vector converted back and forth be the same, or will there be any differences?