Source code for picogl.backend.gl.fog

"""
Provides constants for working with fog-related properties in OpenGL.

This module defines the `GLFog` class, which encapsulates fog-related
constants from the OpenGL 1.0 version. These constants can be used
to configure fog parameters, including fog color, start and end
distances, and fog mode.
"""

from OpenGL.raw.GL.VERSION.GL_1_0 import (
    GL_FOG,
    GL_FOG_COLOR,
    GL_FOG_END,
    GL_FOG_INDEX,
    GL_FOG_MODE,
    GL_FOG_START,
    GL_LINEAR,
    glFogf,
    glFogfv,
    glFogi,
)

from picogl.backend.gl.driver.capability import GLCapabilityDriver


[docs] class GLFog: """gl Fog"""
[docs] FOG = GL_FOG
[docs] FOG_COLOR = GL_FOG_COLOR
[docs] FOG_END = GL_FOG_END
[docs] FOG_MODE = GL_FOG_MODE
[docs] FOG_START = GL_FOG_START
[docs] FOG_INDEX = GL_FOG_INDEX
[docs] def set_fog_state( fog_state: bool, fog_density_value: float, fog_start_value: float, fog_end_value: float, ) -> None: """ set_fog_state :param fog_density_value: float :param fog_end_value: float :param fog_start_value: float :param fog_state: bool :return: None """ if fog_start_value >= fog_end_value: fog_start_value = fog_end_value - 1 fog_density_value = min(0.3, fog_density_value) if fog_state: GLCapabilityDriver.enable(GLFog.FOG) glFogfv( GLFog.FOG_COLOR, [ fog_density_value, fog_density_value, fog_density_value, fog_density_value, ], ) glFogi(GLFog.FOG_MODE, GL_LINEAR) glFogf(GLFog.FOG_START, fog_start_value) glFogf(GLFog.FOG_END, fog_end_value) else: GLCapabilityDriver.disable(GLFog.FOG)