$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
pp_params.h
Go to the documentation of this file.
1 #ifndef PP_PARAMS_H
2 #define PP_PARAMS_H
3 
16 #include <cglm/types.h>
17 #include <stdint.h>
18 
19 /* --- DEFAULT VALUES --- */
20 #define DEFAULT_VIGNETTE_INTENSITY 0.8F
21 #define DEFAULT_VIGNETTE_SMOOTHNESS 0.5F
22 #define DEFAULT_VIGNETTE_ROUNDNESS 1.0F
23 #define DEFAULT_GRAIN_INTENSITY 0.02F
24 #define DEFAULT_GRAIN_SHADOWS_MAX 0.09F
25 #define DEFAULT_GRAIN_HIGHLIGHTS_MIN 0.5F
26 #define DEFAULT_GRAIN_TEXEL_SIZE 1.0F
27 #define DEFAULT_EXPOSURE 1.00F
28 #define DEFAULT_CHROM_ABBR_STRENGTH 0.005F
29 
30 /* FXAA Defaults */
31 #define DEFAULT_FXAA_SUBPIX 0.75F
32 #define DEFAULT_FXAA_EDGE_THRESHOLD 0.125F
33 #define DEFAULT_FXAA_EDGE_THRESHOLD_MIN 0.063F
34 
35 /* Banding defaults */
36 #define DEFAULT_BANDING_LEVELS 256.0F
38 /* Fog Defaults */
39 #define DEFAULT_FOG_DENSITY 0.0F
40 #define DEFAULT_FOG_START 10.0F
41 #define DEFAULT_FOG_HEIGHT_FALLOFF 0.1F
42 #define DEFAULT_FOG_COLOR_R 0.5F
43 #define DEFAULT_FOG_COLOR_G 0.6F
44 #define DEFAULT_FOG_COLOR_B 0.7F
45 
46 /* White Balance Defaults */
47 #define DEFAULT_WB_TEMP 6500.0F
48 #define DEFAULT_WB_TINT 0.0F
49 
50 /* Filmic Defaults (Safe Neutrals) */
51 #define DEFAULT_FILMIC_SLOPE 1.0F
52 #define DEFAULT_FILMIC_TOE 0.0F
53 #define DEFAULT_FILMIC_SHOULDER 0.0F
54 #define DEFAULT_FILMIC_BLACK_CLIP 0.0F
55 #define DEFAULT_FILMIC_WHITE_CLIP 0.0F
56 
61 typedef struct {
62  float saturation;
63  float contrast;
64  float gamma;
65  float gain;
66  float offset;
67  float lift;
69 
74 typedef struct {
75  float intensity;
76  float smoothness;
77  float roundness;
79 
84 typedef struct {
85  float intensity;
89  float shadows_max;
91  float texel_size;
92 } GrainParams;
93 
98 typedef struct {
99  float exposure;
101 
106 typedef struct {
107  float strength;
109 
114 typedef struct {
115  float temperature;
116  float tint;
118 
123 typedef struct {
124  float slope;
125  float toe;
126  float shoulder;
127  float black_clip;
128  float white_clip;
129 } TonemapParams;
130 
135 typedef struct {
136  float subpix;
140 } FXAAParams;
141 
146 typedef enum {
153 
158 typedef struct {
159  int32_t mode;
160  float levels;
164 } BandingParams;
165 
170 typedef struct {
171  float density;
172  float start;
174  float color[3];
175 } FogParams;
176 
181 typedef enum {
182  POSTFX_VIGNETTE = (1U << 0U),
183  POSTFX_GRAIN = (1U << 1U),
184  POSTFX_EXPOSURE = (1U << 2U),
185  POSTFX_CHROM_ABBR = (1U << 3U),
186  POSTFX_BLOOM = (1U << 4U),
188  (1U << 5U),
189  POSTFX_DOF = (1U << 6U),
190  POSTFX_DOF_DEBUG = (1U << 7U),
192  (1U << 8U),
194  (1U << 9U),
195  POSTFX_MOTION_BLUR = (1U << 10U),
197  (1U << 11U),
198  POSTFX_FXAA = (1U << 12U),
199  POSTFX_FXAA_DEBUG = (1U << 13U),
200  POSTFX_BANDING = (1U << 14U),
202  (1U << 15U),
203  POSTFX_STENCIL_DEBUG = (1U << 16U),
204  POSTFX_BLOOM_DEBUG = (1U << 17U),
205  POSTFX_FOG = (1U << 18U),
206  POSTFX_FOG_DEBUG = (1U << 19U),
207  POSTFX_LUT3D = (1U << 20U),
208  POSTFX_LUT_VIZ = (1U << 21U),
210 
212 #define DEFAULT_ACTIVE_EFFECTS \
213  ((unsigned int)POSTFX_EXPOSURE | (unsigned int)POSTFX_COLOR_GRADING | \
214  (unsigned int)POSTFX_FXAA)
215 
216 #endif /* PP_PARAMS_H */
PostProcessEffect
Bitmask flags for enabling/disabling individual effects.
Definition: pp_params.h:181
@ POSTFX_BANDING
Definition: pp_params.h:200
@ POSTFX_BLOOM_DEBUG
Definition: pp_params.h:204
@ POSTFX_AUTO_EXPOSURE
Definition: pp_params.h:191
@ POSTFX_MOTION_BLUR
Definition: pp_params.h:195
@ POSTFX_DOF_DEBUG
Definition: pp_params.h:190
@ POSTFX_COLOR_GRADING
Definition: pp_params.h:187
@ POSTFX_EXPOSURE_DEBUG
Definition: pp_params.h:193
@ POSTFX_GRAIN
Definition: pp_params.h:183
@ POSTFX_MOTION_BLUR_DEBUG
Definition: pp_params.h:196
@ POSTFX_LUT_VIZ
Definition: pp_params.h:208
@ POSTFX_VECTOR_FIELD_DEBUG
Definition: pp_params.h:201
@ POSTFX_FXAA
Definition: pp_params.h:198
@ POSTFX_DOF
Definition: pp_params.h:189
@ POSTFX_STENCIL_DEBUG
Definition: pp_params.h:203
@ POSTFX_BLOOM
Definition: pp_params.h:186
@ POSTFX_FXAA_DEBUG
Definition: pp_params.h:199
@ POSTFX_LUT3D
Definition: pp_params.h:207
@ POSTFX_FOG_DEBUG
Definition: pp_params.h:206
@ POSTFX_EXPOSURE
Definition: pp_params.h:184
@ POSTFX_FOG
Definition: pp_params.h:205
@ POSTFX_VIGNETTE
Definition: pp_params.h:182
@ POSTFX_CHROM_ABBR
Definition: pp_params.h:185
BandingMode
Styles of color quantization.
Definition: pp_params.h:146
@ BANDING_MODE_DITHERED
Definition: pp_params.h:148
@ BANDING_MODE_LINEAR
Definition: pp_params.h:147
@ BANDING_MODE_PERCEPTUAL
Definition: pp_params.h:149
@ BANDING_MODE_LUMINANCE
Definition: pp_params.h:151
@ BANDING_MODE_CHANNEL
Definition: pp_params.h:150
Controls for color banding/quantization.
Definition: pp_params.h:158
float dither_strength
Definition: pp_params.h:161
float perceptual_gamma
Definition: pp_params.h:162
vec3 channel_levels
Definition: pp_params.h:163
int32_t mode
Definition: pp_params.h:159
float levels
Definition: pp_params.h:160
Focal-length distortion simulation.
Definition: pp_params.h:106
float strength
Definition: pp_params.h:107
Unreal-style color grading parameters.
Definition: pp_params.h:61
float saturation
Definition: pp_params.h:62
float lift
Definition: pp_params.h:67
float gamma
Definition: pp_params.h:64
float gain
Definition: pp_params.h:65
float contrast
Definition: pp_params.h:63
float offset
Definition: pp_params.h:66
Manual exposure tuning.
Definition: pp_params.h:98
float exposure
Definition: pp_params.h:99
Parameters for Fast Approximate Anti-Aliasing.
Definition: pp_params.h:135
float edge_threshold_min
Definition: pp_params.h:138
float edge_threshold
Definition: pp_params.h:137
float subpix
Definition: pp_params.h:136
Depth-based atmospheric fog parameters.
Definition: pp_params.h:170
float density
Definition: pp_params.h:171
float height_falloff
Definition: pp_params.h:173
float start
Definition: pp_params.h:172
Fine-grained controls for film noise.
Definition: pp_params.h:84
float intensity_highlights
Definition: pp_params.h:88
float shadows_max
Definition: pp_params.h:89
float intensity_midtones
Definition: pp_params.h:87
float highlights_min
Definition: pp_params.h:90
float intensity
Definition: pp_params.h:85
float intensity_shadows
Definition: pp_params.h:86
float texel_size
Definition: pp_params.h:91
ACES-like filmic tonemapping curve parameters.
Definition: pp_params.h:123
float white_clip
Definition: pp_params.h:128
float black_clip
Definition: pp_params.h:127
float toe
Definition: pp_params.h:125
float slope
Definition: pp_params.h:124
float shoulder
Definition: pp_params.h:126
Controls for the screen-edge darkening effect.
Definition: pp_params.h:74
float smoothness
Definition: pp_params.h:76
float roundness
Definition: pp_params.h:77
float intensity
Definition: pp_params.h:75
Temperature and tint correction.
Definition: pp_params.h:114
float tint
Definition: pp_params.h:116
float temperature
Definition: pp_params.h:115