Я установил входной цвет (0,001,0.0,0.0), min_lum - 0.0, min_max - 1.0. Таким образом, Sum_old будет 0,001, а x_old будет 1,0, y_old будет 0,0, z_old также будет 0,0. Как можно рассчитать красный по этому коду?
uniform sampler2D tex;
uniform float lum_min, lum_max;
void main()
{
vec3 XYZ = vec3(0.0001,0.0,0.0);//texture2D(tex, gl_TexCoord[0].xy).rgb;
float X_old = XYZ.r;
float Y_old = XYZ.g;
float Z_old = XYZ.b;
float Sum_old = X_old + Y_old + Z_old;
float x_old = X_old / Sum_old;
float y_old = Y_old / Sum_old;
float z_old = Z_old / Sum_old;
// Avoid zero luminance. Not allowed in XYZ!
float Y_new = (clamp(Y_old, lum_min + 0.00001, lum_max) - lum_min) / (lum_max - lum_min);
float X_new = (Y_new / y_old) * x_old;
float Z_new = (Y_new / y_old) * z_old;
gl_FragColor = vec4(X_new, Y_new, Z_new, 0.0);
}