I haven't been able to find much on performance or limitations of Core Image kernels beyond the statement that you can't use variable loop limits. I thought I could just use fixed limits bigger than needed, like so:

kernel vec4 blur(sampler image, float radius)
{
        vec2            basePos = destCoord();
        int             i, j;
        vec4            sum = vec4(0.0);
        float                   radSq = radius * radius;
        vec2            delta;
        
        for (i = -10; i <= 10; ++i)
        {
                delta.x = float(i);
                for (j = -10; j <= 10; ++j)
                {
                        delta.y = float(j);
                        sum += ((dot(delta, delta) < radSq)?
                                sample( image, basePos + delta ) :
                                vec4(0));
                }
        }
        
        sum.rgb /= sum.a;
        sum.a = 1.0;
        
        return sum;
}


As is, this works, albeit more slowly than I would like. But what I don't understand is that if I change those loop limits from 10s to 20s, it doesn't just take 4 times longer, weird stuff happens. Like the whole screen flickers, and Quartz Composer hangs, and then the whole machine hangs requiring a forced restart. What's up with that?

By the way, someone will doubtless notice that I am essentially doing a disk blur here, and point out that Apple ships a disk blur filter. What I ultimately want to do is more complicated, this is just a learning exercise along the way.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to