From 62064d523d7e2c6c6dda7b97f28e7f2cb22662be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 9 Jan 2016 00:23:36 +0100 Subject: [PATCH] ARB_shader_storage_buffer_object seems to be done now. That binding function is not needed as I would deprecate it anyway. --- doc/opengl-support.dox | 2 +- src/Magnum/AbstractShaderProgram.h | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 867845919..290e3888b 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -185,7 +185,7 @@ GLSL 4.30 | done @extension{ARB,program_interface_query} | | @extension{ARB,robust_buffer_access_behavior} | done (nothing to do) @extension{ARB,shader_image_size} | done (shading language only) -@extension{ARB,shader_storage_buffer_object} | only limit queries +@extension{ARB,shader_storage_buffer_object} | missing (unneeded) block binding @extension{ARB,stencil_texturing} | done @extension{ARB,texture_buffer_range} | done @extension{ARB,texture_query_levels} | done (shading language only) diff --git a/src/Magnum/AbstractShaderProgram.h b/src/Magnum/AbstractShaderProgram.h index ac0552193..6d75f1783 100644 --- a/src/Magnum/AbstractShaderProgram.h +++ b/src/Magnum/AbstractShaderProgram.h @@ -289,6 +289,27 @@ setUniformBlockBinding(uniformBlockIndex("material"), 1); @requires_gles Explicit uniform block binding is not supported in WebGL. Use @ref uniformBlockIndex() and @ref setUniformBlockBinding() instead. +@anchor AbstractShaderProgram-shader-storage-block-binding +### Shader storage block bindings + +The workflow is to specify shader storage block binding directly in the shader +code, e.g.: +@code +// GLSL 4.30 or GLSL ES 3.10 +layout(std430, binding = 0) buffer vertices { + vec3 position; + vec3 color; +}; +layout(std430, binding = 1) buffer normals { + vec3 normal; +}; +@endcode + +@see @ref Buffer::maxShaderStorageBindings() +@requires_gl43 Extension @extension{ARB,shader_storage_buffer_object} +@requires_gles31 Shader storage is not available in OpenGL ES 3.0 and older. +@requires_gles Shader storage is not available in WebGL. + @anchor AbstractShaderProgram-texture-units ### Specifying texture binding units