Если я правильно понимаю, вы хотите представить значение с плавающей запятой в диапазоне [0.0, 1.0] цветом RGB.
Я рекомендую преобразовать значение в цветовой диапазон HSV .
Для полного диапазона преобразование:
float value = ...; // value in range [0.0, 1.0]
float H = value;
float R = fabs(H * 6.0f - 3.0f) - 1.0f;
float G = 2.0f - fabs(H * 6.0f - 2.0f);
float B = 2.0f - fabs(H * 6.0f - 4.0f);
glm::vec3 color(
std::max(0.0, std::min(1.0, R))
std::max(0.0, std::min(1.0, G))
std::max(0.0, std::min(1.0, B)));
Если вам не нужен полный диапазон, например, если вы хотите использовать диапазон от красного до синего, то value
необходимо масштабировать:
float H = value * 2.0f/3.0f;