Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
Loading...
Searching...
No Matches
shockwave.h
Go to the documentation of this file.
1
12#ifndef SHOCKWAVE_H
13#define SHOCKWAVE_H
14
15#include "gl_common.h"
16#include <cglm/types.h>
17#include <stdbool.h>
18
19typedef struct Shader Shader;
20
23
25static const float SHOCKWAVE_DURATION = 1.2F * 3.0F;
26
28static const float SHOCKWAVE_MAX_RADIUS = 6.0F;
29
32static const float SHOCKWAVE_MIN_VELOCITY = 0.05F;
33
35static const float SHOCKWAVE_HDR_INTENSITY = 4.0F;
36
41typedef struct {
42 vec3 position;
43 float start_time;
44 vec3 color;
45 float intensity;
47
52typedef struct {
54 int count;
57 GLuint vao;
58 GLuint vbo;
60 /* Grab pass: copy of scene color before shockwave draw so the
61 * fragment shader can read scene pixels without read/write hazard. */
62 GLuint grab_tex;
68
74
79
91void shockwave_emit(ShockwaveRenderer* renderer, const vec3 position,
92 const vec3 color, float velocity, float sim_time);
93
97void shockwave_update(ShockwaveRenderer* renderer, float sim_time);
98
116void shockwave_draw(const ShockwaveRenderer* renderer, mat4 view, mat4 proj,
117 vec3 camera_pos, float sim_time, int screen_w,
118 int screen_h);
119
120#endif /* SHOCKWAVE_H */
Common OpenGL definitions, RAII helpers, and utilities.
static const float SHOCKWAVE_DURATION
Definition shockwave.h:25
void shockwave_emit(ShockwaveRenderer *renderer, const vec3 position, const vec3 color, float velocity, float sim_time)
Registers a new shockwave at the given position.
Definition shockwave.c:81
static const float SHOCKWAVE_MAX_RADIUS
Definition shockwave.h:28
static const float SHOCKWAVE_MIN_VELOCITY
Definition shockwave.h:32
@ SHOCKWAVE_MAX_ACTIVE
Definition shockwave.h:22
void shockwave_renderer_cleanup(ShockwaveRenderer *renderer)
Releases all GPU resources.
Definition shockwave.c:63
static const float SHOCKWAVE_HDR_INTENSITY
Definition shockwave.h:35
void shockwave_update(ShockwaveRenderer *renderer, float sim_time)
Removes expired shockwaves based on current simulation time.
Definition shockwave.c:116
bool shockwave_renderer_init(ShockwaveRenderer *renderer)
Initializes shockwave renderer (shader + GPU resources).
Definition shockwave.c:27
void shockwave_draw(const ShockwaveRenderer *renderer, mat4 view, mat4 proj, vec3 camera_pos, float sim_time, int screen_w, int screen_h)
Draws all active shockwaves as billboard quads with lensing.
Definition shockwave.c:166
Wrapper for an OpenGL program with uniform caching and automatic cleanup.
Definition shader.h:71
One active shockwave expanding from an impact point.
Definition shockwave.h:41
vec3 position
Definition shockwave.h:42
float intensity
Definition shockwave.h:45
float start_time
Definition shockwave.h:43
vec3 color
Definition shockwave.h:44
Manages and renders active shockwave effects.
Definition shockwave.h:52
GLuint vao
Definition shockwave.h:57
GLuint scene_color_tex
Definition shockwave.h:65
GLuint grab_tex
Definition shockwave.h:62
int count
Definition shockwave.h:54
int grab_width
Definition shockwave.h:63
GLuint vbo
Definition shockwave.h:58
int grab_height
Definition shockwave.h:64
Shader * shader
Definition shockwave.h:56