Основные сведения о шейдерах Pixel Bender

Flash Player 10 и более поздних версий, Adobe AIR 1.5 и более поздних версий

Adobe Pixel Bender — это язык программирования, который служит для создания или обработки графического содержимого. С помощью Pixel Bender можно создать ядро, которое также называется шейдером. Шейдер определяет одну функцию, которая выполняется индивидуально для каждого пиксела изображения. В результате каждого вызова функции цвет пиксела в конкретном месте изображения меняется. Можно настроить операцию, задав вводимые изображения и значения параметров. В ходе одного выполнения шейдера ввод и значения параметров остаются неизменными. Изменяются только координаты пиксела, цвет которого является результатом вычисления функции.

Где это возможно, функция шейдера вызывается параллельно для нескольких пикселных координат вывода. Это ускоряет работу шейдера и может повысить быстродействие в целом.

В ActionScript с помощью шейдера можно без труда создать эффекты трех типов:

  • заливка рисунка;

  • режим наложения;

  • фильтр.

Шейдер также может выполняться в автономном режиме. В автономном режиме результат выполнения шейдера получается напрямую, а не через предварительное определение предполагаемого использования. Результат можно получить в виде графических данных, либо в виде двоичных или числовых данных. Данные необязательно должны быть графическими. Таким образом можно ввести в шейдер набор данных. Шейдер обрабатывает данные, после чего можно просмотреть возвращенные им обработанные данные.

Поддержка Pixel Bender доступна начиная с Flash Player 10 и Adobe AIR 1.5. Наложения, фильтры и заливки Pixel Bender не поддерживаются при визуализации с использованием графического процессора. На мобильных устройствах шейдеры Pixel Bender выполняются при визуализации с использованием ЦП. Однако производительность существенно отличается от производительности на персональном компьютере. Многие программы шейдеров могут выполняться со скоростью несколько фреймов секунду.

Важные понятия и термины

В следующем справочном списке содержатся важные термины, которые встречаются при создании и использовании шейдеров Pixel Bender.

Ядро
Применительно к Pixel Bender, ядро — это то же самое, что шейдер. С помощью Pixel Bender код определяет ядро, которое, в свою очередь, определяет одну функцию, которая выполняется индивидуально для каждого пиксела изображения.

Байт-код Pixel Bender
В процессе компиляции ядро Pixel Bender преобразуется в байт-код Pixel Bender. Обращение к байт-коду и его выполнение осуществляются во время выполнения.

Язык Pixel Bender
Язык программирования, используемый для создания ядра Pixel Bender.

Pixel Bender Toolkit
приложение, которое используется для создания файла байт-кода Pixel Bender из исходного кода Pixel Bender. Этот набор инструментов позволяет писать, тестировать и компилировать исходный код Pixel Bender.

Шейдер
В данном документе шейдером называется набор функций, написанный на языке Pixel Bender. Код шейдера создает визуальный эффект или выполняет вычисление. И в том, и в другом случае шейдер возвращает набор данных (обычно это пикселы изображения). Шейдер выполняет одну и ту же операцию в каждой точке данных. При этом отличаются только координаты выводимого пиксела. При написании шейдера ActionScript не используется. Он пишется на языке Pixel Bender и компилируется в байт-код Pixel Bender. Шейдер можно встроить в SWF-файл во время компиляции или загрузить как внешний файл во время выполнения. В любом случае он вызывается кодом ActionScript путем создания объекта Shader, который затем связывается с байт-кодом шейдера.

Ввод шейдера
Сложный ввод, как правило, графические данные растрового изображения, которые передаются шейдеру для выполнения вычислений. Для каждой переменной ввода, определенной в шейдере, используется одно значение (то есть одно изображение или набор двоичных данных) в процессе выполнения шейдера.

Параметр шейдера
Одно значение (или небольшой набор значений) передаваемых шейдеру для выполнения вычислений. Каждое значение параметра определяется для одного выполнения шейдера, это значение не меняется на протяжении всей операции.

Работа с примерами кода

Может потребоваться тестирование приведенных примеров кода. Тестирование кода включает его выполнение и просмотр результатов в созданном SWF-файле. Во всех примерах создается содержимое с помощью API-интерфейса рисования, который использует эффект шейдера или изменяется под его действием.

Большая часть примеров состоит из двух частей. В первой части представлен исходный код Pixel Bender для шейдера, используемого в примере. Сначала с помощью Pixel Bender Toolkit необходимо скомпилировать исходный код в файл байт-кода Pixel Bender. Чтобы создать файл байт-кода Pixel Bender, выполните следующие действия.

  1. Откройте программу Adobe Pixel Bender Toolkit. При необходимости в меню «Build» (Собрать) выберите «Turn on Flash Player warnings and errors» (Включить предупреждения и ошибки проигрывателя Flash Player).

  2. Скопируйте код Pixel Bender и вставьте его в панель редактора кода Pixel Bender Toolkit.

  3. В меню «File» (Файл) выберите «Export kernel filter for Flash Player» (Экспортировать ядро фильтра для проигрывателя 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 ».