picogl.shaders.manager

Example Usage:

>>>shader_manager = ShaderManager() … …# Load all src …for shader_type_value in ShaderType: … shader_manager.load_shader_source_string(shader_type_value) … …# Use a shader_manager.current_shader_program …if shader_manager.use_shader_type(ShaderType.ATOMS): … shader_manager.current_shader_program = shader_manager.get(ShaderType.ATOMS) … set_common_uniforms( … shader_manager.current_shader_program, … mvp_matrix=my_mvp_matrix, … point_size=15.0, … highlight=True, … highlight_color=(1.0, 1.0, 0.0) … )

File naming convention:

Ensure GLSL files follow the naming pattern:

atoms_vert.glsl atoms_frag.glsl bonds_vert.glsl bonds_frag.glsl

Classes

ShaderManager

Module Contents

class picogl.shaders.manager.ShaderManager[source]
shaders: Dict[picogl.shaders.type.ShaderType, picogl.backend.modern.core.shader.program.ShaderProgram][source]
fallback_shader: picogl.backend.modern.core.shader.program.ShaderProgram | None = None[source]
default_shader_type: picogl.shaders.type.ShaderType[source]
current_shader_type: picogl.shaders.type.ShaderType[source]
current_shader: picogl.backend.modern.core.shader.program.ShaderProgram | None = None[source]
current_shader_program: int | None = None[source]
_initialized: bool = False[source]
shader_directory: str = ''[source]
fallback_shader_directory: str = ''[source]
use_shader_program(shader_program: picogl.backend.modern.core.shader.program.ShaderProgram) None[source]

use_shader_program

Parameters:

shader_program – PicoGLShader

Returns:

None

Bind the given shader shader_program and update current_shader/shader_program ID

get_shader_type(shader_type: picogl.shaders.type.ShaderType) picogl.backend.modern.core.shader.program.ShaderProgram | picogl.backend.modern.core.shader.program.ShaderProgram | None[source]

Return the shader shader_program for the given ShaderType, loading if necessary.

use_shader_type(shader_type: picogl.shaders.type.ShaderType, mvp_matrix: numpy.ndarray | pyglm.glm.mat4 = None, zoom_scale: int = None) None[source]

use_shader_type

Parameters:
  • zoom_scale – int

  • shader_type – ShaderType

  • mvp_matrix – np.ndarray | glm.mat4 = None

Returns:

None

Load (if needed) and bind the shader of the given type

update_mvp_uniform(mvp_matrix: numpy.ndarray | pyglm.glm.mat4) None[source]

update_mvp_uniform

Parameters:

mvp_matrix – np.ndarray | glm.mat4:

Returns:

None

set_uniform_value(uniform_name: str, uniform_value: float | int | pyglm.glm.vec2 | pyglm.glm.vec3 | pyglm.glm.vec4 | pyglm.glm.mat4 | numpy.ndarray) None[source]

set_uniform_value

Parameters:
  • uniform_name – str

  • uniform_value – Union[float, int, glm.vec2, glm.vec3, glm.vec4, glm.mat4, np.ndarray]

Returns:

None

use_default_shader(mvp_matrix: numpy.ndarray | pyglm.glm.mat4 = None) None[source]

use_default_shader

Parameters:

mvp_matrix – np.ndarray | glm.mat4

Returns:

Bind the default shader type.

initialize_shaders(shader_dir: str = None)[source]

Initialize src and mark GL state as ready.

load_shader(shader_type: str, shader_number: int) None[source]

load_shader

Parameters:

shader_type – ShaderType

Returns:

None

_ensure_fallback()[source]

_ensure_fallback

Returns:

None

get(shader_type: picogl.shaders.type.ShaderType) picogl.backend.modern.core.shader.program.ShaderProgram | picogl.backend.modern.core.shader.program.ShaderProgram | None[source]
release_shaders()[source]

release_shaders

Returns:

None