我正在尝试使用以下天真技术实现对象无关透明度(OIT):
对不透明和透明的对象进行排序。
使用深度写入渲染不透明。
禁用深度写入,启用Alpha混合并渲染透明对象。
如果我只有完全不透明和透明的物体,它可以正常工作。但是有些物体具有透明的alpha纹理(我的所有网格都是平面的)并且需要Alpha混合,其他是透明的情况怎么样。什么是例程在这种情况下? 目前,如果我首先使用深度写入和alpha混合渲染透明,然后使用Alpha通道纹理渲染对象(深度注释,混合)会发生的事情是最后一个渲染平面的部分与第一个相交飞机被剔除。这张照片描绘了我的目标:
两架飞机都有一定的透明度,仍然保持深度排序。 我知道我可以使用更复杂的OIT方法,如this。但是有可能在不进入片段链接列表的情况下这样做吗?
答案 0 :(得分:3)
基于光栅化的渲染器本质上不能很好地处理透明度。光栅化器通过渲染对象,然后渲染另一个对象来工作。它不知道之前呈现的内容或之后呈现的内容。它的工作是采用3D形状并将其转换为颜色区域。
如果有一种简单的技术可以实现与订单无关的透明度,那么您现在已经听说过它,因为每个人都会使用它。没有。每种通用的OIT技术都很复杂,并且具有一些与之相关的性能缺点。
是否有可能为两个平面的非常特定情况找到一种方法?是。您能否对具有任意透明度的任意场景推广该方法?否。