在游戏开发中难免会遇到物体逐渐消失或者出现的相关需求,在只有一个主光源的时候用translucent with z就可以简单解决,但是现在的引擎不支持点光源都不好意思跟人讲,如果要考虑点光源translucent with z还真是比较苍白,无能为力了只能。对于草这样overdraw很严重的情况用translucent with z无疑是对原来的性能消耗雪上加霜。对于物体切换lod时poo会非常明显,很多游戏就听之任之了,如果这能提高一下能非常明显的降低pop对人的不友好体验。
基于以上的一些原因,游戏开发者提出了一共新的渐变的效果,方法很简单将原先要输出的贴图的alpha通道和一张噪声纹理相乘,用这个被改变的alpha作为alpha然后再用alpha test。因为纹理上的像素值是随机分布的,从而导致alpha也增加了随机分布,同时alphatest的阈值不断调整就会导致有些像素会出现或者小时(阈值增加会让像素越来越少,阈值减少会让像素越来越多,开发者很容易达到fading的效果)下面的图正好诠释了screen door的基本原理这个方法其实在2002年的GPU Gems就已经共享出来了,请参考GPU Gems第一章1.2.1 Simulating Alpha Transparency via Dissolve
(http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter01.html)