static void do_colorbalance_cdl(bNode *node, float* out, float *in) { NodeColorBalance *n= (NodeColorBalance *)node->storage; out[0] = colorbalance_cdl(in[0], n->lift[0], n->gamma[0], n->gain[0]); out[1] = colorbalance_cdl(in[1], n->lift[1], n->gamma[1], n->gain[1]); out[2] = colorbalance_cdl(in[2], n->lift[2], n->gamma[2], n->gain[2]); out[3] = in[3]; }
static void do_colorbalance_cdl_fac(bNode *node, float* out, float *in, float *fac) { NodeColorBalance *n= (NodeColorBalance *)node->storage; const float mfac= 1.0f - *fac; out[0] = mfac*in[0] + *fac * colorbalance_cdl(in[0], n->lift[0], n->gamma[0], n->gain[0]); out[1] = mfac*in[1] + *fac * colorbalance_cdl(in[1], n->lift[1], n->gamma[1], n->gain[1]); out[2] = mfac*in[2] + *fac * colorbalance_cdl(in[2], n->lift[2], n->gamma[2], n->gain[2]); out[3] = in[3]; }
void ColorBalanceASCCDLOperation::executePixelSampled(float output[4], float x, float y, PixelSampler sampler) { float inputColor[4]; float value[4]; this->m_inputValueOperation->readSampled(value, x, y, sampler); this->m_inputColorOperation->readSampled(inputColor, x, y, sampler); float fac = value[0]; fac = min(1.0f, fac); const float mfac = 1.0f - fac; output[0] = mfac * inputColor[0] + fac * colorbalance_cdl(inputColor[0], this->m_offset[0], this->m_power[0], this->m_slope[0]); output[1] = mfac * inputColor[1] + fac * colorbalance_cdl(inputColor[1], this->m_offset[1], this->m_power[1], this->m_slope[1]); output[2] = mfac * inputColor[2] + fac * colorbalance_cdl(inputColor[2], this->m_offset[2], this->m_power[2], this->m_slope[2]); output[3] = inputColor[3]; }
void ColorBalanceASCCDLOperation::executePixel(float *outputColor, float x, float y, PixelSampler sampler) { float inputColor[4]; float value[4]; this->m_inputValueOperation->read(value, x, y, sampler); this->m_inputColorOperation->read(inputColor, x, y, sampler); float fac = value[0]; fac = min(1.0f, fac); const float mfac = 1.0f - fac; outputColor[0] = mfac * inputColor[0] + fac *colorbalance_cdl(inputColor[0], this->m_lift[0], this->m_gamma[0], this->m_gain[0]); outputColor[1] = mfac * inputColor[1] + fac *colorbalance_cdl(inputColor[1], this->m_lift[1], this->m_gamma[1], this->m_gain[1]); outputColor[2] = mfac * inputColor[2] + fac *colorbalance_cdl(inputColor[2], this->m_lift[2], this->m_gamma[2], this->m_gain[2]); outputColor[3] = inputColor[3]; }