ComputeShader¶
-
class
moderngl.ComputeShader¶ A Compute Shader is a Shader Stage that is used entirely for computing arbitrary information. While it can do rendering, it is generally used for tasks not directly related to drawing.
- Compute shaders support uniforms are other member object just like a
moderngl.Program. - Storage buffers can be bound using
Buffer.bind_to_storage_buffer(). - Uniform buffers can be bound using
Buffer.bind_to_uniform_block(). - Images can be bound using
Texture.bind_to_image().
- Compute shaders support uniforms are other member object just like a
Create¶
-
Context.compute_shader(source) → ComputeShader A
ComputeShaderis a Shader Stage that is used entirely for computing arbitrary information. While it can do rendering, it is generally used for tasks not directly related to drawing.Parameters: source (str) – The source of the compute shader. Returns: ComputeShaderobject
Methods¶
-
ComputeShader.run(group_x=1, group_y=1, group_z=1)¶ Run the compute shader.
Parameters: - group_x (int) – The number of work groups to be launched in the X dimension.
- group_y (int) – The number of work groups to be launched in the Y dimension.
- group_z (int) – The number of work groups to be launched in the Z dimension.
-
ComputeShader.get(key, default) → Union[Uniform, UniformBlock, Subroutine, Attribute, Varying]¶ Returns a Uniform, UniformBlock, Subroutine, Attribute or Varying.
Parameters: default – This is the value to be returned in case key does not exist. Returns: Uniform,UniformBlock,Subroutine,AttributeorVarying
-
ComputeShader.release()¶ Release the ModernGL object.
-
ComputeShader.__eq__(other)¶ Compares to compute shaders ensuring the internal opengl name/id is the same
-
ComputeShader.__getitem__(key) → Union[Uniform, UniformBlock, Subroutine, Attribute, Varying]¶ Get a member such as uniforms, uniform blocks, subroutines, attributes and varyings by name.
# Get a uniform uniform = program['color'] # Uniform values can be set on the returned object # or the `__setitem__` shortcut can be used. program['color'].value = 1.0, 1.0, 1.0, 1.0 # Still when writing byte data we need to use the `write()` method program['color'].write(buffer)
-
ComputeShader.__setitem__(key, value)¶ Set a value of uniform or uniform block
# Set a vec4 uniform uniform['color'] = 1.0, 1.0, 1.0, 1.0 # Optionally we can store references to a member and set the value directly uniform = program['color'] uniform.value = 1.0, 0.0, 0.0, 0.0 uniform = program['cameraMatrix'] uniform.write(camera_matrix)
-
ComputeShader.__iter__() → Generator[str, NoneType, NoneType]¶ Yields the internal members names as strings. This includes all members such as uniforms, attributes etc.
Attributes¶
-
ComputeShader.glo¶ The internal OpenGL object. This values is provided for debug purposes only.
Type: int
-
ComputeShader.mglo¶ Internal representation for debug purposes only.
-
ComputeShader.extra¶ Any - Attribute for storing user defined objects
-
ComputeShader.ctx¶ The context this object belongs to