5

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 ドライバーは、マルチサンプリングと自動スーパーサンプリングの組み合わせとして内部的に実装されるマルチサンプル モードをサポートし、ハードウェアで直接サポートできるよりも高いレベルのアンチエイリアシングを取得します。

4

2 に答える 2