为了提升游戏性能,各种优化手段纷纷拍马杀到,但是优化往往会带来一些新的问题,有时候会导致质量下降,有些事可以忍受的,有些是没办法容忍的。
FFT作为Ocean Animation几乎是一个标配了,采用GPU FFT更是优势明显,为了优化显存,采用了RGBA16F的Buffer,这带来的好处是显存省了一把,速度也提升了,因为Sample的带宽降低了,然后就放出去了。过了大概2个星期有人说水的动画怎么一顿一顿的,我也特意留意了一下,似乎的确有这个情况,难道是fft有问题,debug了一下午验证出来fft应该是没问题的,然后去google了一把网上的gpu fft基本方法都是差不多啊,没啥不同,除了使用的是RGBA32F的buffer,当时很固执坚信RGBA16F应该没问题,也不愿意改为RGBA32F试一试,继续debug了一天还是没出结果,后来想了想把我的GPUFFT用到网上的demo,问题一样出现,这时候就不得不怀疑是格式的问题了,也顾不上RGBA16F在性能上的优势了,改了32F果然好了,好好想了想GPUFFT是不能用16F,16F的精度在数值为2000多的时候已经很差了,FFT算到频域的时候数值往往是很大的,16F是满足不了需要的精度的,这次真的是为自己的固执买了单:)