Pixel Bender 着色器基础知识

Flash Player 10 和更高版本,Adobe AIR 1.5 和更高版本

Adobe Pixel Bender 是一种编程语言,用于创建或操作图像内容。使用 Pixel Bender(也称为着色器)创建内核。着色器定义了一个可对图像的每个像素单独执行的单一函数。对该函数的每次调用都将得到图像中该像素坐标处的输出颜色。可通过指定输入图像和参数值来自定义该操作。在着色器的单次执行中,输入值和参数值是不变的。唯一发生变化的是像素(其颜色是函数调用的结果)的坐标。

对多个输出像素坐标调用着色器函数时,将尽可能采用并行方式。这样会改进着色器性能,提供高性能的处理能力。

在 ActionScript 中,可使用着色器轻松地创建三种类型的效果:

  • 绘制填充

  • 混合模式

  • 滤镜

着色器也可以按独立模式执行。使用独立模式时,将直接访问着色器的结果,而非预先指定着色器的用途。结果可以按图像数据或者二进制或数值数据的形式访问。该数据完全不必是图像数据。这样一来,您可以为着色器输入一组数据。着色器将处理该数据,然后您可以访问着色器返回的结果数据。

从 Flash Player 10 和 Adobe AIR 1.5 开始支持 Pixel Bender。在 GPU 呈现下不支持 Pixel Bender 混合、滤镜和填充。在移动设备上,Pixel Bender 着色器在 CPU 呈现下运行。但是,其性能与在桌面计算机上相差甚远。许多着色器程序每秒只能执行几个帧。

重要概念和术语

以下参考列表包含创建和使用 Pixel Bender 着色器时会遇到的重要术语:

内核
对于 Pixel Bender,内核就相当于着色器。通过 Pixel Bender,您的代码定义了一个内核,它定义了可对图像的每个像素单独执行的单一函数。

Pixel Bender 字节码
编译 Pixel Bender 内核时,它会转换为 Pixel Bender 字节码。在运行时访问并执行字节码。

Pixel Bender 语言
用于创建 Pixel Bender 内核的编程语言。

Pixel Bender 工具包
用于根据 Pixel Bender 源代码创建 Pixel Bender 字节码文件的应用程序。您可以使用该工具包编写、测试和编译 Pixel Bender 源代码。

Shader
对于此文档而言,着色器是用 Pixel Bender 语言编写的一组功能。着色器的代码会创建视觉效果或执行计算。在任一情况下,着色器都返回一组数据(通常为图像的像素)。着色器在每个数据点上执行的操作都相同,唯一的区别是输出像素的坐标。着色器不是用 ActionScript 编写的。它用 Pixel Bender 语言编写,并编译为 Pixel Bender 字节代码。着色器可在编译时嵌入 SWF 文件,也可在运行时作为外部文件加载。无论采用上述哪一种方式,都要在 ActionScript 中访问着色器,方法是先创建一个 Shader 对象,然后将其链接到着色器字节代码。

着色器输入
一种复杂的输入,通常为位图图像数据,提供给着色器供其计算之用。对于着色器中定义的每个输入变量,着色器的整个执行过程都使用单一变量值(即,一个图像或一组二进制数据)。

着色器参数
提供给着色器的单个值(或限定的一组值),供着色器进行计算用。着色器的每次执行中都会定义各个参数值,该值在着色器的整个执行过程中保持不变。

完成代码示例

您可能想测试提供的示例代码列表。测试代码包括运行代码,并在创建的 SWF 中查看结果。所有示例都使用绘图 API 创建内容,这类 API 使用着色器效果,或由该效果进行修改。

大多数示例代码清单都包含两个部分。一部分是此示例中所用着色器的 Pixel Bender 源代码。您必须首先使用 Pixel Bender 工具包将源代码编译成 Pixel Bender 字节代码文件。请遵循以下步骤创建 Pixel Bender 字节代码文件:

  1. 打开 Adobe Pixel Bender 工具包。如有必要,从“生成”菜单中选择“打开 Flash Player 警告和错误”。

  2. 复制 Pixel Bender 代码清单,然后粘贴到 Pixel Bender 工具包的代码编辑器窗格中。

  3. 从“文件”菜单中,选择“为 Flash Player 导出内核滤镜”。

  4. 将 Pixel Bender 字节代码文件保存到 Flash 文档所在的目录。文件名应与示例说明中指定的名称一致。

每个示例的 ActionScript 部分都编写为一个类文件。要在 Flash Professional 中测试示例,请执行下列操作:

  1. 创建一个空的 Flash 文档并将它保存到您的计算机上。

  2. 创建一个新的 ActionScript 文件,并将它保存到 Flash 文档所在的目录中。文件名应与代码清单中的类的名称一致。例如,如果代码清单定义了一个名为 MyApplication 的类,则使用 MyApplication.as 名称保存 ActionScript 文件。

  3. 将代码清单复制到 ActionScript 文件中并保存该文件。

  4. 在 Flash 文档中,单击舞台或工作区的空白部分,以激活文档的“属性”检查器。

  5. 在“属性”检查器的“文档类”字段中,输入您从文本中复制的 ActionScript 类的名称。

  6. 使用“控制”>“测试影片”来运行程序

    您将在预览窗口中看到示例的结果。

如何使用 ActionScript 示例中详细介绍了测试示例代码清单的方法。