AdvancedLightness Hydra
From Adobe Labs
/*****************************************************************************
*
* Author: Jan Van Coppenolle
* http://compiler.kaustic.com/lab
*
*****************************************************************************/
kernel AdvancedLightness
{
parameter float amount
<
minValue: -1.0;
maxValue: 1.0;
defaultValue: 1.0;
>;
parameter float bias
<
minValue: 0.0;
maxValue: 1.0;
defaultValue: 0.5;
>;
void evaluatePixel(in image3 src, out pixel3 dst)
{
pixel3 px = sampleNearest(src, outCoord());
float minCh = min(px.r, min(px.g, px.b));
float maxCh = max(px.r, max(px.g, px.b));
float f = minCh * (1.0 - bias) + maxCh * bias;
dst = px - amount * px + amount * pixel3(f, f, f);
}
}