55 layout(local_size_x = 32) in;
90 uvec4 carry = blocksum[gl_NumWorkGroups.x - 1u];
94 carry = uvec4(0u, carry.x, carry.x + carry.y, carry.x + carry.y + carry.z);
97 uvec4 lookups =
flags[ident];
102 carry = uvec4(carry[lookups.x], carry[lookups.y], carry[lookups.z], carry[lookups.w]) - 1u;
107 carry.z +=
buf[4u * ident + 2u][lookups.z];
112 if (wg_ident != 0u) {
113 uvec4 prev_sum = blocksum[wg_ident - 1u];
116 carry.z += prev_sum[lookups.z];
122 out_sort_buf[
carry.x] = sort_buf[4u * ident + 0u];
123 out_sort_buf[
carry.y] = sort_buf[4u * ident + 1u];
124 out_sort_buf[carry.z] = sort_buf[4u * ident + 2u];
125 out_sort_buf[
carry.w] = sort_buf[4u * ident + 3u];
GLfloat GLfloat GLfloat w
layout(local_size_x=32) in
void uniform(string name, const mat4 &v)
GLint GLint GLint GLint GLint x
GLenum GLuint GLenum GLsizei const GLchar * buf