/*-----------------------------------------------------------------* Color Red-Green Shade Blue-Yellow+L *-----------------------------------------------------------------*/ vec3 valuetoshadowcolorRGshadeBYL(float value, float shadewide, float shadow){ float l = L + shadewide *shaderange*1*1 - shadowrange*(1-shadow) * 1; float a = (value-0.5)* lab_a * 1, b = 1*lab_b* shadewide * 1; vec3 xyz = LabtoXYZ(l,a,b); //return vec3(l/100); return RGBnonlinearRGB(XYZtoRGB(xyz)); }
vec3 valuetocolor(float value){ float lab_a = 0.7, lab_b = 0.5, lab_c = 0.7, lab_d = 0.6; float labangle = radians(lab_a*100.0+(270.0-lab_a*100.0+(lab_b-0.5)*100.0)*(1.0-value)); vec3 xyz = LabtoXYZ(lab_d*100.0, (value-0.5)*30 + 0*lab_c*100.0*cos(labangle), 0*lab_c*100.0*sin(labangle)); vec3 rgb = XYZtoRGB(xyz); return RGBnonlinearRGB(rgb); }
void main(){ vec2 shadowTexCoord = Geom.screentexcoord * 0.5 + 0.5; shadowTexCoord.y = 1 - shadowTexCoord.y; shadowTexCoord *= shadowTexCoordSize; float shadow = texture(shadowTex, shadowTexCoord).x; Color = vec4 (RGBnonlinearRGB (XYZtoRGB (LabtoXYZ (inColorLab.x - shadowRange * (1 - shadow), inColorLab.y, inColorLab.z))), 1); }
void ColorSpace::LabtoXYZ (CoImage* pIn, CoImage* pOut) { assert (pIn->GetType() == MAT_Tfloat); assert (pOut->GetType() == MAT_Tfloat); float* prX = pIn->m_matX.data.fl[0]; float* prY = pIn->m_matY.data.fl[0]; float* prZ = pIn->m_matZ.data.fl[0]; float* pbR = pOut->m_matX.data.fl[0]; float* pbG = pOut->m_matY.data.fl[0]; float* pbB = pOut->m_matZ.data.fl[0]; for (int i = 0; i < pIn->GetHeight() * pIn->GetWidth(); i ++) { LabtoXYZ(prX[i], prY[i], prZ[i], &pbR[i], &pbG[i], &pbB[i]); } }
/// <summary> /// Converts CIELab to RGB. /// </summary> void ColorSpace::LabtoRGB(float l, float a, float b, BYTE* red, BYTE* green, BYTE* blue) { float x,y,z; LabtoXYZ(l, a, b, &x,&y,&z); XYZtoRGB(x,y,z,red,green,blue); }
void Image::LabtoRGB(pixel3f *source, pixel4b *destination) { LabtoXYZ(source); XYZtoRGB(source, destination); }
/*-----------------------------------------------------------------* Color Red-Green *-----------------------------------------------------------------*/ vec3 valuetoshadowcolorRG(float shadow, float value){ float l = 75 - 40*(1-shadow), a = (value-0.5)*100*1.4, b = 0; vec3 xyz = LabtoXYZ(l,a,b); return RGBnonlinearRGB(XYZtoRGB(xyz)); }
vec3 valuetocolorRG(float value){ float l = 75, a = (value-0.5)*100*1.4, b = 0; vec3 xyz = LabtoXYZ(l,a,b); return RGBnonlinearRGB(XYZtoRGB(xyz))+vec3(0.1,0.1,0); }
vec3 valuetocolorYB(float value){ float l = 75, a = 0, b = (value-0.5)*100; vec3 xyz = LabtoXYZ(l,a,b); return RGBnonlinearRGB(XYZtoRGB(xyz)); }
/*-----------------------------------------------------------------* Color Red-Green Shade Blue-Yellow b *-----------------------------------------------------------------*/ vec3 valuetoshadowcolorRGshadeBY(float value, float shadewide, float shadow){ float l = 75 - 30*(1-shadow), a = (value-0.5)*100*1.4 * 0, b = -shadewide * 0; vec3 xyz = LabtoXYZ(l,a,b); return RGBnonlinearRGB(XYZtoRGB(xyz)); }