Rendering Engine 0.2.17
Modular Graphics Rendering Engine | v0.2.17
Loading...
Searching...
No Matches
Source/color_space.cpp
Go to the documentation of this file.
1#include "color_space.hpp"
2#include <cmath>
3
4namespace rendering_engine
5{
6
8{
9 if (c <= 0.04045f)
10 return c / 12.92f;
11 else
12 return std::pow((c + 0.055f) / 1.055f, 2.4f);
13}
14
15glm::vec3 ColorSpace::SRGBToLinear(const glm::vec3& color)
16{
17 return glm::vec3(
18 SRGBToLinear(color.r),
19 SRGBToLinear(color.g),
20 SRGBToLinear(color.b)
21 );
22}
23
25{
26 if (c <= 0.0031308f)
27 return 12.92f * c;
28 else
29 return 1.055f * std::pow(c, 1.0f / 2.4f) - 0.055f;
30}
31
32glm::vec3 ColorSpace::LinearToSRGB(const glm::vec3& color)
33{
34 return glm::vec3(
35 LinearToSRGB(color.r),
36 LinearToSRGB(color.g),
37 LinearToSRGB(color.b)
38 );
39}
40
41} // 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.