VK_FORMAT_R16_UINT Vulkan 中的纹理格式

VK_FORMAT_R16_UINT texture format in Vulkan

Vulkan 没有像 OpenGL 那样的任何像素传输功能。但是 VK_FORMAT_R16_UINT 格式是如何工作的呢?可以使用它从像素着色器中采样无符号短值吗?当我使用它时,我只从采样器中得到零。我正在使用线性过滤。

如果我使用 VK_FORMAT_R16_UNORM 而不是 VK_FORMAT_R16_UINT 格式,我得到的值介于 0-1 之间,所以我想 Vulkan 在这种情况下会为我规范化这些值?

规范不保证支持 VK_FORMAT_R16_UINT 格式的线性过滤。

VK_FORMAT_R16_UINT 上使用线性过滤之前,您需要先使用 vkGetPhysicalDeviceFormatProperties 检查支持(检查 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)。

令人惊讶的是,验证层没有报告误用。提交增强请求以添加该检查是值得的。