Обновить

Комментарии 3

Конвертируем цвета в JS со скоростью 6 миллиардов операций в секунду

Про какие операции речь?

vec3 oklabToLinearSrgb(float L, float a, float b) {
  float l_ = L + M2I_A_L * a + M2I_B_L * b;
  float m_ = L + M2I_A_M * a + M2I_B_M * b;
  float s_ = L + M2I_A_S * a + M2I_B_S * b;
  float l3 = l_ * l_ * l_;
  float m3 = m_ * m_ * m_;
  float s3 = s_ * s_ * s_;
  return vec3(
    M1I_L_R * l3 + M1I_M_R * m3 + M1I_S_R * s3,
    M1I_L_G * l3 + M1I_M_G * m3 + M1I_S_G * s3,
    M1I_L_B * l3 + M1I_M_B * m3 + M1I_S_B * s3);
}

vec3 toLinearSrgb(float l, float c, float h) {
  float hr = radians(h);
  return oklabToLinearSrgb(l, c * cos(hr), c * sin(hr));
}

vec3 lin = toLinearSrgb(comp[0], comp[1], comp[2]);

Одна конвертация OKLCH→sRGB считается за одну операцию

Так это же не JS а GLSL.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации