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 位元組碼檔案:
開啟 Adobe Pixel Bender Toolkit。如有必要,請從「建置」選單選擇「開啟 Flash Player 警告和錯誤」。
複製列出的 Pixel Bender 程式碼,然後貼至 Pixel Bender Toolkit 的程式碼編輯器窗格。
從「檔案」選單選擇「匯出核心濾鏡供 Flash Player 使用」。
將 Pixel Bender 的位元組碼檔案儲存在與 Flash 文件相同的目錄中。檔案的名稱必須與範例描述中指定的名稱相符。
每個範例的 ActionScript 部分都是撰寫為類別檔案。在 Flash Professional 中測試範例:
建立空白的 Flash 文件,並儲存在電腦上。
建立新的 ActionScript 檔案,並將它儲存在此 Flash 文件所在的相同目錄中。檔案的名稱必須和列出的程式碼中的類別名稱相符。例如,如果列出的程式碼定義名為 MyApplication 的類別,就會使用 MyApplication.as 這個名稱來儲存 ActionScript 檔案。
將列出的程式碼複製到 ActionScript 檔案中,並儲存該檔案。
在 Flash 文件中按一下「舞台」或工作區的空白部分,以啟動文件的「屬性」檢測器。
在「屬性」檢測器的「文件類別」欄位中,輸入從文字中所複製 ActionScript 類別的名稱。
使用「控制 > 測試影片」執行程式
您將會在預覽視窗中看到範例的結果。
如何使用 ActionScript 範例詳細說明這些用於測試範例程式碼清單的技術。