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
ComputeShader
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.Parameters: source (str) – The source of the compute shader. Returns: ComputeShader
object
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
,Attribute
orVarying
-
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