15 const int other_1 = (primary_channel + 1) % 3;
16 const int other_2 = (primary_channel + 2) % 3;
18 const int min_channel = std::min(other_1, other_2);
19 const int max_channel = std::max(other_1, other_2);
21 const float val = pixel_color[max_channel] +
22 screen_balance * (pixel_color[min_channel] - pixel_color[max_channel]);
24 return (pixel_color[primary_channel] - val) *
fabsf(1.0f - val);
43 const float *pixel_color = it.in(0);
44 const float *screen_color = it.in(1);
46 const int primary_channel =
max_axis_v3(screen_color);
47 const float min_pixel_color =
min_fff(pixel_color[0], pixel_color[1], pixel_color[2]);
49 if (min_pixel_color > 1.0f) {
68 else if (saturation >= screen_saturation) {
76 const float distance = 1.0f - saturation / screen_saturation;