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