【问题标题】:Render pipeline output merge order渲染管道输出合并顺序
【发布时间】:2016-07-13 19:20:47
【问题描述】:

我正在尝试在一个 drawcall 中绘制两个三角形。两个三角形平行。并且相机的前进方向是沿着垂直于两个三角形的那些三角形的法线。从摄像头看,两个三角形完全重叠。

使用 srcAlpha 和 invSrcAlpha 的 blendop 启用 Alpha 混合。后面三角形的颜色是 (0, 1, 0, 0.5),前面三角形的颜色是 (1, 0, 0, 0.5)。 RT 被清除为黑色。像素着色器只是简单地输出三角形颜色。

这是一个展示场景的图像,三角形的顶点在图像中被索引。

RT 中的最终颜色可能是全部 (0.5, 0.25, 0)。在图形流水线中,是否保证红三角先输出绿三角的像素?

【问题讨论】:

    标签: graphics 3d directx


    【解决方案1】:

    您对像素评估顺序不做任何保证,此处红色和绿色像素可以按任意顺序进行评估。精确地按照三角形在顶点/索引缓冲区中的排序顺序执行。

    它存在一个名为 Rasterizer Order Views 的功能,文档 here。但是,首先,它取决于一个可选功能,其次,它只能在您使用无序访问视图时打开,这里不是您简单地使用输出合并编写示例的情况。

    【讨论】:

      【解决方案2】:

      看起来 DirectX 管道保证了顺序。

      “DirectX 渲染遵循一组严格的规则,确保三角形总是按照提交的顺序渲染:如果两个三角形在屏幕上重叠,硬件保证三角形 1 的颜色结果会在之前混合到屏幕上三角形 2 被处理和混合。”

      这里是链接https://software.intel.com/en-us/gamedev/articles/rasterizer-order-views-101-a-primer,在“DirectX 管道和无人机的限制”部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-27
        • 2019-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 2018-11-12
        相关资源
        最近更新 更多