最小保证着色器存储块大小是多少?

Posted

技术标签:

【中文标题】最小保证着色器存储块大小是多少?【英文标题】:What is the minimum guaranteed Shader Storage block size? 【发布时间】:2020-06-12 08:29:38 【问题描述】:

如果它存在,我似乎找不到它。 我遇到了统一缓冲区的问题,其中 gl 规范给出的最小大小仅为 1024 个位置。我可以在 SSBO 的着色器中引用的位置数量是否有设定的最小值?例如,如果我希望能够访问 10,000 个mat4s?

此外,在当前的现代硬件上,使用 SSBO 与使用顶点缓冲区之间是否存在显着的性能差异?

使用 SSBO、VBO 或几何着色器大致比较如何? (这在存储/扩展顶点的上下文中)。如果没有一般的案例答案,我会对其进行分析。

【问题讨论】:

您是否将“SSBO 大小”与“统一位置数”混为一谈?我认为它们没有直接关系。 @BDL 我指的是我可以从着色器访问的信息量。 【参考方案1】:

最大着色器存储块大小可以通过

GLint64 size;
glGetInteger64v(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &size) 

由规范保证的着色器存储块大小的最小值为 2^27 (128MB)。

分别见OpenGL 4.6 API Core Profile Specification - State TablesShader Storage Buffer Object

【讨论】:

以上是关于最小保证着色器存储块大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章

几何着色器被错误地解释为顶点着色器

从 GLSL 着色器中获取常量

GLSL 计算着色器闪烁块/正方形伪影

渲染二维码的着色器

OpenGl固定管线各种存储着色器

OpenGl固定管线各种存储着色器