大气渲染

  以前买的GPU精粹复印版到了,看了里面的大气渲染,很有兴趣,试着做了一个,实现了一下算法,算法主要是GPU Gems2里面的方程(还有NishiTa的论文,光看这Gpu Gems2压根就看不明白方程的含义),完全就没有考虑效率了,是在顶点上做的计算,因此精确度就难以保障了,而且球体的判断也出现了一些问题,地球背面居然也是亮的,不过从外面观察星球比较难以计算,主要是要计算两个球体的相交,包括地球和大气层。而从里面就直接一个天空顶加上一块地形。比较好算,先放个图,完全做好了再发出源代码。

  

  现在做好了,看着还行,还是没有进行任何优化,还有诸多细节没有考虑,调试上遇到了大问题, 写了几遍Shader,现在这个才稍稍满意点,GPU调试太麻烦了,如果能像CPU一样调,那效率可以提高N倍。

  问题:模型是地球,但是我们应该使用到大气层的向量啥,不然地球边缘大气层是渲染不到的,这里我就偷了懒了,直接在顶点Shader加上了大气的厚度,但是计算的点仍然是地球的模型。因此如果距离太近看上去会变形得很严重,这里还需要改进,还有也没使用任何优化,其实查找表可以预计算,这里也没有那么做,直接在顶点里完成了大部分计算, 像素Shader只是加上了Phase Function. 具体的算法大家还是看看Gpu Gems2吧,上面提供了很多论文。


 

 

  视点是外层空间。

  源代码下载地址:http://download.csdn.net/source/1855604

posted @ 2009-11-26 15:11  ttthinks  阅读(1012)  评论(0编辑  收藏  举报