forked from bartvdbraak/blender
EEVEE-Next: Add LUT test
This avoid the generation code to become desync with the precomputed tabled. This is also a good way to test any changes to them.
This commit is contained in:
parent
7b54fce723
commit
2637bbf016
@ -16,6 +16,7 @@
|
|||||||
#include "draw_shader.h"
|
#include "draw_shader.h"
|
||||||
#include "draw_testing.hh"
|
#include "draw_testing.hh"
|
||||||
#include "engines/eevee_next/eevee_instance.hh"
|
#include "engines/eevee_next/eevee_instance.hh"
|
||||||
|
#include "engines/eevee_next/eevee_lut.hh"
|
||||||
|
|
||||||
namespace blender::draw {
|
namespace blender::draw {
|
||||||
|
|
||||||
@ -1440,4 +1441,24 @@ static void test_eevee_surfel_list()
|
|||||||
}
|
}
|
||||||
DRAW_TEST(eevee_surfel_list)
|
DRAW_TEST(eevee_surfel_list)
|
||||||
|
|
||||||
|
static void test_eevee_lut_gen()
|
||||||
|
{
|
||||||
|
GPU_render_begin();
|
||||||
|
|
||||||
|
Manager manager;
|
||||||
|
|
||||||
|
/* Check if LUT generation matches the header version. */
|
||||||
|
auto bsdf_ggx_gen = LookUpTable(manager, LUT_GGX_BRDF_SPLIT_SUM, {64, 64, 1}).data<float2>();
|
||||||
|
auto btdf_ggx_gen = LookUpTable(manager, LUT_GGX_BTDF_SPLIT_SUM, {64, 64, 16}).data<float2>();
|
||||||
|
|
||||||
|
Span<float2> bsdf_ggx_lut(reinterpret_cast<const float2 *>(bsdf_split_sum_ggx), 64 * 64);
|
||||||
|
Span<float2> btdf_ggx_lut(reinterpret_cast<const float2 *>(btdf_split_sum_ggx), 64 * 64 * 16);
|
||||||
|
|
||||||
|
EXPECT_NEAR_ARRAY_ND(bsdf_ggx_lut.data(), bsdf_ggx_gen.data(), bsdf_ggx_gen.size(), 2, 5e-4f);
|
||||||
|
EXPECT_NEAR_ARRAY_ND(btdf_ggx_lut.data(), btdf_ggx_gen.data(), btdf_ggx_gen.size(), 2, 5e-4f);
|
||||||
|
|
||||||
|
GPU_render_end();
|
||||||
|
}
|
||||||
|
DRAW_TEST(eevee_lut_gen)
|
||||||
|
|
||||||
} // namespace blender::draw
|
} // namespace blender::draw
|
||||||
|
@ -153,6 +153,18 @@ inline void EXPECT_EQ_ARRAY_ND(const T *expected, const T *actual, const size_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T, typename U>
|
||||||
|
inline void EXPECT_NEAR_ARRAY_ND(
|
||||||
|
const T *expected, const T *actual, const size_t N, const size_t D, const U tolerance)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < N; ++i) {
|
||||||
|
for (size_t j = 0; j < D; ++j) {
|
||||||
|
EXPECT_NEAR(expected[i][j], actual[i][j], tolerance)
|
||||||
|
<< "Element mismatch at index " << i << ", component index " << j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# define ABORT_PREDICATE ::testing::ExitedWithCode(3)
|
# define ABORT_PREDICATE ::testing::ExitedWithCode(3)
|
||||||
#else
|
#else
|
||||||
|
Loading…
Reference in New Issue
Block a user