Changeset 2218 for trunk/src


Ignore:
Timestamp:
Jan 14, 2013, 9:19:06 AM (8 years ago)
Author:
sam
Message:

color: write the RGB to HSL routine and its associated unit tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lol/image/color.h

    r2217 r2218  
    105105
    106106    /*
     107     * Convert RGB to HSL
     108     */
     109    static vec3 RGBToHSL(vec3 src)
     110    {
     111        float K = 0.f;
     112
     113        if (src.g < src.b)
     114            src = src.rbg, K = -1.f;
     115
     116        if (src.r < src.g)
     117            src = src.grb, K = -2.f / 6.f - K;
     118
     119        float chroma = src.r - min(src.g, src.b);
     120        float luma = src.r + min(src.g, src.b);
     121        return vec3(abs(K + (src.g - src.b) / (6.f * chroma + 1e-20f)),
     122                    chroma / (min(luma, 2.f - luma) + 1e-20f),
     123                    0.5f * luma);
     124    }
     125
     126    static vec4 RGBToHSL(vec4 src)
     127    {
     128        return vec4(RGBToHSL(src.rgb), src.a);
     129    }
     130
     131    /*
    107132     * Convert linear HSV to linear HSL
    108133     */
Note: See TracChangeset for help on using the changeset viewer.