VK_ARM_pipeline_opacity_micromap

本文档概述了允许应用程序指定使用光线查询的管道将不与引用不透明度微映射数组的加速结构一起使用的功能。

1. 问题陈述

不透明度微映射扩展 VK_EXT_opacity_micromap 支持新的管道创建标志 VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT,表明光线追踪管道可以与引用微映射的加速结构一起使用。这允许可能的优化,预先知道可能会使用不透明度微映射。

对于支持具有不透明度微映射的光线查询(例如图形和计算)的管道,不存在等效的标志。因此,目前无法为无不透明度优化此类管道,例如,当应用程序支持不透明度微映射但管道不使用时。这可能会导致性能下降。

此扩展添加了一个新标志,表明管道将不与引用不透明度微映射的加速结构一起使用。

2. 解决方案空间

新的标志 VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM 禁止该功能(而不是允许其相反的功能),以便不与当前规范相矛盾,当前规范允许在未定义标志的情况下支持不透明度微映射。因此,保留了向后兼容性。

3. 提案

3.1. API 功能

创建一个新的标志 VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM,指定管道将不与引用不透明度微映射数组的加速结构一起使用。

static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM = 0x2000000000ULL;

VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM 指定管道将不与引用不透明度微映射数组的加速结构一起使用。