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 檔中,或者在執行階段將著色器當做外部檔案來載入。無論是哪一種情況,您都可以藉由建立 Shader 物件並將其連結至著色器位元組碼,透過 ActionScript 來存取著色器。

著色器輸入
提供給著色器執行計算的複雜輸入 (通常是點陣圖影像資料)。在著色器執行計算期間,會使用單一值 (也就是單一影像或一組二進位資料) 做為著色器中每個已定義之輸入變數的值。

著色器參數
提供給著色器執行計算的單一值 (或有限的一組值)。每個參數值都是針對一次著色器計算作業所定義,並且在執行期間,都會使用相同的值。

逐步執行程式碼範例

您可測試列出的範例程式碼。測試程式碼的步驟包括執行程式碼,以及檢視所建立 SWF 的結果。所有範例都會使用繪圖 API (著色器特效會使用或修改此繪圖 API) 來建立內容。

大部分列出的範例程式碼都包含兩個部分:其中一個部分是範例中使用之著色器的 Pixel Bender 原始碼。您必須先使用 Pixel Bender Toolkit 將原始碼編譯為 Pixel Bender 位元組碼檔案。請遵循下列步驟,建立 Pixel Bender 位元組碼檔案:

  1. 開啟 Adobe Pixel Bender Toolkit。如有必要,請從「建置」選單選擇「開啟 Flash Player 警告和錯誤」。

  2. 複製列出的 Pixel Bender 程式碼,然後貼至 Pixel Bender Toolkit 的程式碼編輯器窗格。

  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 範例詳細說明這些用於測試範例程式碼清單的技術。