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的一个差距