PixelBender是Adobe公司的一项图像处理算法开发工具,该工具基于GLSL(OpenGL Shader Language),使用它你的图像处理算法能力充分利用GPU和多核心CPU的能量,提高图像处理的速度。当然,如果想要最大程度的提高你算法的速度,那么你的算法必须适合并行话,否则,有的时候反而降低的效率。该开发工具虽然没有CUDA工具的强大,但是该开发工具确实相当简单。不过,你利用该工具开发出来的kernel目前只能用于Adobe家的产品里面,如Photoshop CS4, After Effect CS4等,这有点保守了。
说了那么多,先来介绍一个该工具自带的一个例子吧:
// 指定语言版本,目前是1.0版本
<languageVersion: 1.0;>
// 一些注释性文字
kernel InvertRGB
< namespace : "AIF";
vendor : "Adobe Systems, Inc.";
version : 2;
description : "Invert the Red, Green and Blue channels of an image"; >
{
// 输入图像
input image4 src;
// 输出图像
output float4 dst;
// kernel,算法的核心
void
evaluatePixel()
{
// 获取当前像素值,outCoord获取当前像素坐标,sampleNearest()函数进行值采样,从而获取像素值
float4 inputColor = sampleNearest(src, outCoord());
// 计算新的RGB值,反色
dst.rgb = float3(1.0, 1.0, 1.0) - inputColor.rgb;
// 设置Alpha通道的值,1.0为不透明,0.0为全透明
dst.a = inputColor.a;
}
}
这里有个小提示:浮点型的数值一定要跟小数点,否则会报错!
Kernel在显卡中的多个stream processor同时运行,实现的算法的并行处理。