Changeset View
Changeset View
Standalone View
Standalone View
source/blender/compositor/operations/COM_ConvertOperation.cc
| Show All 34 Lines | void ConvertBaseOperation::initExecution() | ||||
| this->m_inputOperation = this->getInputSocketReader(0); | this->m_inputOperation = this->getInputSocketReader(0); | ||||
| } | } | ||||
| void ConvertBaseOperation::deinitExecution() | void ConvertBaseOperation::deinitExecution() | ||||
| { | { | ||||
| this->m_inputOperation = nullptr; | this->m_inputOperation = nullptr; | ||||
| } | } | ||||
| void ConvertBaseOperation::hash_output_params() | |||||
| { | |||||
| } | |||||
| void ConvertBaseOperation::update_memory_buffer_partial(MemoryBuffer *output, | void ConvertBaseOperation::update_memory_buffer_partial(MemoryBuffer *output, | ||||
| const rcti &area, | const rcti &area, | ||||
| Span<MemoryBuffer *> inputs) | Span<MemoryBuffer *> inputs) | ||||
| { | { | ||||
| BuffersIterator<float> it = output->iterate_with(inputs, area); | BuffersIterator<float> it = output->iterate_with(inputs, area); | ||||
| update_memory_buffer_partial(it); | update_memory_buffer_partial(it); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 213 Lines • ▼ Show 20 Lines | rgb_to_ycc( | ||||
| inputColor[0], inputColor[1], inputColor[2], &color[0], &color[1], &color[2], this->m_mode); | inputColor[0], inputColor[1], inputColor[2], &color[0], &color[1], &color[2], this->m_mode); | ||||
| /* divided by 255 to normalize for viewing in */ | /* divided by 255 to normalize for viewing in */ | ||||
| /* R,G,B --> Y,Cb,Cr */ | /* R,G,B --> Y,Cb,Cr */ | ||||
| mul_v3_v3fl(output, color, 1.0f / 255.0f); | mul_v3_v3fl(output, color, 1.0f / 255.0f); | ||||
| output[3] = inputColor[3]; | output[3] = inputColor[3]; | ||||
| } | } | ||||
| void ConvertRGBToYCCOperation::hash_output_params() | |||||
| { | |||||
| ConvertBaseOperation::hash_output_params(); | |||||
| hash_param(m_mode); | |||||
| } | |||||
| void ConvertRGBToYCCOperation::update_memory_buffer_partial(BuffersIterator<float> &it) | void ConvertRGBToYCCOperation::update_memory_buffer_partial(BuffersIterator<float> &it) | ||||
| { | { | ||||
| for (; !it.is_end(); ++it) { | for (; !it.is_end(); ++it) { | ||||
| const float *in = it.in(0); | const float *in = it.in(0); | ||||
| rgb_to_ycc(in[0], in[1], in[2], &it.out[0], &it.out[1], &it.out[2], this->m_mode); | rgb_to_ycc(in[0], in[1], in[2], &it.out[0], &it.out[1], &it.out[2], this->m_mode); | ||||
| /* Normalize for viewing (#rgb_to_ycc returns 0-255 values). */ | /* Normalize for viewing (#rgb_to_ycc returns 0-255 values). */ | ||||
| mul_v3_fl(it.out, 1.0f / 255.0f); | mul_v3_fl(it.out, 1.0f / 255.0f); | ||||
| ▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | ycc_to_rgb(inputColor[0], | ||||
| inputColor[2], | inputColor[2], | ||||
| &output[0], | &output[0], | ||||
| &output[1], | &output[1], | ||||
| &output[2], | &output[2], | ||||
| this->m_mode); | this->m_mode); | ||||
| output[3] = inputColor[3]; | output[3] = inputColor[3]; | ||||
| } | } | ||||
| void ConvertYCCToRGBOperation::hash_output_params() | |||||
| { | |||||
| ConvertBaseOperation::hash_output_params(); | |||||
| hash_param(m_mode); | |||||
| } | |||||
| void ConvertYCCToRGBOperation::update_memory_buffer_partial(BuffersIterator<float> &it) | void ConvertYCCToRGBOperation::update_memory_buffer_partial(BuffersIterator<float> &it) | ||||
| { | { | ||||
| for (; !it.is_end(); ++it) { | for (; !it.is_end(); ++it) { | ||||
| const float *in = it.in(0); | const float *in = it.in(0); | ||||
| /* Multiply by 255 to un-normalize (#ycc_to_rgb needs input values in 0-255 range). */ | /* Multiply by 255 to un-normalize (#ycc_to_rgb needs input values in 0-255 range). */ | ||||
| ycc_to_rgb(in[0] * 255.0f, | ycc_to_rgb(in[0] * 255.0f, | ||||
| in[1] * 255.0f, | in[1] * 255.0f, | ||||
| in[2] * 255.0f, | in[2] * 255.0f, | ||||
| ▲ Show 20 Lines • Show All 296 Lines • Show Last 20 Lines | |||||