Rendering Engine 0.2.9
Modular Graphics Rendering Engine | v0.2.9
Source/color_space.cpp
Go to the documentation of this file.
1#include "color_space.hpp"
2
3namespace rendering_engine
4{
5
7{
8 if (c <= 0.04045f)
9 return c / 12.92f;
10 else
11 return pow((c + 0.055f) / 1.055f, 2.4f);
12}
13
14glm::vec3 ColorSpace::SRGBToLinear(const glm::vec3& color)
15{
16 return glm::vec3(
17 SRGBToLinear(color.r),
18 SRGBToLinear(color.g),
19 SRGBToLinear(color.b)
20 );
21}
22
24{
25 if (c <= 0.0031308f)
26 return 12.92f * c;
27 else
28 return 1.055f * std::pow(c, 1.0f / 2.4f) - 0.055f;
29}
30
31glm::vec3 ColorSpace::LinearToSRGB(const glm::vec3& color)
32{
33 return glm::vec3(
34 LinearToSRGB(color.r),
35 LinearToSRGB(color.g),
36 LinearToSRGB(color.b)
37 );
38}
39
40} // namespace rendering_engine
static float LinearToSRGB(float c)
Converts a single linear channel to sRGB space.
static float SRGBToLinear(float c)
Converts a single sRGB channel to linear space.