基於Pixel Shader的FFT已經完成

來源:互聯網
上載者:User
轉載請註明出處為KlayGE遊戲引擎,本文地址為http://www.klayge.org/2012/04/12/%e5%9f%ba%e4%ba%8epixel-shader%e7%9a%84fft%e5%b7%b2%e7%bb%8f%e5%ae%8c%e6%88%90/

上周末把GPU Gems 2裡的GPU FFT在KlayGE裡實現了一下,經過最佳化和調整,昨晚已經進入KlayGE的開發版本中。完整的FFT Lens Effects也會很快整合進去。

這裡用到的是那篇文章中提到的方法1,因為經過測試,方法2在現代GPU上速度不如方法1。我做的改進是把原來的3張尋找表合并成1張,並都用 16F而不是32F的格式儲存輸入輸出資料。在GTX580上,512×512的資料量,PS版本的FFT花費0.94ms左右,能達到CPU FFTW的75倍速度。但即便如此,對於lens effect那樣的應用來說還是有點慢。所以接下去考慮用Compute Shader來實現FFT,pass數會減少到1/3。PS每次處理2個數,512×512需要log(512) + log(512) = 18個pass;CS每次可以處理8個數,所以只要6個pass。在Ocean的例子裡有個CS4的FFT,需要多兩個texture和buffer互轉 的pass。CS5的FFT將會更乾淨,效率更高。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.