Compositor: Full frame previews
Adds full frame implementation to PreviewOperation. Part of T88150.
This commit is contained in:
parent
cbe05edde5
commit
863460e5a5
|
@ -171,4 +171,43 @@ eCompositorPriority PreviewOperation::getRenderPriority() const
|
|||
return eCompositorPriority::Low;
|
||||
}
|
||||
|
||||
void PreviewOperation::get_area_of_interest(const int input_idx,
|
||||
const rcti &output_area,
|
||||
rcti &r_input_area)
|
||||
{
|
||||
BLI_assert(input_idx == 0);
|
||||
UNUSED_VARS_NDEBUG(input_idx);
|
||||
|
||||
r_input_area.xmin = output_area.xmin / m_divider;
|
||||
r_input_area.xmax = output_area.xmax / m_divider;
|
||||
r_input_area.ymin = output_area.ymin / m_divider;
|
||||
r_input_area.ymax = output_area.ymax / m_divider;
|
||||
}
|
||||
|
||||
void PreviewOperation::update_memory_buffer_partial(MemoryBuffer *UNUSED(output),
|
||||
const rcti &area,
|
||||
Span<MemoryBuffer *> inputs)
|
||||
{
|
||||
MemoryBuffer *input = inputs[0];
|
||||
struct ColormanageProcessor *cm_processor = IMB_colormanagement_display_processor_new(
|
||||
m_viewSettings, m_displaySettings);
|
||||
|
||||
rcti buffer_area;
|
||||
BLI_rcti_init(&buffer_area, 0, this->getWidth(), 0, this->getHeight());
|
||||
BuffersIteratorBuilder<uchar> it_builder(
|
||||
m_outputBuffer, buffer_area, area, COM_data_type_num_channels(DataType::Color));
|
||||
|
||||
for (BuffersIterator<uchar> it = it_builder.build(); !it.is_end(); ++it) {
|
||||
const float rx = it.x / m_divider;
|
||||
const float ry = it.y / m_divider;
|
||||
|
||||
float color[4];
|
||||
input->read_elem_checked(rx, ry, color);
|
||||
IMB_colormanagement_processor_apply_v4(cm_processor, color);
|
||||
rgba_float_to_uchar(it.out, color);
|
||||
}
|
||||
|
||||
IMB_colormanagement_processor_free(cm_processor);
|
||||
}
|
||||
|
||||
} // namespace blender::compositor
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
|
||||
#include "BKE_global.h"
|
||||
#include "BLI_rect.h"
|
||||
#include "COM_NodeOperation.h"
|
||||
#include "COM_MultiThreadedOperation.h"
|
||||
#include "DNA_color_types.h"
|
||||
#include "DNA_image_types.h"
|
||||
|
||||
namespace blender::compositor {
|
||||
|
||||
class PreviewOperation : public NodeOperation {
|
||||
class PreviewOperation : public MultiThreadedOperation {
|
||||
protected:
|
||||
unsigned char *m_outputBuffer;
|
||||
|
||||
|
@ -63,6 +63,11 @@ class PreviewOperation : public NodeOperation {
|
|||
bool determineDependingAreaOfInterest(rcti *input,
|
||||
ReadBufferOperation *readOperation,
|
||||
rcti *output) override;
|
||||
|
||||
void get_area_of_interest(int input_idx, const rcti &output_area, rcti &r_input_area) override;
|
||||
void update_memory_buffer_partial(MemoryBuffer *output,
|
||||
const rcti &area,
|
||||
Span<MemoryBuffer *> inputs) override;
|
||||
};
|
||||
|
||||
} // namespace blender::compositor
|
||||
|
|
Loading…
Reference in New Issue