Fluid idea for Life

随笔,杂记

一个简单实用的滤镜

这是在Adobe官网上看到的一个滤镜,功能简单实用,而且代码很少,非常适合学习。原址:http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1557018 [kml_flAShembed movie="http://www.fluidea.cn/blog/wp-content/uploads/2008/09/fliterex2.swf" height="232" width="250" /]

smudger.pbk代码如下:

<languageVersion: 1.0;></p>
<p>kernel smudge</p>
<p><   
    namespace:          "smudger";
    vendor:             "Frank Reitberger";
    version:            1;
    description:        "generates a smudged pattern";
></p>
<p>{
    parameter float amount
    <
        minValue:     float(0.0);
        maxValue:     float(5.0);
        defaultValue: float(0.5);
        description:  "amount";
    >; </p>
<p>    input image4 src;
    output pixel4 dst; </p>
<p>    void
    evaluatePixel()
    {
        //outCoord函数返回当前正在处理的像素的中点坐标
        float2 pos   = outCoord();</p>
<p>        //////////////////////////
        // patterize transition
        //////////////////////////  
        float nx     = 5.0 * (cos(pos.y / 5.0));
        float ny     = 5.0 * (cos(pos.x / 6.0));  
        float2 pnt   = float2(  nx*ny , nx* ny  );
        //取样操作
        dst = sampleNearest( src, outCoord() + pnt * amount);          
    }        
}

Pixel Bender 是类似C语言的图形处理语言,基于GLSL。如果有过OpenGL/GLSL编程经验的人,就很熟悉了。 使用Pixel Bender,我们可以编写很多自己的滤镜,在Flash中使用。可以嵌入进去,还可以在运行期间动态加载滤镜。

申明语法版本

一个pbk文件,必须包含一个kernel,类似一个类

evaluatePixel()函数是必须的,是程序的入口,好比构造函数,运行时将自动执行。

parameter 申明参数,提供外部控制,As就是使用参数来修改滤镜。

input 和output:输入和输出的位图数据

evaluatePixel将对图片的所有像素作用,而不只是单一一个像素。

Tags: AS, Pixel Bender

上一篇: 在flash中使用自定义滤镜
下一篇: 完成了人生第一件大事

访客评论

  1. #1 walktree 2008-09-13, 1:25 AM
    这里还有一个更酷的类似效果,sampleNearest真是一个好东西啊  :grin:
    http://theflashblog.com/?p=432

发表评论

评论内容:

点击获得Trackback地址