代码改变世界

GPU加速的Raytrace渲染

2010-05-29 16:37  六水  阅读(1465)  评论(0编辑  收藏  举报
关键字:Raytrace,Photon mapping,CUDA.还有10分钟,我24岁的生日就到了.发图纪念一下吧.
在我的core2 6300 1.86G的CPU上渲染要59秒,而使用8800GT来加速则需要3.36秒.
 images/cuda0.jpg



自从上星期拿到了8800GT,我就开始钻钻CUDA了. 于是这几天就把一件想了很久的事情做了,

用GPU来加速我的光线跟踪渲染器.CUDA的出现让我们写起GPU程序来比用HLSL等SHADER语言要方便多了...
现在我的程序用GPU跑仍要3秒多,应该还有很多提升的空间,毕竟我刚接触CUDA,很多优化的东西还没搞懂。

关于渲染效率的比较
当然我现在做的CPU和GPU之间的速度比较是意义不大的,毕竟我那6300CPU和8800GT
(RMB1800)价格差距还比较大,应该找一款价格类似的CPU来做测试,然后比较,现在的话
,RMB1800大概能买到比我那频率高1.8倍的CPU了....

关于CUDA里的递归
现在CUDA里的核心函数都要里inline的方式定义,因此,程序里就绝不能出现递归了,那么,
如果实在要递归,那就得自己去展开,根据一定的深度.那CUDA的代码量就大多了...而且
程序当然也难维护多了......恶心....
现在我CUDA里的光子跟踪,其实本来也需要递归的,但现在我都只是简单地"递归"了两层
而已,因此现在GI的效果并不好,并没有之前那完全用CPU来渲染的好.