杀戮地带2的渲染技术(Rendering_Technology_Of_Killzone_2)

http://www.guerrilla-games.com/presentations/GDC09_Valient_Rendering_Technology_Of_Killzone_2.pptx

http://www.guerrilla-games.com/presentations/GDC09_Valient_Rendering_Technology_Of_Killzone_2_Extended_Presenter_Notes.pdf

一个老文章了,不过有一些细节很不错。

killzone2,开发历时4年。

                                                                                                                                                                                                                                                                                                            

DeferredShading

deferred shading现在过于普遍了,基本相关的介绍直接跳过。

开始guerrila尝试了light prepass,但是对于kz来说,没有那么大的需求来做light prepass,如果像cryengine和bungie的确是最后的光照比较复杂,有必要走light prepass类的pipeline,kz就没有必要,在这种情况下,light prepass的效率还低于传统的deferred shading,所以最后就用了传统做法。


kz2的gbuffer格式:


lighting accumulation比较特殊,也说明了kz2的lighting到达什么级别,是用来存储

  • indirect lighting, 
  • static object的indirectlighting是放在light map中
  • dynamic object用的是spherical harmonics系数来存储间接光
  • reflection map:也就是environment map
indirect lighting only的一个图:

  • 在render lighting的时候,使用zcull, depth bound test和stencil来尽量减少lighting的区域

  • lighting的代码可以根据具体情况做一些简化,比如有的就不需要specular等
  • 使用stencil mask来标记完全在shadow中的pixel,这样可以skip lighting

  • 全屏的lighting的时候,也使用了depth bound test,这样去分几级的lighting可以进行lighting quality上的一些lod

                                                                                                                                                                                                                                                                                                            

shadow

  • soft shadow filter是poisson disk filter,这个现在都这样了。
  • 比较小的东西就不cast shadow,这个threshold可以per object的指定,也可以per light的指定
  • 使用camera view frustum的bounding sphere来做为shadow view frustum构建的依据,而不是针对camera view frustum本身,因为camera会转,根据camera frustum构建会造成有闪烁出现







你可能感兴趣的:(杀戮地带2的渲染技术(Rendering_Technology_Of_Killzone_2))