Thursday, October 13, 2005

First Demo

今 天在ATI做了第一個Demo,基本上不是什麼很難的技術,主要是要熟悉一下ATI SDK framework。這個demo主要是使用DirectX 9 的instancing技術,使用兩個Vertex Stream,便可以只呼叫一個DrawIndexPrimitive()就將整個草原繪出。因為只呼叫一個function就繪出相當大量的的物件,所以 效能可以比一般每個草叢呼叫一次的方式增強不少。這種方式最適合用於物件面數不多,而且物件除了些許屬性不同外,其他資料都相同的情況,比如說一大群士 兵,怪獸或是像我做的草叢。在這個Demo中,每個草叢都有自己的animation,所以整個草原的動態相當真實,效率也還不錯。

5 comments:

Anonymous said...

Cool~ 這個功能是不是一定要Shader 3.0以上才有呢..
不知道fps多少...

每天早上上班都會看一下你的網誌..
呵呵..期待你其他的作品

fallingCAT said...

要使用hardware instancing,硬體必須支援VS 3.0以上沒錯,這個demo在mobile 9700上大約可跑到22fps,如果使用多個DrawIndexPrimitive()呼叫則會掉到8fps.
這個demo共畫出128x128顆草叢,所以如果針對view frustum再做culling,效率應該還不錯,最主要是這方法沒有CPU bound,完全由GPU來負責,所以可以留下許多時間給CPU做計算.

Anonymous said...

好屌....O_O

你們那有缺美術嗎? 嘿嘿~

fallingCAT said...

我們這的薪水請不起你吧 ^_^

fallingCAT said...

忘了提一下,在ATI的卡上,R3xx以上晶片都有這個功能,只是要用特別的方法開啟,有興趣的人可以參考ATI SDK的instancing sample.