gpt4 book ai didi

OpenGL Alpha 混合和对象独立透明度

转载 作者:行者123 更新时间:2023-12-02 02:32:45 24 4
gpt4 key购买 nike

我正在尝试使用以下简单的技术来实现对象独立透明度(OIT):

  1. 对不透明和透明对象进行排序。

  2. 渲染不透明并启用深度写入。

  3. 禁用深度写入、启用 Alpha 混合并渲染透明对象。

如果我只有完全不透明和透明的对象,它就可以工作。但是如果某些对象具有透明的 Alpha 纹理(我的所有网格都是平面的)并且需要 Alpha 混合,而其他对象是透明的,那么情况又如何呢?例程是什么在这种情况下?目前,如果我首先使用深度写入和 alpha 混合渲染透明,然后使用 alpha channel 纹理渲染对象(深度注销,混合打开),会发生的情况是最后渲染平面的部分与第一个渲染平面相交飞机被淘汰。这是一张描述我所追求的图片:

enter image description here

两个平面都有一定程度的透明度,并且仍然保持深度排序。我知道我可以对 OIT 使用更复杂的方法,例如 this 。但是是否可以在不进入片段链表等的情况下做到这一点?

最佳答案

基于光栅化的渲染器本质上无法很好地处理透明度。光栅化器的工作原理是渲染一个对象,然后渲染另一个对象。它不知道之前渲染了什么或之后渲染什么。它的工作是获取 3D 形状并将其转变为颜色区域。

如果有一种简单的技术可以实现与顺序无关的透明度,那么您现在应该已经听说过它,因为每个人都会使用它。没有。每一种通用的 OIT 技术都很复杂,并且都有一些与之相关的性能缺点。

是否有可能找到一种方法来解决两个平面在屏幕上没有其他内容相交的非常特殊情况?是的。您能否将该方法推广到具有任意透明度的任意场景?没有。

关于OpenGL Alpha 混合和对象独立透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com