13 #ifndef TRAIL_RENDERER_H
14 #define TRAIL_RENDERER_H
18 #include <cglm/types.h>
Common OpenGL definitions, RAII helpers, and utilities.
N-body gravitational simulation (Velocity Verlet + Plummer softening).
@ NBODY_MAX_BODIES
Definition: nbody.h:21
State container for the N-body simulation.
Definition: nbody.h:104
Wrapper for an OpenGL program with uniform caching and automatic cleanup.
Definition: shader.h:71
Runtime-adjustable neon glow profile parameters.
Definition: trail_renderer.h:83
float core_exp
Definition: trail_renderer.h:85
TrailNeonParam active
Definition: trail_renderer.h:87
float width
Definition: trail_renderer.h:86
float intensity
Definition: trail_renderer.h:84
Manages trail state and GPU resources for all bodies.
Definition: trail_renderer.h:105
TrailNeonParams neon
Definition: trail_renderer.h:122
float trail_duration
Definition: trail_renderer.h:110
int body_count
Definition: trail_renderer.h:107
GLuint vao
Definition: trail_renderer.h:113
Shader * shader
Definition: trail_renderer.h:115
float sample_timer
Definition: trail_renderer.h:108
float sim_time
Definition: trail_renderer.h:109
int vertex_count
Definition: trail_renderer.h:116
GLuint vbo
Definition: trail_renderer.h:114
Ring buffer of recorded positions for one body.
Definition: trail_renderer.h:60
int count
Definition: trail_renderer.h:65
int head
Definition: trail_renderer.h:64
Per-vertex data for the ribbon triangle strip.
Definition: trail_renderer.h:49
float u
Definition: trail_renderer.h:51
float v
Definition: trail_renderer.h:53
static const float TRAIL_NEON_INTENSITY_STEP
Definition: trail_renderer.h:94
float trail_renderer_get_duration(const TrailRenderer *tr)
Returns the current trail duration in seconds.
Definition: trail_renderer.c:359
static const float TRAIL_NEON_CORE_STEP
Definition: trail_renderer.h:95
static const float TRAIL_HDR_INTENSITY
Definition: trail_renderer.h:27
static const float TRAIL_DURATION_MAX
Definition: trail_renderer.h:40
static const float TRAIL_NEON_CORE_EXP_DEFAULT
Definition: trail_renderer.h:92
void trail_renderer_set_color(TrailRenderer *tr, int body_index, const vec3 color)
Sets the trail color for a specific body.
Definition: trail_renderer.c:106
static const float TRAIL_NEON_INTENSITY_DEFAULT
Definition: trail_renderer.h:91
static const float TRAIL_MAX_WIDTH
Definition: trail_renderer.h:30
@ TRAIL_MAX_POINTS
Definition: trail_renderer.h:24
static const float TRAIL_NEON_WIDTH_STEP
Definition: trail_renderer.h:96
static const float TRAIL_DURATION_STEP
Definition: trail_renderer.h:41
bool trail_renderer_init(TrailRenderer *tr, int body_count)
Initializes trail renderer resources.
Definition: trail_renderer.c:57
void trail_renderer_clear(TrailRenderer *tr)
Clears all recorded trail data (e.g., on simulation reset).
Definition: trail_renderer.c:124
static const float TRAIL_NEON_WIDTH_DEFAULT
Definition: trail_renderer.h:93
void trail_renderer_cleanup(TrailRenderer *tr)
Releases all GPU resources.
Definition: trail_renderer.c:114
static const float TRAIL_DURATION_DEFAULT
Definition: trail_renderer.h:36
void trail_renderer_record(TrailRenderer *tr, const NBodySim *sim, float delta_time)
Records current positions from the simulation.
Definition: trail_renderer.c:137
static const float TRAIL_DURATION_MIN
Definition: trail_renderer.h:39
static const float TRAIL_NEON_CORE_MIN
Definition: trail_renderer.h:98
static const float TRAIL_NEON_WIDTH_MIN
Definition: trail_renderer.h:99
static const float TRAIL_SAMPLE_INTERVAL
Definition: trail_renderer.h:33
void trail_renderer_set_duration(TrailRenderer *tr, float duration)
Sets the trail duration in seconds (clamped to valid range).
Definition: trail_renderer.c:364
static const float TRAIL_NEON_INTENSITY_MIN
Definition: trail_renderer.h:97
TrailNeonParam
Identifies which neon parameter is being adjusted.
Definition: trail_renderer.h:72
@ TRAIL_NEON_PARAM_COUNT
Definition: trail_renderer.h:76
@ TRAIL_NEON_PARAM_WIDTH
Definition: trail_renderer.h:75
@ TRAIL_NEON_PARAM_CORE
Definition: trail_renderer.h:74
@ TRAIL_NEON_PARAM_INTENSITY
Definition: trail_renderer.h:73
void trail_renderer_draw(TrailRenderer *tr, mat4 view, mat4 proj, vec3 cam_pos)
Builds ribbon geometry and renders all trails.
Definition: trail_renderer.c:272