Adobe 的 PhotoShop 是一套知名、功能強大的影像處理軟體。知名到什麼程度呢?知名到 PhotoShop 這個軟體的名字,現在已經可以當動詞來用了…
而目前 PhotoShop 最新的版本,是 CS4;在這一版中,PhotoShop 加入了不少創新的功能!部分的介紹可以參考之前的文章《Adobe 即將推出 CS4 系列產品!》。其中 Heresy 比較注意的幾點是:3D 物件的支援、x64 版本、GPU 加速的引進。而這次要講的,主要就是「GPU 加速的引進」了。
而 Adobe 在 CS4 引進的 GPGPU 功能,不是用 nVidia CUDA 做的,而是採用更普遍的 OpenGL 來做!雖然比較難寫,但是這樣不管哪家的顯示卡,只要 128MB 以上的顯示卡記憶體,並有支援 OpenGL 2.0 以及 Shader Model 3.0,都可以使用!也就是 ATI X1000 系列和 nVidia GeForce 6 系列以後的卡,理論上都是可以的∼
如果要開啟這項功能呢,只要在 PhotoShop 的「編輯」(Edit) 選單中,選取「偏好設定」(Preferences) 裡的「效能」(Performance) ,就可以看到「啟動 OpenGL 繪圖」(Enable OpenGL Drawing) 了!
不過,雖然 PhotoShop CS4 號稱引進了 GPGPU 的功能,實際上真的有用到的功能並不多;有用到 GPU 加速的功能包含了:
- 所有縮放顯示層級的平滑顯示 (Smooth Display at ALL Zoom Levels)
- 動畫顯示的縮放工具 (Animated Zoom Tool)
- 執行單節縮放時的動畫切換 (Animated Transitions when doing a One Stop Zoom)
- 手拋影像 (Hand Toss Image)
- 鳥瞰檢視 (Birdseye View)
- 旋轉版面 (Rotate Canvas)
- 非正方形像素影像的平滑顯示 (Smooth Display of Non Square Pixel Images)
- 像素格點 (Pixel Grid)
- 移動顏色符合 GPU (Move Color Matching to the GPU)
- 透過 GPU 繪製筆尖編輯回饋 (Draw Brush Tip Editing Feedback via GPU)
- 3D GPU 功能包括:
- 3D 加速 (3D Acceleration)
- 3D 軸 (3D Axis)
- 3D 光源 Widget (3D Lights Widget)
- 透過 Direct To Screen 加速 3D 互動 (Accelerated 3D Interaction via Direct To Screen)
關於這部分的細節,可以參考 Adobe 官網的《Photoshop CS4 中的 GPU 與 OpenGL 功能以及限制》(英文版)一文。
不過這些功能都不是 Heresy 這邊要講的重點。Heresy 要講的是 Adobe 官方在上市前就預告會推出的一個 GPGPU 外掛,那就是「AdobeR Pixel Bender」。這東西基本上是 Adobe 新推出的一個影像視訊處理的架構,透過這個架構可以製作出不受平台影響限制濾鏡和特效(可以在 CPU 和 GPU 上跑,也可以充分發揮多核心的效能),並在 Adobe 的多個產品使用(基本上,有 PhotoShop、Flash Player、After Effects)。
Adobe 官方目前也已經釋出了用來製作 Pixel Bender 的專屬圖形介面工具:Pixel Bender Toolkit,這樣使用者就可以寫出自己想要的 GPU 版的濾鏡效果了!而 Adobe 也有提供了一個 Pixel Bender Exchange 的網頁,可以讓大家分享自己開發的 Pixel Bender 了∼
Pixel Bender 本身的語言,則是包含了影像處理核心的 Pixel Bender kernel language 和以 XML 為基礎,透過多個 kernel 建立更複雜效果的 Pixel Bender graph language。不過,這部分的細節,就留待候述了∼
如果要在 PhotoShop CS4 裡使用 Pixel Bender 該怎麼做呢?首先,就是要下載「Pixel Bender Plug-in for Photoshop CS4」,下載網頁和 Toolkit 的網頁是同一個,在最下方就可以找到下載連結了∼目前只有英文版,有 32 位元版(Windows、Mac),也可以用在 64 位元版(Windows)。
檔案的格式是 Adobe 的 plugin 專屬格式,副檔名是 MXP;理論上點兩下的話,就會自動以「Adobe Extension Manager CS4」程式開啟、安裝。當然,也可以自行到程式集中,找到這個程式來安裝 plug-in;安裝完後,應該會像右圖一樣,可以看到已經安裝的 plug-in 的版本。
不過,在 Vista 下,可以要以系統管理者的權限來執行 Extension Manager 才能安裝;而且,似乎也不能同時安裝 32 位元版和 64 位元版的 plug-in。
而安裝完後,再開啟 PhotoShop,就可以在「filter」裡,發現多出一個「Pixel Bender」了!而裡面只有一個選項,那就是「Pixel Bender Gallery…」。
而點下去後,就會出來 Pixel Bender Plugin 的視窗了!他的介面大概就像下面的圖一樣;固定的元件就是左方的圖片檢視區,右邊上方的基本控制區。在基本控制區裡,有「OK」和「Cancel」兩個按鈕,如果鍵盤壓住 [Alt] 的話,「Cancel」會變成「Reset」,可以把參數設定回預設值。
而目前裝完 plugin 後,會有十二個內建的效果,包括:CircleSplash、Convergence、Fisheye、Hole、Kaleidoscope、Pixelate、RippieBlicks、Smudge、Spherize、SpinRadiaBlur、TubeView、Twirl。選取不同的效果後,下方都會有不同的參數可以進行調整。
此外,還有一個「Process on GPU」的核選方塊,要把它勾起來,才是用 GPU 計算的!不然,還是會用 CPU 來跑。所以,也可以試試看同一個效果,用 CPU 和用 GPU 處理起來的時間會差多久了∼
如果覺得內建的效果不夠多?可以考慮到 Pixel Bender Exchange 上找找,有沒有別人寫得更合用的(不過要下載要註冊啊…);也可以自己用 Pixel Bender Toolkit 來實作自己要的效果。
現階段,大概就這樣吧∼之後看看有空,再來寫 Pixel Bender 的製作教學吧。
附註:相較於 Pixel Bender,nVidia 之前也有發布過使用 CUDA 加速的 PhotoShop filter,但是數量頗少,設定參數也不多。而且更重要的是,只能在 nVidia 的顯示卡上跑。