public static RGB HSLtoRGB(HSL values) //http://www.rapidtables.com/convert/color/hsl-to-rgb.htm { HSL hsl = new HSL(values.h, values.s, values.l).Validate(); float H = hsl.Factorize().x; float S = hsl.s; float L = hsl.l; float C = (1 - Mathf.Abs(2 * L - 1)) * S; float X = C * (1 - Mathf.Abs(H / 60 % 2 - 1)); float m = L - C / 2; float r = 0, g = 0, b = 0; if (0 <= H && H < 60) { r = C; g = X; b = 0; } else if (60 <= H && H < 120) { r = X; g = C; b = 0; } else if (120 <= H && H < 180) { r = 0; g = C; b = X; } else if (180 <= H && H < 240) { r = 0; g = X; b = C; } else if (240 <= H && H < 300) { r = X; g = 0; b = C; } else if (300 <= H && H < 360) { r = C; g = 0; b = X; } return(new RGB(r + m, g + m, b + m).Validate()); }