Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
Loading...
Searching...
No Matches
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
22typedef struct {
23 mat4 model;
24 vec3 albedo;
25 float metallic;
26 float roughness;
27 float ao;
28 float _padding[2];
30
35typedef struct {
36 GLuint ssbo;
37 GLuint vao;
39} SSBOGroup;
40
47void ssbo_group_init(SSBOGroup* group, const SphereInstanceSSBO* data,
48 int count);
49
57void ssbo_group_bind_mesh(SSBOGroup* group, GLuint vbo, GLuint nbo, GLuint ebo);
58
64void ssbo_group_draw(SSBOGroup* group, size_t index_count);
65
70void 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:57
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:28
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:67
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