【问题标题】:Rendering Opaque, Alpha enabled and blending enabled objects渲染不透明、启用 Alpha 和启用混合的对象
【发布时间】:2011-07-18 03:17:41
【问题描述】:

在我的渲染中,有时我的对象是完全不透明的,有时对象对它们有一些 alpha。阿尔法,我的意思是像叶子纹理,其中只显示叶子部分而其他像素不显示(因此部分纹理的透明度)。对于混合,我的意思是设置目标混合和源混合。

但是,我需要两个渲染列表还是三个渲染列表?我首先有一个可以渲染的所有可能对象的渲染列表。从那里,我把它分成两个列表,不透明和“Alpha Enabled”(将被渲染到前面)。然而,对于那些有混合但没有改变 alpha 级别的人,这些应该放在单独的列表中还是应该放在不透明或 alpha 列表中?

【问题讨论】:

    标签: algorithm graphics directx rendering


    【解决方案1】:

    您需要两个列表,一个用于不透明,一个用于透明。

    任何要在视觉上与“背后”的其他几何图形混合的东西都应该在混合列表中,无论混合是基于 Alpha 通道还是其他一些添加/订阅/乘法/任何混合状态。从后到前渲染,确保单个图元是凸的并且不相互交叉..

    Alpha 测试,如 Goz 所说,是一个例外,因为它基于 alpha 掩码执行 z-write。它进入不透明的堆中。

    【讨论】:

    • 顺便说一句,在进行添加剂混合时,您不需要对几何图形进行排序...
    • 如果您使用的是 Intel 的 haswell 处理器,您可能想要利用名为“Pixel Sync”的简洁 Direct X 扩展。更多详情here
    【解决方案2】:

    如果您使用 Alpha 测试,那么您可以通过不透明管道推送经过 Alpha 测试的部分。因此,只要我理解正确,您只需要 2 个渲染列表。

    【讨论】:

    • 那是哪两个渲染列表?
    • @Chadb:不透明和 Alpha。经过 Alpha 测试的几何体仍然是不透明的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多