Thursday, June 04, 2009

Compute Shader!

隨著DX11硬體推出的時間越來越近了, 公司之前就開始要求我們撰寫DX11的sample了, 但是我卻一直提不起勁來寫, 直到最近同事們都完成某些sample了, 才逼得我不得不動手了 :P

第一個sample是將之前DX10萬人狂奔的sample改成使用compute shader. 沒想到CS比起想像中更加的好用, 只花了一個工作天就完成大部分的移植了, 而其中最重要的CS計算動畫部分, 只花了2~3個小時而已! SM5中新加入的Struct Buffer讓shader寫起來超順暢, 不用在像之前得用一些trick來處理buffer中儲存的各種資料. 由於CS實在太好用了, 所以這次我直加把AI放入GPU中運算了. 由於Struct Buffer的特性, 我幾乎是直接將AI的C++碼直接貼到CS中就完成了, 看來將來要在CS中作物理, AI的運算是十分容易的.

由於我的範例中每個角色的每根骨頭都獨立的, 因此我可以很容易的試驗一下CS中threading的效能. 經過試驗, 適當的分配thread確實可以大幅增加程式的執行效率. 以我的範例為例, 將thread數目開到最大的效能是77fps, 但是不使用thread的話則只有60fps.

完成這個範例之後我打算再做一個用CS模擬clothing的範例, 也許在下一版的 DX SDK大家可以看得到這些範例喔 :)

BTW, 這一個月來都是使用 Windows 7來工作, 這一個月以來覺得Windows 7用起來十分順手, 也很穩定, 看來DX11的前景可期喔 :)

No comments: