picogl.shaders.manager
Example Usage
Illustrative only (needs an OpenGL context, loaded shader sources, my_mvp_matrix,
and set_common_uniforms in scope):
shader_manager = ShaderManager()
for shader_type_value in ShaderType:
shader_manager.load_shader_source_string(shader_type_value)
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
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]
- 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
- bind(shader_program: picogl.backend.modern.core.shader.program.ShaderProgram) None[source]
bind
- Parameters:
shader_program – ShaderProgram
- Returns:
None
- 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.
- load_shader(shader_type: str, shader_number: int) None[source]
load_shader
- Parameters:
shader_type – ShaderType
- Returns:
None