有人可以解釋Flash中的Pixel Bender和Silverlight中的Pixel Shader(HLSL)在編程靈活性和運行時性能方面的差異?Pixel Bender(在Flash中)和像素着色器(在Silverlight中)之間的比較
回答
我並不真正瞭解Silverlight着色器,但我可以談論PixelBender。
pixelbender着色器需要位圖數據並每次對一個32位像素(實際上每個塊的4個浮點數)執行一次計算並對其進行計算。着色器的輸入是一個或多個圖像和可選參數,輸出始終是單個圖像。計算並行地發生在圖像中的所有像素之間,並且在像素之間是「無狀態的」,這意味着在評估一個像素時不能存儲數值並在另一個像素中使用它們。事實上,就像素評估而言,該功能被設計爲在無限大的圖像上操作,因此對圖像的大小和形狀無知。
可用於着色器的Flash Player的功能是整個pixelbender語言的子集。它排除了可重用的庫函數和區域函數等語言功能。
像素彎曲着色器可以在獨立於Flash Player的線程上在GPU上運行,從本質上允許在Flash中進行線程化處理。在實踐中,這隻適用於大批量數字運算,因爲pixelbender的無狀態和有限的功能。一串數字可以傳遞給着色器僞裝成位圖數據,並使用ShaderJob異步(或同步)運行。
語法方面,HLSL和PBJ都是C樣的並且基於GLSL。我的猜測是,考慮到微軟在圖形硬件方面的經驗,HLSL可能具有更好的性能和更多的功能。然而,Flash和Silverlight之間的差異遠遠超出了他們的着色器,我認爲Flash幾乎在每個領域都超越了Silverlight,所以它歸結爲哪個平臺能夠更好地滿足需求。
我不瞭解可編程性,但就運行時性能而言,pixelbender非常棒。目前Silverlight 3不允許您在後臺執行此處理,但使用PixelBender即可。這很好,因爲在使用計算強度過濾器時UI不會受到太多影響。
這個論壇有一些好的pro和con的Silverlight 3: Pros and Cons。 我知道這個話題很舊,但我增加了它,因爲它似乎有點不完整。
- 1. 關閉Pixel Bender中的顏色範圍
- 2. 比較C中的真彩色像素
- 3. 使用着色器比較圖像
- 4. FLEX,JavaFX和Silverlight之間的比較
- 5. 簡單的Pixel Bender模糊?
- 6. 所有像素的高效像素着色器總和
- 7. Pixel Bender訪問iOS API?
- 8. 更多Pixel Bender過濾器(FLEX)
- 9. 如何在應用Pixel Bender過濾器後展開影片剪輯? (Flash)
- 10. OpenGL ES 1.1/2.0着色器在Android上比較圖像
- 11. C++在像素着色器的問題
- 12. 帶有Flash的Pixel Bender會使用GPU嗎?
- 13. 比較像素以RGB顏色
- 14. HLSL:在像素着色器中獲取紋理尺寸
- 15. 在Java中着色RGB像素
- 16. Direct2D中的像素着色器渲染沿着中間的錯誤
- 17. 像素着色器模型>在FireMonkey
- 18. WebGL:在着色器之間切換
- 19. iOS CGImageRef像素着色器
- 20. 如何在FP9包裝文件中使用Pixel Bender
- 21. 保存由Pixel Bender生成的ByteArray
- 22. Pixel Bender用於flex3/as3的色度鍵控代碼
- 23. 基於像素比較的2幅圖像之間的差異
- 24. Silverlight:多邊形與像素着色器結合
- 25. WPF或Silverlight 3像素着色器點畫效果
- 26. Action Script3/Pixel Bender複合模糊效果?
- 27. 添加劑將圖像的邊緣與Pixel Bender混合
- 28. 在.NET中「着色」圖像
- 29. 在Java中着色圖像
- 30. 在SDL2中加載像素着色器失敗
感謝您的詳細信息。但是,Flash中的PB不能在GPU中運行。希望兩者之間會有更多的比較:) – 2009-12-04 05:10:39
謝謝指出。我的錯! – 2009-12-07 17:42:08
@Andy:顯然,Flash Player的(最終的)10.1版本將有一個GPU光柵化器,我認爲這需要Pixel Bender的GPU實現。 – 2009-12-08 06:26:08