The InvertKernel inverts the colours on its input. It also applies a gain, controlled by the Multiply parameter.
kernel InvertKernel : ImageComputationKernel<eComponentWise>
{
Image<eRead, eAccessPoint, eEdgeClamped> src; //the input image
Image<eWrite> dst; //the output image
param:
float multiply; //This parameter is made available to the user.
local:
float _whiteAccessPoint; //This local variable is not exposed to the user.
//In define(), parameters can be given labels and default values.
void define() {
defineParam(multiply, "Multiply", 1.0f);
}
//The init() function is run before any calls to process().
void init() {
_whiteAccessPoint = 1.0f; //Local variables can be initialised here.
}
//The process function is run at every pixel to produce the output.
void process() {
//Invert the input value from src and multiply:
dst() = (_whiteAccessPoint - src()) * multiply;
}
};