2009-09-06 79 views

回答

0

我並不真正瞭解Silverlight着色器,但我可以談論PixelBender。

pixelbender着色器需要位圖數據並每次對一個32位像素(實際上每個塊的4個浮點數)執行一次計算並對其進行計算。着色器的輸入是一個或多個圖像和可選參數,輸出始終是單個圖像。計算並行地發生在圖像中的所有像素之間,並且在像素之間是「無狀態的」,這意味着在評估一個像素時不能存儲數值並在另一個像素中使用它們。事實上,就像素評估而言,該功能被設計爲在無限大的圖像上操作,因此對圖像的大小和形狀無知。

可用於着色器的Flash Player的功能是整個pixelbender語言的子集。它排除了可重用的庫函數和區域函數等語言功能。

像素彎曲着色器可以在獨立於Flash Player的線程上在GPU上運行,從本質上允許在Flash中進行線程化處理。在實踐中,這隻適用於大批量數字運算,因爲pixelbender的無狀態和有限的功能。一串數字可以傳遞給着色器僞裝成位圖數據,並使用ShaderJob異步(或同步)運行。

語法方面,HLSL和PBJ都是C樣的並且基於GLSL。我的猜測是,考慮到微軟在圖形硬件方面的經驗,HLSL可能具有更好的性能和更多的功能。然而,Flash和Silverlight之間的差異遠遠超出了他們的着色器,我認爲Flash幾乎在每個領域都超越了Silverlight,所以它歸結爲哪個平臺能夠更好地滿足需求。

+1

感謝您的詳細信息。但是,Flash中的PB不能在GPU中運行。希望兩者之間會有更多的比較:) – 2009-12-04 05:10:39

+0

謝謝指出。我的錯! – 2009-12-07 17:42:08

+0

@Andy:顯然,Flash Player的(最終的)10.1版本將有一個GPU光柵化器,我認爲這需要Pixel Bender的GPU實現。 – 2009-12-08 06:26:08

1

我不瞭解可編程性,但就運行時性能而言,pixelbender非常棒。目前Silverlight 3不允許您在後臺執行此處理,但使用PixelBender即可。這很好,因爲在使用計算強度過濾器時UI不會受到太多影響。

這個論壇有一些好的pro和con的Silverlight 3: Pros and Cons。 我知道這個話題很舊,但我增加了它,因爲它似乎有點不完整。