OpenGL 4.5 中每个着色器的资源大小限制



我遇到了一个奇怪的问题:我有一个片段着色器,其中包含几个统一变量(mat4,vec4(,一个采样器2D和一个巨大的SSBO(1GB-2GB(。对于每种类型的变量,它不超过硬件的大小限制。如果没有 SSBO,着色器可以正常工作。使用 SSBO,如果纹理图像的分辨率较低(768x768x4 浮点(,着色器也可以正常工作。但是,如果分辨率达到 1024+ x 1024+,程序会立即在 NVIDIA 驱动程序中崩溃。我已经在GTX980 Ti和Quadro P5000上测试过它。这个问题都发生了。

我想知道着色器资源的使用是否有任何限制。

根据这个OpenGL实现数据库,没有实现允许SSBO的大小超过2GB。也就是说,任何实现GL_MAX_SHADER_STORAGE_BLOCK_SIZE都大于 2GB。

请注意,Vulkan 实现没有太大区别。AMD实施提供4GB SSBO,但它们仍然存在与存储量分开的限制。

相关内容

  • 没有找到相关文章

最新更新