星期二, 12月 19, 2006

Image Filter & Pixel Shader

前一陣子用C#試寫了幾支Image Filters,雖然效果是ok~~ 但是其實performance並沒有很好...

如果用C++寫的話 應該可以更快~~~ (尤其C#沒有inline or macro,所以用procedure會變慢)

然後如果還是不夠 就只好用assembly或是SSE/MMX來加速~~ 雖然這方面我沒試過.....


如果要作Interative Arts之類的東西 所有的Image Processing必須要real-time

也就是一秒最好是能跑在15~25個Frame之中最好....

我隨手寫的Blur超級慢的...... 剛又試寫一個overlay大概也會慢了一些....

所以如果想要real-time看特效結果的話~~~ 特效中間又串了七八個filters.....

真的很不容易 更何況我用的video source只是320x240.... @@

DVD(720x480)都快要過時了......如果用HD的source 我看電腦就不用跑了.....


然後這時候就突然有種領悟.... 咦?可以用Pixel Shader做呀....

如果電腦有附很好的顯卡,為什麼不利用GPU的Power呢....

當然如果要推出Image or Video Editing的軟體用這個的話.... 會有一些問題產生

除了不同顯卡有不同能力,要考量不用的Shader version語法,還要考慮不同顯卡出來效果不同

但是如果能同時support兩組filters 一組是pixel shader-base用GPU,另一組用CPU

或許processing的時間可以變的很快 ( @@ 不過不知道可不可以serializtion出來 我想應該可以吧)


嗯 上網找了一些Pixel Shader的文章.... 從來沒寫過這些東西 希望剛剛的猜想可以試試看

可以從下面的links看一些samples
http://www.riemers.net/eng/Tutorials/DirectX/Csharp/Series3/Vertex_Shader.php
http://www.steelskies.com/article/4/directx-shader-effects#
http://www.codesampler.com/dx9src/dx9src_8.htm#dx9_hlsl_fx_simple
http://dev.gameres.com/Program/Visual/DirectX/ManagedDirectX9_21.htm
http://www.flipcode.com/articles/article_ps20tut.shtml

有高手對這方面比較了解的話 也可以指教或是補充囉 ^^

沒有留言: