BattleField 3和NeedForSpeedTheRun中的渲染技术

最后更新于:2022-04-01 11:26:48

http://publications.dice.se/attachments/BF3_NFS_WhiteBarreBrisebois_Siggraph2011.pptx frostbite engine(寒霜引擎) 系列引擎在battle field以外的知名游戏上<need for speed:the run>开始应用。 关注dice很长时间了,学习到很多东西,很欣喜的看到frostbite从<battle field:bad company>时候的偶有亮点(建筑地形毁坏)到现在在battlefield3中成为的图形效果新标杆,可以和CryEngine3的效果一较高下,并且在销量上也取得了不俗的成绩,可谓双重胜利。 现在使用frostbite2制作了<need for speed:the run> 本文介绍在frostbite2在两款游戏上技术的应用。 **bokeh blur** 这个效果不太感兴趣,在ce3,ue3和frostbite,还有n多其他的游戏paper里都有说。 这里说的一点挺好,就是blur,有的是不能separate的,那么这个计算量就是:O(n*n),有的是可以separate的,比如,那么计算量是O(n). 可以separate的包括gaussian blur,box,skewed box。 **ZCull Reverse** 这个是一个挺有意思的技巧,一般在deferred lighting中做point lighting的时候,是使用front face和back face各render一个pass的方式,使用stencil来确定point light sphere影响的区域。 这里介绍一个方法是把zcull的compare方式变成GreaterEqual,这样和正常的方法上在point light起作用,比如: A和B的情况,是否reverse是等价的(一个在A上省一个在B上省),但是C的话就是reverse的好多了。 使用csm,也可以这么做,画一个cube来做一个cascade,用stencil标记前一个cascade render过的pixel,挺不错的。 **MinMaxShadowMap** 这里说的问题是shadow map mask问题,把需要soft shadow(也就是shadow和unshadow部分交界的地方)和纯的shadow和unshadow的地方。 这里的算法是: - 使用hard shadow map画第一遍 - downsample,把需要soft shadow的地方和hard的地方以不同的alpha保存 - 使用alpha test来更新stencil - 使用stencil test来跳过不需要soft shadow的地方,进行pcf **Chroma sub-sampling** 并不是一个新的概念,jpg压缩中常常使用的,就是把颜色分成luminance和chroma两个部分,全精度存储luminance,低精度存chroma。 具体可以看wikipedia的连接:[link](http://en.wikipedia.org/wiki/Chroma_subsampling) 这样的压缩之后,post process 的bandwidth消耗降为1/4 **Temporally-stable Screen-Space Ambient Occlusion** frostbite2提供了两种dynamic ao: - 普通的ssao给中低端机器 - hbao给高端机器 质量对比很明显了: HBAO: SSAO: ssao的sample方式是volumetric occlusion的line的方式,效率比较好。 这里主要是说了blur的方式,把4个纯色的ao的pixel信息pack到rgba里面,这样一个9x9 gaussian blur会被降到3个horizontal tap和5个vertical tap,效率对比很明显:高于4:1的一个差距
';