Personal tools

Views

Halftone hydra filter

From Adobe Labs

[edit]

Source

// Filter by Justin Everett-Church
// http://justin.everett-church.com
// October 2007

kernel halftone
{
    parameter int radius    
    <   minValue:int(0);
        maxValue:int(50); 
        defaultValue:int(4); >;
    parameter int offset
    <   minValue:int(0);
        maxValue:int(10); 
        defaultValue:int(2); >;
    const pixel4 blank = pixel4(0,0,0,0);
    void evaluatePixel(in image4 src, out pixel4 outputPixel)
    {
        int fullOffset = offset*radius;

        //what color should go out?
        float2 gridWidth = float2((radius)*2 +offset);
        float2 sampledPixelLocation = floor(float2(outCoord().x,outCoord().y+float(offset)) / gridWidth) * gridWidth;
        pixel4 sampledPixel = sampleNearest(src, sampledPixelLocation);

        //find center
        float2 centerPixel = floor(outCoord() / gridWidth) * gridWidth + (gridWidth/2.0);
        centerPixel.y-=float(offset)*.5;
        //how far from center?
        float dist = distance(centerPixel, outCoord());
        //halftoning
        pixel4 white = pixel4(1,1,1,1);
        float radius2 = float(radius)*(sampledPixel.r+sampledPixel.g+sampledPixel.b+sampledPixel.a)/4.0;
        white.a =1.0-(dist-radius2);
        outputPixel = white;
        
    }
}
Retrieved from "http://labs.adobe.com/wiki/index.php/Halftone_hydra_filter"