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; const float3 lumMult = float3(0.3, 0.59, 0.11); const float3x3 sepiaMatrix = float3x3(0.400, 0.769, 0.189, 0.349, 0.686, 0.168, 0.272, 0.534, 0.131); void evaluatePixel(in image4 src, out pixel4 dst) { dst = sampleNearest(src,outCoord()); float3 luminance = float3( dot(dst.rgb, lumMult) ); float3 sepia = dst.rgb * sepiaMatrix; float3 startMix = dst.rgb; startMix = (crossfade <= 1.0) ? startMix : luminance; float3 endMix = (crossfade <= 1.0) ? luminance : sepia; float mixMinusOne = crossfade - 1.0; float mixValue = (crossfade <= 1.0) ? crossfade : mixMinusOne; dst.rgb = mix(startMix, endMix, mixValue); } }