# program.ProgramDescription

moderngl_window.meta.program.ProgramDescription

  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)

  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