74 int count,
size_t stride,
float padding);
103 int count,
size_t stride);
void light_probe_grid_compute_aabb(LightProbeGrid *grid, const void *spheres, int count, size_t stride, float padding)
Computes the AABB for the grid based on sphere instances.
Definition: light_probes.c:80
void light_probe_grid_init(LightProbeGrid *grid, int dim_x, int dim_y, int dim_z)
Initializes the grid structure, creates SSBO, and starts worker thread.
Definition: light_probes.c:419
void light_probe_grid_init_cpu(LightProbeGrid *grid, int dim_x, int dim_y, int dim_z)
Initializes the grid structure (CPU only).
Definition: light_probes.c:133
void light_probe_grid_cleanup(LightProbeGrid *grid)
Cleans up all resources (CPU, GPU, Threads).
Definition: light_probes.c:615
void light_probe_grid_set_scene(LightProbeGrid *grid, const void *spheres, int count, size_t stride)
Updates the scene data used by the grid (copies it).
Definition: light_probes.c:491
void light_probe_grid_sync(LightProbeGrid *grid)
Checks if results are ready and uploads to GPU. Should be called on main thread.
Definition: light_probes.c:532
@ TEXTURE_UNIT_SH_START
Definition: light_probes.h:23
void light_probe_grid_update_async(LightProbeGrid *grid)
Signals the worker thread to perform an SH update.
Definition: light_probes.c:519
void light_probe_grid_set_bounds(LightProbeGrid *grid, vec3 aabb_min, vec3 aabb_max)
Sets the grid AABB and computes cell sizes from dimensions.
Definition: light_probes.c:468
@ SH_TEXTURE_COUNT
Definition: light_probes.h:21
void light_probe_render_debug(LightProbeGrid *grid, mat4 view, mat4 proj)
Renders debug spheres for the probes.
Definition: light_probes.c:665
void light_probe_grid_free_cpu(LightProbeGrid *grid)
Cleans up CPU resources.
Definition: light_probes.c:159
High-level OpenGL shader management with metadata and uniform caching.
Definition: light_probes.h:30
pthread_t worker_thread
Definition: light_probes.h:49
Shader * aabb_shader
Definition: light_probes.h:58
pthread_mutex_t mutex
Definition: light_probes.h:50
int scene_count
Definition: light_probes.h:46
Shader * debug_shader
Definition: light_probes.h:57
int total_probes
Definition: light_probes.h:42
unsigned int aabb_vao
Definition: light_probes.h:60
unsigned int aabb_vbo
Definition: light_probes.h:61
unsigned int ssbo
Definition: light_probes.h:33
ivec3 grid_dim
Definition: light_probes.h:40
unsigned int dummy_vao
Definition: light_probes.h:59
pthread_cond_t cond
Definition: light_probes.h:51
volatile int update_pending
Definition: light_probes.h:53
LightProbe * probes
Definition: light_probes.h:32
vec3 aabb_min
Definition: light_probes.h:38
volatile int results_ready
Definition: light_probes.h:54
SphereInstance_POD * scene_copy
Definition: light_probes.h:45
vec3 cell_size
Definition: light_probes.h:41
volatile int running
Definition: light_probes.h:52
vec3 aabb_max
Definition: light_probes.h:39
Definition: light_probes.h:25
SH9 sh_data
Definition: light_probes.h:26
Wrapper for an OpenGL program with uniform caching and automatic cleanup.
Definition: shader.h:71
Definition: light_probes.h:10
vec3 albedo
Definition: light_probes.h:12
mat4 model
Definition: light_probes.h:11
float ao
Definition: light_probes.h:15
float roughness
Definition: light_probes.h:14
float metallic
Definition: light_probes.h:13
float padding
Definition: light_probes.h:16