我已经学习了一段时间的OpenGL和3D图形,我遇到了众所周知的问题:透明度,半透明度和绘制顺序依赖性.
我知道不同的alpha混合算法:减法,这是最好的,但需要正确的排序; 加法或乘法,与顺序无关,但结果不佳; 禁用z缓冲技术; 等等.
所以,我得到的主要结论是:没有神奇的方法来做透明度.
问题是:如何在现代游戏中实施透明度?我的意思是,在它们中有明确的反对物体:窗户,眼镜等.我想学习这个问题的最佳实践 - 这是如何在"大联盟"中完成的,但我还没有找到任何关于此的论文学科.
问题是:如何在现代游戏中实施透明度?
以最符合游戏图形需求的方式.是的,这是一个广泛的答案,但在过去15年中情况并没有发生太大变化.
大多数3D游戏仍会执行通常的2个渲染过程:
按距离排序很便宜,Quicksort和Mergesort非常高效.但真正糟糕的表现是需要在透明传递中严格绘制到远近,因为这会破坏任何纹理/着色器排序.切换纹理和/或着色器会产生非常明显的性能影响.