by Kevin Goldsmith
Created
I forgot to post the example! Here is the Fade To History kernel I posted yesterday, run through the formatter:
kernel FadeToHistory
< namespace : “Kevin’s Tutorial Filters”;
vendor : “Kevin’s Filters, Inc”;
version : 1;
description : “Fade from color to B&W to sepia”;
>
{
parameter float crossfade
< minValue: 0.0;
maxValue: 2.0;
defaultValue: 0.0;
>;
const float3 lumMult = float3(0.3, 0.59, 0.11);
input image4 src;
output pixel4 dst;
void
evaluatePixel()
{
dst = sampleNearest(src,outCoord());
float luminance = dot(dst.rgb, lumMult);
float3 sepia = float3( dst.r * 0.4 +
dst.g * 0.769 +
dst.b * 0.189,
dst.r * 0.349 +
dst.g * 0.686 +
dst.b * 0.168,
dst.r * 0.272 +
dst.g * 0.534 +
dst.b * 0.131 );
float3 startMix = dst.rgb;
float3 endMix = float3(luminance);
float mixValue = crossfade;
if ( crossfade > 1.0 )
{
// normalize mix value to the range of 0-1
mixValue -= 1.0;
startMix = float3(luminance);
endMix = sepia;
}
dst.rgb = mix(startMix, endMix, mixValue);
}
}
