Ejemplo n.º 1
0
void expr_handler::apply_alu_dst_mod(const bc_alu &bc, literal &v) {
	const float omod_coeff[] = {2.0f, 4.0, 0.5f};

	if (bc.omod)
		v = v.f * omod_coeff[bc.omod - 1];
	if (bc.clamp)
		v = float_clamp(v.f);
}
Ejemplo n.º 2
0
color_t
color_saddHSV(color_t a, float hx, float sx, float vx)
{
    const float normd = color_get_normd();
    const float normf = color_get_normf();
    float r = (float)color_getR(a) * normf; /* normalize red */
    float g = (float)color_getG(a) * normf; /* normalize green */
    float b = (float)color_getB(a) * normf; /* normalize blue */
    float h, s, v;		/* temporary HSV */
    float_convert_RGB2HSV(r, g, b, &h, &s, &v);	/* convert */
    h = float_clamp(0.0, h + hx, 1.0); /* shift hue */
    s = float_clamp(0.0, s + sx, 1.0); /* shift saturation */
    v = float_clamp(0.0, v + vx, 1.0); /* shift value */
    float_convert_HSV2RGB(h, s, v, &r, &g, &b);	/* convert back */
    int r8 = r * normd;
    int g8 = g * normd;
    int b8 = b * normd;
    return color_genRGBA(r8, g8, b8, color_getA(a));
}