def _get_active_uniforms(self): """ Extract active uniforms from GPU """ count = gl.glGetProgramiv(self.handle, gl.GL_ACTIVE_UNIFORMS) # This match a name of the form "name[size]" (= array) regex = re.compile("""(?P<name>\w+)\s*(\[(?P<size>\d+)\])\s*""") uniforms = [] for i in range(count): name, size, gtype = gl.glGetActiveUniform(self.handle, i) name = name.decode() # This checks if the uniform is an array # Name will be something like xxx[0] instead of xxx m = regex.match(name) # When uniform is an array, size corresponds to the highest used index if m: name = m.group("name") if size >= 1: for i in range(size): name = "%s[%d]" % (m.group("name"), i) uniforms.append((name, gtype)) else: uniforms.append((name, gtype)) return uniforms
def active_uniforms(self): """ List of active uniform requested from GPU (read only). .. note:: An inactive uniform is a uniform that has been declared but that is not actually used in the shader. Example: .. code:: uniform vec3 color; # Inactive void main() { gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); } """ count = gl.glGetProgramiv(self.handle, gl.GL_ACTIVE_UNIFORMS) # This match a name of the form "name[size]" (= array) regex = re.compile("""(?P<name>\w+)\s*(\[(?P<size>\d+)\])\s*""") uniforms = [] for i in range(count): name, size, gtype = gl.glGetActiveUniform(self.handle, i) name = name.decode() # This checks if the uniform is an array # Name will be something like xxx[0] instead of xxx m = regex.match(name) # When uniform is an array, size corresponds to the highest used index if m: name = m.group('name') if size >= 1: for i in range(size): name = '%s[%d]' % (m.group('name'), i) uniforms.append((name, gtype)) else: uniforms.append((name, gtype)) return uniforms
def active_uniforms(self): """ List of active uniform requested from GPU (read only). .. note:: An inactive uniform is a uniform that has been declared but that is not actually used in the shader. Example: .. code:: uniform vec3 color; # Inactive void main() { gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); } """ count = gl.glGetProgramiv(self.handle, gl.GL_ACTIVE_UNIFORMS) # This match a name of the form "name[size]" (= array) regex = re.compile("""(?P<name>\w+)\s*(\[(?P<size>\d+)\])\s*""") uniforms = [] for i in range(count): name, size, gtype = gl.glGetActiveUniform(self.handle, i) name = name.decode() # This checks if the uniform is an array # Name will be something like xxx[0] instead of xxx m = regex.match(name) # When uniform is an array, size corresponds to the highest used index if m: name = m.group('name') if size >= 1: for i in range(size): name = '%s[%d]' % (m.group('name'),i) uniforms.append((name, gtype)) else: uniforms.append((name, gtype)) return uniforms
def _get_active_uniforms(self): """ Extract active uniforms from GPU """ count = gl.glGetProgramiv(self.handle, gl.GL_ACTIVE_UNIFORMS) # This match a name of the form "name[size]" (= array) regex = re.compile("""(?P<name>\w+)\s*(\[(?P<size>\d+)\])\s*""") uniforms = [] for i in range(count): name, size, gtype = gl.glGetActiveUniform(self.handle, i) # This checks if the uniform is an array # Name will be something like xxx[0] instead of xxx m = regex.match(name) # When uniform is an array, size corresponds to the highest used index if m: name = m.group('name') if size >= 1: for i in range(size): name = '%s[%d]' % (m.group('name'),i) uniforms.append((name, gtype)) else: uniforms.append((name, gtype)) return uniforms