我正在编写基于 Vulkan API 的渲染器。目前我正在尝试为颜色附件添加 MSAA。我很确定我可以使用VK_SAMPLE_COUNT_16_BIT
,但 limits.framebufferColorSampleCounts
返回允许 MSAA 级别高达VK_SAMPLE_COUNT_8_BIT
(含)的位标志
我在全新的 NVIDIA QUADRO RTX 3000 卡上运行。我还使用最新的 NVIDIA 驱动程序:441.28 我检查了 OpenGL 和 GPU 上限查看器显示的限制
GL_MAX_FRAMEBUFFER_SAMPLES = 32
这有什么意义?限制是否仅由 Vulkan API 规定?如果硬件不支持超过 x8 那么这是否意味着 OpenGL 驱动程序在 CPU 上模拟它,例如通过超级采样之类的东西?这就是我在 khronosdev.slack 的几位渲染开发人员所说的?是否有意义?供应商是否不必使用标准进行编译,要么以正确的方式实施 MSAA,要么根本不实施?
是否有可能 OpenGL 不“真正”支持超过 x8 MSAA,但驱动程序通过像超级采样这样的东西来模拟它?
更新
这个页面解释了 OpenGL 的 MSAA 实现的整个状态,实际上它很清楚为什么 Vulkan 在我的卡上不提供超过 x8 的样本。这是妙语:
一些 NVIDIA 驱动程序支持多重采样模式,这些模式在内部实现为多重采样和自动超级采样的组合,以获得比硬件直接支持的更高级别的抗锯齿。