Changeset View
Changeset View
Standalone View
Standalone View
source/blender/compositor/operations/COM_BlurBaseOperation.cc
| Show First 20 Lines • Show All 206 Lines • ▼ Show 20 Lines | case eExecutionModel::FullFrame: { | ||||
| m_size = *static_cast<ConstantOperation *>(size_input)->get_constant_elem(); | m_size = *static_cast<ConstantOperation *>(size_input)->get_constant_elem(); | ||||
| } /* Else use default. */ | } /* Else use default. */ | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| this->m_sizeavailable = true; | this->m_sizeavailable = true; | ||||
| } | } | ||||
| void BlurBaseOperation::determineResolution(unsigned int resolution[2], | void BlurBaseOperation::determine_canvas(const rcti &preferred_area, rcti &r_area) | ||||
| unsigned int preferredResolution[2]) | |||||
| { | { | ||||
| if (!m_extend_bounds) { | if (!m_extend_bounds) { | ||||
| NodeOperation::determineResolution(resolution, preferredResolution); | NodeOperation::determine_canvas(preferred_area, r_area); | ||||
| return; | return; | ||||
| } | } | ||||
| switch (execution_model_) { | switch (execution_model_) { | ||||
| case eExecutionModel::Tiled: { | case eExecutionModel::Tiled: { | ||||
| NodeOperation::determineResolution(resolution, preferredResolution); | NodeOperation::determine_canvas(preferred_area, r_area); | ||||
| resolution[0] += 2 * m_size * m_data.sizex; | r_area.xmax += 2 * m_size * m_data.sizex; | ||||
| resolution[1] += 2 * m_size * m_data.sizey; | r_area.ymax += 2 * m_size * m_data.sizey; | ||||
| break; | break; | ||||
| } | } | ||||
| case eExecutionModel::FullFrame: { | case eExecutionModel::FullFrame: { | ||||
| /* Setting a modifier ensures all non main inputs have extended bounds as preferred | /* Setting a modifier ensures all non main inputs have extended bounds as preferred | ||||
| * resolution, avoiding unnecessary resolution conversions that would hide constant | * canvas, avoiding unnecessary canvas conversions that would hide constant | ||||
| * operations. */ | * operations. */ | ||||
| set_determined_resolution_modifier([=](unsigned int res[2]) { | set_determined_canvas_modifier([=](rcti &canvas) { | ||||
| /* Rounding to even prevents jiggling in backdrop while switching size values. */ | /* Rounding to even prevents jiggling in backdrop while switching size values. */ | ||||
| res[0] += round_to_even(2 * m_size * m_data.sizex); | canvas.xmax += round_to_even(2 * m_size * m_data.sizex); | ||||
| res[1] += round_to_even(2 * m_size * m_data.sizey); | canvas.ymax += round_to_even(2 * m_size * m_data.sizey); | ||||
| }); | }); | ||||
| NodeOperation::determineResolution(resolution, preferredResolution); | NodeOperation::determine_canvas(preferred_area, r_area); | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void BlurBaseOperation::get_area_of_interest(const int input_idx, | void BlurBaseOperation::get_area_of_interest(const int input_idx, | ||||
| const rcti &output_area, | const rcti &output_area, | ||||
| rcti &r_input_area) | rcti &r_input_area) | ||||
| { | { | ||||
| switch (input_idx) { | switch (input_idx) { | ||||
| case 0: | case 0: | ||||
| r_input_area = output_area; | r_input_area = output_area; | ||||
| break; | break; | ||||
| case 1: | case 1: | ||||
| r_input_area = use_variable_size_ ? output_area : COM_SINGLE_ELEM_AREA; | r_input_area = use_variable_size_ ? output_area : COM_CONSTANT_INPUT_AREA_OF_INTEREST; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } // namespace blender::compositor | } // namespace blender::compositor | ||||