$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
ssbo_rendering.h
Go to the documentation of this file.
1 
10 #ifndef SSBO_RENDERING_H
11 #define SSBO_RENDERING_H
12 
13 #include "gl_common.h"
14 #include <cglm/types.h>
15 
22 typedef struct {
23  mat4 model;
24  vec3 albedo;
25  float metallic;
26  float roughness;
27  float ao;
28  float _padding[2];
30 
35 typedef struct {
36  GLuint ssbo;
37  GLuint vao;
39 } SSBOGroup;
40 
47 void ssbo_group_init(SSBOGroup* group, const SphereInstanceSSBO* data,
48  int count);
49 
57 void ssbo_group_bind_mesh(SSBOGroup* group, GLuint vbo, GLuint nbo, GLuint ebo);
58 
64 void ssbo_group_draw(SSBOGroup* group, size_t index_count);
65 
70 void ssbo_group_cleanup(SSBOGroup* group);
71 
72 #endif /* SSBO_RENDERING_H */
Common OpenGL definitions, RAII helpers, and utilities.
void ssbo_group_draw(SSBOGroup *group, size_t index_count)
Renders the group using instanced drawing.
Definition: ssbo_rendering.c:62
void ssbo_group_bind_mesh(SSBOGroup *group, GLuint vbo, GLuint nbo, GLuint ebo)
Binds a mesh (VBO/EBO) to the SSBO VAO.
Definition: ssbo_rendering.c:35
void ssbo_group_init(SSBOGroup *group, const SphereInstanceSSBO *data, int count)
Initializes an SSBO group with instance data.
Definition: ssbo_rendering.c:7
void ssbo_group_cleanup(SSBOGroup *group)
Releases GPU resources.
Definition: ssbo_rendering.c:72
GPU resources for an SSBO-based render group.
Definition: ssbo_rendering.h:35
int instance_count
Definition: ssbo_rendering.h:38
GLuint vao
Definition: ssbo_rendering.h:37
GLuint ssbo
Definition: ssbo_rendering.h:36
Aligned structure for SSBO storage (std430 layout).
Definition: ssbo_rendering.h:22
float metallic
Definition: ssbo_rendering.h:25
vec3 albedo
Definition: ssbo_rendering.h:24
float roughness
Definition: ssbo_rendering.h:26
mat4 model
Definition: ssbo_rendering.h:23
float ao
Definition: ssbo_rendering.h:27