看板 Flash 關於我們 聯絡資訊
我也來分享跟Flash比較有關的吧~! 廢話不多說,直接進入主題: Pixel Bender的濾鏡檔案要給Flash用需要先匯出成Bytecode,而此Bytecode和swf中 ,ActionScript的Bytecode形式很像,這樣處理可以加快速度。而且在Flash中,Pixel Bender Bytecode是用CPU運算的而不是GPU (因為若用GPU運算,有些電腦顯示卡老舊或很 慢,他們設計Flash Player 是希望在大部分99%的電腦中都能順利使用)。 此外,為了處理像素運算,Flash Player會另開一個Thread處理,以避免造成運算量 大時,會有無法回應的情況(如無限迴圈之類的),若使用者的電腦使用多核心CPU,也會分 配各核心一起運算以加快速度,因此這兩年的電腦執行起來應該是沒問題的。 而且,AVM執行JIT (Just In Time) Code (即轉譯過的AS Code)時,限制PixelBender Kernel 的Buffer只能小於32KB,若是超過(例如複雜大量的運算),則速度會明顯變慢,約 慢10倍左右。 為了在不同電腦上執行,使用C語言編譯Flash Player,但每台電腦的CPU浮點運算和 編譯時的C Library定義以及電腦不同,所以Kernel運算出來的圖形很可能每個人看到的有 些微差異。又在蘋果電腦上,因為C 語言的 Math Library 有特殊的寫法,所以在蘋果作 業系統上執行某些Kernel會稍微快一點哦。 以下是幾點需注意的: 1. 因為在Flash Player 10 中支援Color Space,所以若用Pixel Bender濾鏡處理,會先 將像素進行Color Space 和Alpha處理才進行運算喔 2. 可以將濾鏡用在ByteArray, Vector, Blend Mode 和成為圖形的填充色 3. Pixel Bender裡的outCoord() 或是有牽涉到座標的,範圍在 -4194304 ~ 4194303 之間 (24bit) 4. 為了處理反鋸齒(Anti-Aliasing),每次像素運算會一次算4個像素 5. 在Flash中,Kernel 的判斷式只能用 if-else 6. Kernel不會進行cache , 所以每次執行(如圖形Fill,即generate類濾鏡)的話,都要重 新運算喔 以下是Flash Player 10 部分 1. 目前Flash Player 還在進行開發,但可以enable GPU mode,代價是frame rate =60 因為螢幕更新頻率目前大部分螢幕都是60Hz (這就跟顯示卡有關了,而且各顯示卡顯 示出來的畫面差異很大,而且Pixel Bender也不會在GPU下render,所以這是個沒用的 mode ?? 但是加快顯示速度倒是有些用......) 2. 正式版的Flash Player 10 出來速度會快一些,因為現在還在開發有限制部分功能... 3. 熱騰騰的Language Reference出來囉!!(注意,未來功能可能會改變,僅供參考) http://0rz.tw/d34aV 按index開啟即可 4. 開啟GPU mode 不代表可以加速喔,需要看你的內容(廢mode?),不過反鋸齒做的比較好 ,在Windows使用DirectX 9 (CJ Cat 看起來很需要XD),在Linux和Mac使用OpenGL 5. 其他新特性如讀取檔案和儲存檔案等,會開啟檔案瀏覽視窗,代表你不能在沒有經過使 用者同意進行暗地裡的檔案存取(這樣不太好....不過進步很多了),不過在瀏覽器裡一 樣可以使用喔(這樣就蠻不錯的) 6. ....等我想到orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.112.18
cjcat2266:呼呼...看來我的AuxGeom還保有它的地位XD 05/23 00:44
cjcat2266:...還有為什麼你覺得我需要DX9?我已經安裝了呀 @@?? 05/23 00:45
cjcat2266:話說,在Mac上面跑比Windows順很多,有什麼原因嗎? 05/23 02:08
BIAN:好文好文....推一個... 05/23 18:24
ComicMan:非常非常受用的資訊 05/24 15:24