Files
SimpleRayTracing/native/header/Rendering/PostProcessing.h
Misaki f1d3dddb9a Change project structure;
Added new c# binding;
2025-12-30 20:54:05 +09:00

34 lines
920 B
C

#ifndef POST_PROCESSING_H
#define POST_PROCESSING_H
#include "cglm/struct/vec4.h"
#include "cglm/struct/mat4.h"
inline vec4s gamma_correct(vec4s color, float gamma)
{
vec4s corrected_color = color;
corrected_color.x = powf(color.x, 1.0f / gamma);
corrected_color.y = powf(color.y, 1.0f / gamma);
corrected_color.z = powf(color.z, 1.0f / gamma);
return corrected_color;
}
// Maybe full aces later
inline vec4s aces_tone_map(vec4s color)
{
vec4s mapped_color = color;
float a = 2.51f;
float b = 0.03f;
float c = 2.43f;
float d = 0.59f;
float e = 0.14f;
mapped_color.x = (color.x * (a * color.x + b)) / (color.x * (c * color.x + d) + e);
mapped_color.y = (color.y * (a * color.y + b)) / (color.y * (c * color.y + d) + e);
mapped_color.z = (color.z * (a * color.z + b)) / (color.z * (c * color.z + d) + e);
return mapped_color;
}
#endif // POST_PROCESSING_H