有没有人知道HLSL / GLSL / cg中反FFT的实现......?

这会为我节省很多工作。

最佳, 海因里希·

有帮助吗?

解决方案

DirectX11带有计算着色器的FFT示例(请参阅 DX11 August SDK发布说明)。正如PereAllenWebb指出的那样,这也可以用于逆FFT。

编辑:如果您只想要快速FFT,可以尝试在GPU上运行的CUFFT。它是CUDA SDK的一部分。 AMD的AMCL也有一个FFT,目前还没有GPU加速,但很快就会加入。

其他提示

您是否已经实施了FFT?您可能已经知道,但可以通过反转N个输入的顺序,将FFT取过它们,并将结果除以N来计算反转。

我在2005年在7800GTX硬件上实现了1D FFT。这是在CUDA等之前,所以我不得不求助于使用Cg并手动实现FFT。

我有两个FFT实现。一个是时间FFT的Radix2抽取,另一个是Stockham Autosort FFT。对于较大尺寸(> 8192),stockham的执行速度比CPU(当时为3GHz P4单核)快2-4倍,但对于较小尺寸,CPU更快,因为它不必将数据移入/移出GPU。

如果您对着色器代码感兴趣,请随时与我联系,我会通过电子邮件发送给您。它来自个人项目,因此不受任何商业版权保护。我认为CUDA(和类似的)实现会大大超出我的实现,但是从学习的角度来看,你自己编写或学习代码要好得多!

也许你可以看看OpenCL,它是图形(和其他)硬件上通用计算的标准 维基百科文章包含标准FFT的OpenCL示例:
http://en.wikipedia.org/wiki/OpenCL#Example

如果您使用的是OS X 10.6的Mac,则只需安装开发人员工具即可开始使用OpenCL开发。 我还听说硬件供应商已经在Windows上提供了基本的OpenCL驱动程序支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top