Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
Loading...
Searching...
No Matches
billboard_sorter.h
Go to the documentation of this file.
1
6#ifndef BILLBOARD_SORTER_H
7#define BILLBOARD_SORTER_H
8
9#include "gl_common.h"
10#include "scene_config.h"
11#include "sphere_types.h"
12#include <cglm/cglm.h>
13
18typedef struct {
20 float depth;
22
27typedef struct {
30 GLuint index_ssbo;
33 /* Cached uniform locations (resolved once at init). */
34 GLint loc_stage;
35 GLint loc_count;
37 GLint loc_cam;
38 GLint loc_j;
39 GLint loc_k;
48
54void billboard_sorter_init(BillboardSorter* sorter, int initial_capacity);
55
61
71 const SphereInstance* instances, int count,
72 const vec3 camera_pos);
73
83 const SphereInstance* instances, int count,
84 const vec3 camera_pos);
85
96 const SphereInstance* instances,
97 int count, const vec3 camera_pos);
98
109 const SphereInstance* instances, int count,
110 const vec3 camera_pos, SortingMode mode);
111
112#endif /* BILLBOARD_SORTER_H */
GLuint billboard_sorter_sort_cpu_radix(BillboardSorter *sorter, const SphereInstance *instances, int count, const vec3 camera_pos)
Sorts the array of instances Back-to-Front (descending depth) using Radix Sort.
Definition billboard_sorter.c:418
GLuint billboard_sorter_sort_gpu(BillboardSorter *sorter, const SphereInstance *instances, int count, const vec3 camera_pos)
Sorts the array of instances Back-to-Front (descending depth) on GPU.
Definition billboard_sorter.c:208
void billboard_sorter_init(BillboardSorter *sorter, int initial_capacity)
Allocates internal buffers for the sorter.
Definition billboard_sorter.c:135
GLuint billboard_sorter_sort(BillboardSorter *sorter, const SphereInstance *instances, int count, const vec3 camera_pos, SortingMode mode)
Dispatches the sorting task using the specified SortingMode.
Definition billboard_sorter.c:510
void billboard_sorter_cleanup(BillboardSorter *sorter)
Destroys the sorter context.
Definition billboard_sorter.c:191
GLuint billboard_sorter_sort_cpu(BillboardSorter *sorter, const SphereInstance *instances, int count, const vec3 camera_pos)
Sorts the array of instances Back-to-Front (descending depth) on CPU.
Definition billboard_sorter.c:357
Common OpenGL definitions, RAII helpers, and utilities.
Render configuration flags extracted from Scene.
SortingMode
Sorting algorithms for transparent billboards.
Definition scene_config.h:15
Pure-data type for per-instance sphere attributes.
Lightweight proxy for sorting data without moving large structs.
Definition billboard_sorter.h:18
float depth
Definition billboard_sorter.h:20
int original_index
Definition billboard_sorter.h:19
Reusable memory context for sorting operations.
Definition billboard_sorter.h:27
GLint loc_cam
Definition billboard_sorter.h:37
int cpu_capacity
Definition billboard_sorter.h:45
GLuint instance_ssbo
Definition billboard_sorter.h:29
GLuint index_ssbo
Definition billboard_sorter.h:30
int ssbo_capacity
Definition billboard_sorter.h:44
BillboardSortEntry * entries_aux
Definition billboard_sorter.h:42
GLint loc_j
Definition billboard_sorter.h:38
GLint loc_count_pot
Definition billboard_sorter.h:36
GLint loc_count
Definition billboard_sorter.h:35
GLuint compute_program
Definition billboard_sorter.h:28
int min_capacity
Definition billboard_sorter.h:46
SphereInstance * temp_instances
Definition billboard_sorter.h:43
GLuint sorted_instance_ssbo
Definition billboard_sorter.h:31
GLint loc_k
Definition billboard_sorter.h:39
GLint loc_stage
Definition billboard_sorter.h:34
BillboardSortEntry * entries
Definition billboard_sorter.h:41
Per-instance data sent to the shader via an instanced VBO.
Definition sphere_types.h:25