Source code for picogl.shaders.compile

"""
Open GL shader_manager.current_shader_program compilation

"""

from typing import Optional

from picogl.backend.modern.core.shader.program import ShaderProgram
from picogl.logger import Logger as log

[docs] VERTEX_SHADER_SRC_HARDCODED_TEST = """#version 330 core layout(location = 0) in vec3 in_position; layout(location = 1) in vec3 in_color; uniform mat4 mvp_matrix; uniform float u_base_point_size; out vec3 frag_color; void main() { gl_Position = mvp_matrix * vec4(in_position, 1.0); frag_color = in_color; gl_PointSize = u_base_point_size; } """
[docs] def compile_shaders( vertex_src: str, fragment_src: str, shader_name: Optional[str] ) -> Optional[ShaderProgram]: """ Compiles and links a vertex + fragment shader_manager.current_shader_program shader_program using Qt's OpenGL API. :param shader_name: str :param vertex_src: Vertex shader_manager.current_shader_program GLSL code. :param fragment_src: Fragment shader_manager.current_shader_program GLSL code. :return: Linked PicoGLShader or None on failure. """ picogl_program = ShaderProgram(shader_name=shader_name) picogl_program.init_shader_from_glsl(vertex_src, fragment_src) return picogl_program
[docs] def _log_shader_preview(vertex_src: str, fragment_src: str, preview_len: int = 200): """ _log_shader_preview :param vertex_src: str :param fragment_src: str :param preview_len: int :return: """ log.message(f"📄 Vertex Shader Preview:\n{vertex_src[:preview_len]}...") log.message(f"📄 Fragment Shader Preview:\n{fragment_src[:preview_len]}...")