program.ProgramDescription

moderngl_window.meta.program.ProgramDescription[source]

Describes a program to load

By default a program can be loaded in the following ways:

  • By supplying a path to s single glsl file containing all shaders

  • By supplying several paths to separate files containing each shader type. For example vertex_shader, fragment_shader .. etc.

# Single glsl file containing all shaders
ProgramDescription(path='programs/myprogram.glsl')

# Multiple shader files
ProgramDescription(
    vertex_shader='programs/myprogram_vs.glsl'.
    fragment_shader='programs/myprogram_fs.glsl'.
    geometry_shader='programs/myprogram_gs.glsl'.
)

Methods

ProgramDescription.__init__(path: str | None = None, kind: str | None = None, reloadable=False, vertex_shader: str | None = None, geometry_shader: str | None = None, fragment_shader: str | None = None, tess_control_shader: str | None = None, tess_evaluation_shader: str | None = None, compute_shader: str | None = None, defines: dict | None = None, varyings: List | None = None, **kwargs)[source]

Create a program description

Keyword Arguments:
  • path (str) – path to the resource relative to search directories

  • kind (str) – The kind of loader to use

  • reloadable (bool) – Should this program be reloadable

  • vertex_shader (str) – Path to vertex shader file

  • geometry_shader (str) – Path to geometry shader

  • fragment_shader (str) – Path to fragmet shader

  • tess_control_shader (str) –

  • tess_evaluation_shader (str) – Path to tess eval shader

  • compute_shader (str) – Path to compute shader

  • defines (dict) – Dictionary with define values to replace in the source

  • varyings (List) – List of varying names for transform shader

  • **kwargs – Optional custom attributes

Attributes

ProgramDescription.tess_evaluation_shader

Relative path to tessellation evaluation shader

Type:

str

ProgramDescription.vertex_shader

Relative path to vertex shader

Type:

str

ProgramDescription.geometry_shader

Relative path to geometry shader

Type:

str

ProgramDescription.reloadable

if this program is reloadable

Type:

bool

ProgramDescription.fragment_shader

Relative path to fragment shader

Type:

str

ProgramDescription.tess_control_shader

Relative path to tess control shader

Type:

str

ProgramDescription.compute_shader

Relative path to compute shader

Type:

str

ProgramDescription.defines

Dictionary with define values to replace in the source

Type:

dict

ProgramDescription.varyings

List of varying names for transform shaders

Type:

List

Inherited Attributes

ProgramDescription.path

The path to a resource when a single file is specified

Type:

str

ProgramDescription.resolved_path

The resolved path by a finder.

The absolute path to the resource can optionally be assigned by a loader class.

Type:

pathlib.Path

ProgramDescription.attrs

All keywords arguments passed to the resource

Type:

dict

ProgramDescription.label

optional name for the resource

Assigning a label is not mandatory but can help when aliasing resources. Some prefer to preload all needed resources and fetch them later by the label. This can he a lot less chaotic in larger applications.

Type:

str

ProgramDescription.kind

default resource kind.

The resource kind is directly matched with the kind in loader classes.

This property also supports assignment and is useful if the kind is detected based in the the attribute values.

description.kind = 'something'
Type:

str

ProgramDescription.loader_cls

The loader class for this resource.

This property is assigned to during the loading stage were a loader class is assigned based on the kind.

Type:

Type

ProgramDescription.default_kind = None

The default kind for this resource type

Type:

str

ProgramDescription.resource_type = 'programs'

A unique identifier for the resource type

Type:

str