Loading [MathJax]/extensions/TeX/AMSmath.js
Radium Engine  1.5.28
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
environmentmap.cpp
1#include <catch2/catch_test_macros.hpp>
2
3#include <Engine/Data/EnvironmentTexture.hpp>
4#include <Engine/RadiumEngine.hpp>
5
6using namespace Ra::Engine::Data;
7
8TEST_CASE( "Engine/Data/EnvironmentTexture/Equirectangular",
9 "[unittests][Engine][Engine/Data][EnvironmentTexture][equirectangular]" ) {
10 SECTION( "Create environment texture" ) {
11 EnvironmentTexture tex { "data/studio_garden_2k.exr", true };
12
13 REQUIRE( tex.getImageType() == EnvironmentTexture::EnvMapType::ENVMAP_LATLON );
14 REQUIRE( tex.isSkybox() );
15
16 auto& redShCoefs = tex.getShMatrix( 0 );
17 Ra::Core::Matrix4 refCoefs = ( Ra::Core::Matrix4() << -0.514535,
18 1.08883,
19 -0.923322,
20 0.731273,
21 1.08883,
22 0.514535,
23 -1.52304,
24 1.33027,
25 -0.923322,
26 -1.52304,
27 0.107396,
28 -1.16553,
29 0.731273,
30 1.33027,
31 -1.16553,
32 2.17916 )
33 .finished();
34 auto diff = redShCoefs - refCoefs;
35 REQUIRE( diff.norm() <= 1e-3 );
36 }
37}
38
39TEST_CASE( "Engine/Data/EnvironmentTexture/PFM",
40 "[unittests][Engine][Engine/Data][EnvironmentTexture][PFM]" ) {
41 SECTION( "Create environment texture" ) {
42 EnvironmentTexture tex { "data/uffizi_cross.pfm" };
43
44 REQUIRE( tex.getImageType() == EnvironmentTexture::EnvMapType::ENVMAP_PFM );
45 REQUIRE( !tex.isSkybox() );
46
47 auto& greenShCoefs = tex.getShMatrix( 1 );
48 Ra::Core::Matrix4 refCoefs = ( Ra::Core::Matrix4() << -1.53315_ra,
49 0.036986_ra,
50 0.0020611_ra,
51 0.0118119_ra,
52 0.036986_ra,
53 1.53315_ra,
54 0.0824425_ra,
55 1.87627_ra,
56 0.0020611_ra,
57 0.0824425_ra,
58 -0.524398_ra,
59 0.0441319_ra,
60 0.0118119_ra,
61 1.87627_ra,
62 0.0441319_ra,
63 2.90152_ra )
64 .finished();
65 auto diff = greenShCoefs - refCoefs;
66 REQUIRE( diff.norm() <= 1e-3 );
67 }
68}
69TEST_CASE( "Engine/Data/EnvironmentTexture/CubeMap",
70 "[unittests][Engine][Engine/Data][EnvironmentTexture][CubeMap]" ) {
71 SECTION( "Create environment texture" ) {
73 "data/smallpark/negx.jpg;data/smallpark/negy.jpg;data/smallpark/negz.jpg;"
74 "data/smallpark/posx.jpg;data/smallpark/posy.jpg;data/smallpark/posz.jpg" };
75
76 REQUIRE( tex.getImageType() == EnvironmentTexture::EnvMapType::ENVMAP_CUBE );
77 REQUIRE( !tex.isSkybox() );
78
79 auto& blueShCoefs = tex.getShMatrix( 2 );
80 Ra::Core::Matrix4 refCoefs = ( Ra::Core::Matrix4() << -0.0150307_ra,
81 -0.0389637_ra,
82 -0.0589842_ra,
83 -0.0352475_ra,
84 -0.0389637_ra,
85 0.0150307_ra,
86 -0.014953_ra,
87 0.30222_ra,
88 -0.0589842_ra,
89 -0.014953_ra,
90 -0.0621052_ra,
91 -0.0119704_ra,
92 -0.0352475_ra,
93 0.30222_ra,
94 -0.0119704_ra,
95 0.585438_ra )
96 .finished();
97 auto diff = blueShCoefs - refCoefs;
98 REQUIRE( diff.norm() <= 1e-3 );
99 }
100}
Defines a spherical, infinite light sources and, optionally, sky boxes. An operator to convert an Env...
(GPU) Data representation, along with manager