公司資訊‎ > ‎最新軟體消息‎ > ‎

Silverlight 3.0使用GPU加速繪圖運算效果

張貼者:2010年6月30日 下午8:00service orderble   [ eddie liu 已於 2010年8月12日 上午8:49 更新 ]

Silverlight 3.0使用GPU加速繪圖運算效果

Silverlight 3.0 GPU
近幾年來顯示卡GPU引擎在3D繪圖著色方面有著極為強大的運算力,而Silverlight 3.0也順勢搭上GPU列車,以此來加速繪圖動畫及影片播放效果。



自從MIX 09發表Silverlight 3.0 Beta版以來,其中Silverlight支援GPU運算,而我就一直在想,到底Silverlight能使用GPU到什麼程度?

但先說一下,如果你看到GPU就直接聯想到3D(雖然這是正常的),然後再預期Silverlight 3.0將利用GPU進行3D加速運算,如果你是這樣直覺聯想的話,那可真的是錯的,因為GPU繪圖引擎不一定只能進行3D方面的運算加速,至於進行哪些方面的效果運算?其實只有將Silverlight 2D平面物件快取成Bitmap,然後就可以跳過物件的Render生成階段,Render就由GPU來負責,Silverlight只負責"顯示"而已,是故繪圖呈現方面就會快很多。

不過呀。。。您也別誤以為GPU可以全面性接手Render圖像生成的工作,由Software轉換成全Hardware硬體加速,目前Silverlight 3.0規格還做不到(祭司小道消息,Silverlight 10應該就具備全面的GPU硬體加速了^^),那至於GPU可以做到哪些方面加速?主要有三個屬性Transforms、Rectangular Clipping、Blending,透過GPU可用來加速Silverlight物件及影片的運算效果。
Silverlight 3.0 GPU

顯示卡GPU引擎在3D繪圖著色方面有著極為強大的運算力,成為當今所有3D電玩遊戲必備的硬體輔助,甚至四核心CPU以軟體進行3D運算能力也遠遠不及一顆好的GPU繪圖引擎,而使用GPU運算力來加速向量繪圖對微軟的應用程式來說並不是頭一遭,早自2007年第一版的WPF就已採用,而Silverlight 3.0也順應這股GPU運算的潮流。

另外。即便是MIX 09微軟專家的展示,我仍然覺得Silverlight 3.0技術本身的黑箱太多了,很多功能架構,底層作業都是黑箱,微軟最頂級的專家或文章談到的也很少少少......,這是和ASP.NET技術相較而言,至少ASP.NET底層的運作都有很多專欄技術文章深入講解,但Silverlight 3.0的功能。。你只能"用",至於問為什麼。。那就別問太多了。。。簡單舉例,Silverlight與GPU溝通的是直接或間接?若是間接又是由哪個軟體組件單元來負責?像WPF是間接由一個dll組件單元(祭司知道這個單元名字,因為在2007年的WPF研討會上我有介紹)與GPU進行溝通,而因為有中間人的緣故,所以WPF的2D與3D運算效能當然是不可能與DirectX這種效能相比,一定會有效能上的減損;那WPF是有中間人,難道Silverlight就比WPF更有能耐??理論上當然不可能,所以Silverlight理應是透過一個中介軟體來負責,況且再怎麼說Silverlight的環境仍然是算Sandbox,安全性的緣故不太可能讓它直接可以呼叫GPU硬體的。

那如果您想知道Silverlight如何開啓GPU速運算的,以下就是三個步驟,黄色標示的屬性便是其重點之所在。
Silverlight 3.0 GPU Code


至於Silverlight 3.0支援3D方面。。只支援Perspective 3D(一種視角的效果),有人稱它叫2.5D,因為原本我還預期它能支援Polygon這種3D模型運算(WPF的3D功能就強多了,是真實的3D功能),看來只是我個人的一廂情願,一種聊勝於無的Perspective 3D大家就加減用吧。。畢竟Silverlight 3.0是免費的你想怎樣!我又能怎樣?哈!

註:
至於Silverlight 3.0到底增加了多少功能,且待我這期2009年四月份的MSDN Flash電子報文章再介紹,我正趕稿中^_^。
Comments