我正在尝试实现对象无关的透明度(OIT),使用以下简单的技术:
对不透明和透明对象进行排序。
使用深度写入,渲染不透明对象。
禁用深度写入,启用 alpha 混合,并渲染透明对象。
如果我只有完全不透明和透明的对象,它可以正常工作。但是如果既有具有半透明 Alpha 纹理(所有网格都是平面)且需要启用 Alpha 混合的对象,也有其他透明度的对象怎么办?在这种情况下应该怎么处理? 目前,如果我首先使用深度写入和 Alpha 混合来渲染透明部分,然后使用带 Alpha 通道纹理的对象(深度写入关闭,混合打开)进行渲染,则会剪切与第一个平面相交的最后渲染平面的一部分。这里有一张图片来说明我的目标:
这两个平面都具有一定程度的透明度,并仍然保持深度排序。 我知道可以使用更复杂的方法来实现 OIT,例如此链接中介绍的使用片段链接列表等技术。但是是否可能在不使用片段链接列表等技术的情况下完成呢?