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.

Create

Context.compute_shader(source: str) moderngl.compute_shader.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: int = 1, group_y: int = 1, group_z: int = 1) None

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: str, default: Any) Union[_moderngl.Uniform, _moderngl.UniformBlock, _moderngl.Subroutine, _moderngl.Attribute, _moderngl.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 or Varying

ComputeShader.release() None

Release the ModernGL object.

ComputeShader.__eq__(other: Any)

Compares to compute shaders ensuring the internal opengl name/id is the same.

ComputeShader.__getitem__(key: str) Union[_moderngl.Uniform, _moderngl.UniformBlock, _moderngl.Subroutine, _moderngl.Attribute, _moderngl.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: str, value: Any)

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, None, None]

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