68 int count,
size_t stride,
float padding);
97 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:90
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:430
@ TEXTURE_UNIT_SH_START
Definition light_probes.h:17
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:143
void light_probe_grid_render_debug(LightProbeGrid *grid, mat4 view, mat4 proj)
Renders debug spheres for the probes.
Definition light_probes.c:676
void light_probe_grid_cleanup(LightProbeGrid *grid)
Cleans up all resources (CPU, GPU, Threads).
Definition light_probes.c:626
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:502
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:543
void light_probe_grid_update_async(LightProbeGrid *grid)
Signals the worker thread to perform an SH update.
Definition light_probes.c:530
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:479
@ SH_TEXTURE_COUNT
Definition light_probes.h:14
void light_probe_grid_free_cpu(LightProbeGrid *grid)
Cleans up CPU resources.
Definition light_probes.c:169
Definition light_probes.h:24
SphereInstance * scene_copy
Definition light_probes.h:39
pthread_t worker_thread
Definition light_probes.h:43
Shader * aabb_shader
Definition light_probes.h:52
pthread_mutex_t mutex
Definition light_probes.h:44
int scene_count
Definition light_probes.h:40
Shader * debug_shader
Definition light_probes.h:51
int total_probes
Definition light_probes.h:36
volatile bool update_pending
Definition light_probes.h:47
unsigned int aabb_vao
Definition light_probes.h:54
unsigned int aabb_vbo
Definition light_probes.h:55
unsigned int ssbo
Definition light_probes.h:27
ivec3 grid_dim
Definition light_probes.h:34
volatile bool running
Definition light_probes.h:46
unsigned int dummy_vao
Definition light_probes.h:53
pthread_cond_t cond
Definition light_probes.h:45
LightProbe * probes
Definition light_probes.h:26
vec3 aabb_min
Definition light_probes.h:32
volatile bool results_ready
Definition light_probes.h:48
vec3 cell_size
Definition light_probes.h:35
vec3 aabb_max
Definition light_probes.h:33
Definition light_probes.h:19
SH9 sh_data
Definition light_probes.h:20
Wrapper for an OpenGL program with uniform caching and automatic cleanup.
Definition shader.h:71
Per-instance data sent to the shader via an instanced VBO.
Definition sphere_types.h:25