$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
env_manager.h
Go to the documentation of this file.
1 
10 #ifndef ENV_MANAGER_H
11 #define ENV_MANAGER_H
12 
13 #include "app_settings.h"
14 #include "async_loader.h"
15 #include "gl_common.h"
16 #include "ibl_coordinator.h"
17 #include "postprocess.h"
18 
19 // Forward declarations
20 typedef struct Scene Scene;
21 
26 typedef struct EnvManager {
36  GLuint pending_env_tex;
37 } EnvManager;
38 
46 int env_manager_load(EnvManager* mgr, AsyncLoader* loader,
47  const char* filename);
48 
55 void env_manager_process_loading_step(EnvManager* mgr, GLuint* recycled_hdr_tex,
56  IBLCoordinator* ibl);
57 
66  const char* filename);
67 
81 void env_manager_update_ibl(EnvManager* mgr, Scene* scene,
82  PostProcess* postproc, uint64_t frame_count,
83  int width, int height);
84 
94  PostProcess* postproc, double delta_time,
95  uint64_t frame_count);
96 
102 void env_manager_render_overlay(const EnvManager* mgr, const Scene* scene);
103 
104 #endif /* ENV_MANAGER_H */
Global application constants, configuration macros, and default values.
Threaded asynchronous file loader for heavy assets (HDR, textures).
void env_manager_update_transition(EnvManager *mgr, Scene *scene, PostProcess *postproc, double delta_time, uint64_t frame_count)
Updates the environment transition animation.
Definition: env_manager.c:243
void env_manager_process_loading_step(EnvManager *mgr, GLuint *recycled_hdr_tex, IBLCoordinator *ibl)
Processes the multi-frame HDR environment loading state machine.
Definition: env_manager.c:46
int env_manager_load(EnvManager *mgr, AsyncLoader *loader, const char *filename)
Starts an asynchronous load of an environment map.
Definition: env_manager.c:19
void env_manager_render_overlay(const EnvManager *mgr, const Scene *scene)
Renders the transition overlay (fade/crossfade).
Definition: env_manager.c:287
void env_manager_update_ibl(EnvManager *mgr, Scene *scene, PostProcess *postproc, uint64_t frame_count, int width, int height)
Updates the IBL state machine and handles transition events.
Definition: env_manager.c:226
int env_manager_trigger_transition(EnvManager *mgr, AsyncLoader *loader, const char *filename)
Triggers a new environment transition.
Definition: env_manager.c:117
Common OpenGL definitions, RAII helpers, and utilities.
TransitionState
States for the environment map transition.
Definition: app_settings.h:159
Coordinator for progressive Image-Based Lighting (IBL) generation.
High-level post-processing pipeline and effects.
Opaque handle to the asynchronous loader context.
Definition: async_loader.c:17
Container for asynchronous load results and metadata.
Definition: async_loader.h:40
Encapsulates state for environment loading, transitions, and IBL.
Definition: env_manager.h:26
GLuint pending_env_tex
Definition: env_manager.h:36
int env_transition_mode
Definition: env_manager.h:35
TransitionState transition_state
Definition: env_manager.h:31
float transition_alpha
Definition: env_manager.h:32
int env_map_loading
Definition: env_manager.h:27
AsyncRequest current_env_req
Definition: env_manager.h:30
int is_first_load
Definition: env_manager.h:34
float transition_duration
Definition: env_manager.h:33
int env_map_loading_step
Definition: env_manager.h:28
Manages the progressive IBL generation process.
Definition: ibl_coordinator.h:36
Main pipeline state for post-processing.
Definition: postprocess.h:353
Encapsulates all 3D scene data, geometry, and rendering state.
Definition: scene.h:138