Rendering Engine 0.2.17
Modular Graphics Rendering Engine | v0.2.17
Loading...
Searching...
No Matches
color_space_tests.cpp File Reference
#include "color_space.hpp"
#include "glm_test_helpers.hpp"

Go to the source code of this file.

Functions

 TEST (ColorSpace, SRGBEndpointsAndPiecewiseBoundary)
 
 TEST (ColorSpace, LinearEndpointsAndPiecewiseBoundary)
 
 TEST (ColorSpace, RepresentativeValuesRoundTripInBothDirections)
 
 TEST (ColorSpace, VectorOverloadsConvertEachChannelIndependently)
 

Function Documentation

◆ TEST() [1/4]

TEST ( ColorSpace  ,
LinearEndpointsAndPiecewiseBoundary   
)

Definition at line 20 of file color_space_tests.cpp.

21{
22 const float inputs[] = {0, 1, 0.003f, 0.0031308f, 0.0032f, 0.5f};
23 const float expected[] = {0, 1, 0.03876f, 0.040449936f, 0.041323359f, 0.73535698f};
24 for (unsigned i = 0; i < 6; ++i)
25 EXPECT_NEAR(ColorSpace::LinearToSRGB(inputs[i]), expected[i], 2e-7f) << inputs[i];
26}
static float LinearToSRGB(float c)
Converts a single linear channel to sRGB space.

◆ TEST() [2/4]

TEST ( ColorSpace  ,
RepresentativeValuesRoundTripInBothDirections   
)

Definition at line 28 of file color_space_tests.cpp.

29{
30 for (float value : {0.0f, 0.1f, 0.25f, 0.5f, 0.75f, 1.0f})
31 {
32 EXPECT_NEAR(ColorSpace::LinearToSRGB(ColorSpace::SRGBToLinear(value)), value, 2e-6f);
33 EXPECT_NEAR(ColorSpace::SRGBToLinear(ColorSpace::LinearToSRGB(value)), value, 2e-6f);
34 }
35}
static float SRGBToLinear(float c)
Converts a single sRGB channel to linear space.

◆ TEST() [3/4]

TEST ( ColorSpace  ,
SRGBEndpointsAndPiecewiseBoundary   
)

Definition at line 11 of file color_space_tests.cpp.

12{
13 // Reference values evaluated independently in double precision.
14 const float inputs[] = {0, 1, 0.04f, 0.04045f, 0.041f, 0.5f};
15 const float expected[] = {0, 1, 0.0030959752f, 0.0031308050f, 0.0031742787f, 0.21404114f};
16 for (unsigned i = 0; i < 6; ++i)
17 EXPECT_NEAR(ColorSpace::SRGBToLinear(inputs[i]), expected[i], 1e-7f) << inputs[i];
18}

◆ TEST() [4/4]

TEST ( ColorSpace  ,
VectorOverloadsConvertEachChannelIndependently   
)

Definition at line 37 of file color_space_tests.cpp.

38{
39 const glm::vec3 srgb(0.02f, 0.5f, 1.0f), linear(0.001f, 0.25f, 0.75f);
42 ColorSpace::SRGBToLinear(srgb.z)), 1e-7f);
45 ColorSpace::LinearToSRGB(linear.z)), 1e-7f);
46}
void ExpectNear(const glm::vec< N, T, Q > &actual, const glm::vec< N, T, Q > &expected, float tolerance=1e-5f)