Inherits DD::Image::DeepPixelOp.
Public Member Functions | |
ChannelSet | channels () const |
DeepAccumPixelOp (Node *node) | |
bool | doDeepEngine (DD::Image::Box box, const ChannelSet &channels, DeepOutputPlane &plane) |
virtual void | processSample (int y, int x, const DD::Image::DeepPixel &deepPixel, size_t sampleNo, const DD::Image::ChannelSet &channels, DeepOutPixel &output) const |
virtual void | processPixel (const Pixel &in, const DD::Image::ChannelSet &channels, Pixel &output) const =0 |
void | knobs (Knob_Callback f) |
void | in_channels (int, ChannelSet &channels) const |
Helper class for Deep operators. The DeepAccumPixelOp is intended for operators that want to work on the accumlated deep samples rather than the individual samples like in DeepPixelOp.
This is useful for operators such as a color correct which should not act on individual samples but rather act on the accumulated result and then spread that result over the deep samples.
processPixel gets passed the current accumulated sample with the accumulated color unpremultiplied
the result of the operation should be put into output ( unpremultipied )
The results of these operations will then be unaccumulated and put back into the deep samples.
If the alpha was affected then all the deep samples will be reweighted by the new accumulated alpha
void DeepAccumPixelOp::knobs | ( | Knob_Callback | f | ) | [virtual] |
Adds a channel selector knob, these channels will be processed by processSample
Note that this *doesn't* call the DeepPixelOp base class knobs method.
In a derived class if you want access to the DeepPixelOp knobs such as mix and limitz as well as the channel selector call DeepPixelOp::knobs as well as DeepAccumPixelOp::knobs.
Reimplemented from DD::Image::Op.
void DeepAccumPixelOp::in_channels | ( | int | i, |
ChannelSet & | channels | ||
) | const |
always requests alpha and the deep channels