使用深度剥离实现与顺序无关的透明度

此示例的源代码可以在 Khronos Vulkan 示例 github 存储库 中找到。
Sample

概述

此示例使用深度剥离实现与顺序无关的透明度 (OIT) 算法。它渲染一个可以通过 UI 控制不透明度的单圆环。它产生像素完美的结果。它基于 Cass Everitt 的 原始论文

算法

OIT 算法由几个收集通道和一个组合通道组成。

每个收集通道渲染一层透明几何体。第一个通道渲染第一层,第二个通道渲染第二层,依此类推。当片段从前到后排序时,第 N 层由每个像素的所有第 N 个片段组成。

组合通道是屏幕空间操作。它将图层图像从后到前合并以产生最终结果。

该算法可以产生像素完美的结果,即使在几何体相交的情况下也是如此。当几何图层多于收集通道时,最靠后的图层会被跳过,但视觉效果保持稳定(即没有闪烁像素)。

选项

选项 描述 评论

相机自动旋转

启用相机的自动旋转

背景灰度

指定背景颜色乘以的灰度值(0.0 到 1.0)

对象 alpha

指定透明对象的不透明度(0.0 到 1.0)

前层索引

要渲染的第一层(0 到 7)。

后层索引

要渲染的最后一层(0 到 7)。

这不能小于前层索引。