Показать сообщение отдельно
Старый 21.12.2011, 21:57
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
А если так:
Код:
<languageVersion : 1.0;>

kernel NewFilter
<   namespace : "Your Namespace";
    vendor : "Your Vendor";
    version : 1;
    description : "your description";
>
{
    input image4 src;
    output pixel4 dst;

    void evaluatePixel()
    {
        dst = sampleNearest(src,outCoord());
        if(dst.a > 0.0){
            float2 s = outCoord();
            pixel4 p0 = sampleNearest(src, float2(s.x, s.y - 1.0));
            pixel4 p1 = sampleNearest(src, float2(s.x - 1.0, s.y));
            pixel4 p2 = sampleNearest(src, float2(s.x - 1.0, s.y - 1.0));
            pixel4 p3 = sampleNearest(src, float2(s.x - 1.0, s.y + 1.0));
            if((p0.a * p1.a * p2.a * p3.a) < 1.0) {
                p2 = sampleNearest(src, float2(s.x, s.y + 1.0));
                p3 = sampleNearest(src, float2(s.x + 1.0, s.y));
                dst.rgb = 0.2 * (dst.rgb + p0.rgb + p1.rgb + p2.rgb + p3.rgb);
            //  dst = float4(1.0, 0.0, 1.0, 1.0);
            } else {
                p2 = sampleNearest(src, float2(s.x, s.y + 1.0));
                p3 = sampleNearest(src, float2(s.x + 1.0, s.y));
                pixel4 p4 = sampleNearest(src, float2(s.x + 1.0, s.y - 1.0));
                pixel4 p5 = sampleNearest(src, float2(s.x + 1.0, s.y + 1.0));
                if((p2.a * p3.a * p4.a * p5.a) < 1.0) {
                    dst.rgb = 0.2 * (dst.rgb + p0.rgb + p1.rgb + p2.rgb + p3.rgb);
                //  dst = float4(0.0, 0.0, 0.0, 1.0);
                }
            }
        } 
    }
}