[gdc07][crytek]Real-time Atmospheric Effects

来源:互联网 发布:dota2网络延迟高 编辑:程序博客网 时间:2024/05/19 15:20

link:

http://developer.amd.com/assets/D3DTutorial_Crytek.pdf

 

07年gdc crytek的一个文章,一些内容被wolfgang引用,拿下来一看,很不错。

 

volume相关技术就是处理衰减和散射。

 


 

开始将depth based render,也就是deferred shading的简化版。

读起来颇有点穿越的感觉,07年crytek还很扭捏的提一下depth based render,10年的时候已经满大街都是了。

发展恁快了。

 

 


 

skylight&global volume fog

 

 

这里的skylight不是指skylighting作用在物体上的效果,就是指render sky box本身。

这里一些做法可以是artist制作的,对于昼夜交替的情况,通过一些1d texture也可以做的不错。

这里是纯程序生成的做法。

 

主要是处理散射情况,使用mie算法来处理sample点,文中给出的是128*64,积分公式比较复杂,没什么必要列了。

结果存在floating point texture里,然后使用。

计算过程可以是cpu段多帧计算,也可以gpu端计算。

crytek提到有精度问题,这个resolution要自己把握一下了。

 

fog部分,是根据height和distance来计算浓度的。

使用exp来做衰减。

这个是global fog所以render的方式是render full screen quad这种方式。

global fog的color就使用sky light的颜色,sample那个texture就好。

 


 

fog volume

其实是global volume fog的一个特化,只是这次不是全屏quad,是一些具体形状。

  • 类似deferred shading画point light的方式画box/sphere...到屏幕上
  • pixel为最终pos,不像global的为depth反算出来的pos。
  • apply上面的volume fog公式

 


 

cloud render

 

 

使用gradient based lighting+rim lighting达到这个效果。

 

distance cloud

使用2d plane借助一些volume property(normal, density texture)根据camera和sun的关系render distance cloud。