游戏图形开发者对效率有着无止境的只求,总是希望在不损失质量的情况下用效率高的方法来提升游戏性能。
分辨率作为游戏性能的一个非常关键的因素,当然也是被重点照顾的对象,Mixe Resolution主要讲的是一种用低分辨率一般是quarter buffer来渲染游戏的某一部分,比方粒子或者AO,粒子因为很多信息是低频所以采用quarter buffer问题也不大,而粒子往往是一个游戏性能开销的大头,因此用quarter buffer来渲染粒子是非常有意义的,用quarter buffer渲染基本分为以下步骤:
1.Restore Quarter Depth.
2.Render Particle To Quarter Buffer(这里要注意Buffer被Clear的时候需要将rgb清成0,a清成1),而且alpha blend的renderstate也要做出相应改动,这个是根据推导推出来的,否则没办法再画一个全屏quad贴回去,后面会贴一个Blog来详细推导renderstate应该怎么设为什么这么设。
3.Render a FullScreen Quad to Apply Particle(因为第一步Restore的时候Depth精度已经降低了,所以直接往回贴的时候会有明显的锯齿,这时候如果采用Bilateral Filter的话就会大幅减少锯齿,但是Bilteral也不是吃素的)
4.测量1-3的时间是否比全屏的时间(2的4倍)少了,如果少了就quarter buffer,否则就不用因为这时候明显quarter buffer用了比没用还废
Jeremy Shopf以前是ATI的图形专家,有不少Demo出自他的作品,Mixed Resolution Rendering方面积累了很多实战经验,详细讲解了Bilateral Filter,这是个非常神奇的Filter.
http://developer.amd.com/wordpress/media/2012/10/ShopfMixedResolutionRendering.pdf