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 字节代码文件:
打开 Adobe Pixel Bender 工具包。如有必要,从“生成”菜单中选择“打开 Flash Player 警告和错误”。
复制 Pixel Bender 代码清单,然后粘贴到 Pixel Bender 工具包的代码编辑器窗格中。
从“文件”菜单中,选择“为 Flash Player 导出内核滤镜”。
将 Pixel Bender 字节代码文件保存到 Flash 文档所在的目录。文件名应与示例说明中指定的名称一致。
每个示例的 ActionScript 部分都编写为一个类文件。要在 Flash Professional 中测试示例,请执行下列操作:
创建一个空的 Flash 文档并将它保存到您的计算机上。
创建一个新的 ActionScript 文件,并将它保存到 Flash 文档所在的目录中。文件名应与代码清单中的类的名称一致。例如,如果代码清单定义了一个名为 MyApplication 的类,则使用 MyApplication.as 名称保存 ActionScript 文件。
将代码清单复制到 ActionScript 文件中并保存该文件。
在 Flash 文档中,单击舞台或工作区的空白部分,以激活文档的“属性”检查器。
在“属性”检查器的“文档类”字段中,输入您从文本中复制的 ActionScript 类的名称。
使用“控制”>“测试影片”来运行程序
您将在预览窗口中看到示例的结果。
如何使用 ActionScript 示例中详细介绍了测试示例代码清单的方法。