RealTime Synthesis and Rendering of Ocean Water

http://ati.amd.com/developer/Mitchell-Real-Time_Synthesis_and_Rendering_of_Ocean_Water(ATITR_Apr05).pdf

feature上没有实质性的进步,只是做了叠加offline generated的normal map的东西,造成可以有水波被鸭子影响的效果。

主要在实现上,放到gpu上,以及将geometry与normal分离的优化。


GPU computing FFT

理论背景仍旧是FFT,公式主要还是FFT, amplitude和spectrum。

由于FFT的计算在cpu上就是grid上一个个点算的,点之间没有dependency,天生并行。所以gpu上算再适合不过了。

  • 浪线h(k),根据philips spectrum算出,cpu上算一次就可以了,和时间无关
  • w---频率,也是和时间无关,cpu上算出就好
  • 浪线h(k,t)基于浪线h和w,加上时间,这部分gpu上算。
  • 结果就是fft的heigt field的了

performance:

当时是radeon x800,12 pixel shader, 392Mhz,计算64×64+256×256耗时6ms。

对比现在的主流gts250显卡,793Mhz,128 cuda processor,这的确是非常ok的一个消耗了。

normal map:

有了hight map之后,normal cross一下就好了。


synthesis waves

也是这个文章点题的一部分。

就是弄一个高resolution(256*256)的grid生成normal以显示细节。

低resolution(64*64)的作为vertex shader displacement map两者结合,效果很ok,效率也好。

至于低resolution map的生成,一种是直接算出一个,也可以高resolution的来downsample出来,文中是使用直接算一个的。

至于为什么vertex shader displacement map要用低resolution的而不是直接sample 高resolution的,应该是考虑到texture cache performance的问题。


composing other wave forms

用一些预先做好的height map or normal map合成就好。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值