Example #1
0
        /* Filter a pixel based on some parameters and return a color value */
        public override HColor FilterPixel(HColor source)
        {
            HSVA pixel = HueSaturationValue.ColorToHSV(source);

            pixel.h = (pixel.h + mHSVA.h) % 360;
            pixel.s = Mathf.Clamp01(pixel.s + mHSVA.s);
            pixel.v = Mathf.Clamp01(pixel.v * mHSVA.v);
            pixel.a = Mathf.Clamp01(pixel.a * mHSVA.a);

            return(HueSaturationValue.HSVToHColor(pixel));
        }
Example #2
0
        /* Filter a pixel based on some parameters and return a color value */
        public override HColor FilterPixel(HColor source)
        {
            HSVA pixel = HueSaturationValue.ColorToHSV(source);

            /* Set the source pixel Hue */
            pixel.h = mHSVA.h;

            pixel.s = pixel.s * mHSVA.s;
            pixel.v = pixel.v * mHSVA.v;

            /* Apply alpha as a multiplier */
            pixel.a *= mHSVA.a;

            return(HueSaturationValue.HSVToHColor(pixel));
        }
Example #3
0
        public static HSVA ColorToHSV(float r, float g, float b, float a)
        {
            HSVA hsv = new HSVA(0, 0, 0, 0);

            hsv.a = a;

            float maxc = Mathf.Max(r, Mathf.Max(g, b));
            float minc = Mathf.Min(r, Mathf.Min(g, b));

            // Set Hue
            if (maxc == minc)
            {
                hsv.h = 0;
            }
            else if (r == maxc)
            {
                hsv.h = 60f * ((g - b) / (maxc - minc)) % 360f;
            }
            else if (g == maxc)
            {
                hsv.h = 60f * ((b - r) / (maxc - minc)) + 120f;
            }
            else if (b == maxc)
            {
                hsv.h = 60f * ((r - g) / (maxc - minc)) + 240f;
            }

            if (hsv.h < 0)
            {
                hsv.h = 360 + hsv.h;
            }

            // Set Value
            hsv.v = maxc;

            // Set Saturation
            if (maxc == 0)
            {
                hsv.s = 0;
            }
            else
            {
                hsv.s = 1f - (minc / maxc);
            }
            return(hsv);
        }
Example #4
0
        public static Color HSVToColor(HSVA hsv)
        {
            float h = hsv.h;
            float s = hsv.s;
            float v = hsv.v;

            int   hi = Mathf.FloorToInt(h / 60f) % 6;
            float f  = (h / 60f) - Mathf.Floor(h / 60f);
            float p  = v * (1f - s);
            float q  = v * (1f - (f * s));
            float t  = v * (1f - ((1f - f) * s));

            switch (hi)
            {
            case 0:
                return(new Color(v, t, p, hsv.a));

            case 1:
                return(new Color(q, v, p, hsv.a));

            case 2:
                return(new Color(p, v, t, hsv.a));

            case 3:
                return(new Color(p, q, v, hsv.a));

            case 4:
                return(new Color(t, p, v, hsv.a));

            case 5:
                return(new Color(v, p, q, hsv.a));

            default:
                Console.LogError("HSVToColor: error calculating Color " + hi);
                return(new Color(v, t, p, hsv.a));
            }
        }
        /* Filter a pixel based on some parameters and return a color value */
        public override HColor FilterPixel(HColor source)
        {
            HSVA pixel = HueSaturationValue.ColorToHSV(source);

            /* Set the source pixel Hue */
            pixel.h = mHSVA.h;

            /*
             *      Assume the source pixel has saturation 1 and subtract inverse of saturation from it
             *      This subtractive process will not saturate white pixels like highlites
             */
            pixel.s = Mathf.Clamp01(pixel.s - (1 - mHSVA.s));

            /*
             *      Use the value as an exponent to darken pixels
             *      This method does not darken white pixels ( to maintain highlights )
             */
            pixel.v = Mathf.Clamp01(Mathf.Pow(pixel.v, 1 + (1 - (mHSVA.v)) * 2.5f));

            /* Apply alpha as a multiplier */
            pixel.a *= mHSVA.a;

            return(HueSaturationValue.HSVToHColor(pixel));
        }
Example #6
0
 public HSVShiftFilter() : base()
 {
     mHSVA = new HSVA(0, 0, 1, 1);
 }
 public WhitePreservingColorFilter() : base()
 {
     mHSVA = new HSVA(0, 1f, 1f, 1f);
 }
Example #8
0
 public SimpleColorFilter() : base()
 {
     mHSVA = new HSVA(0f, 1f, 1f, 1f);
 }