From f3e5b46bf9b7122eebced744f212334ca0e1797e Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 11 Jul 2019 17:22:25 -0700 Subject: [PATCH] highlight negative values in SH debug files --- libs/ibl/include/ibl/CubemapUtils.h | 2 ++ libs/ibl/src/CubemapUtils.cpp | 13 +++++++++++++ tools/cmgen/src/cmgen.cpp | 2 ++ 3 files changed, 17 insertions(+) diff --git a/libs/ibl/include/ibl/CubemapUtils.h b/libs/ibl/include/ibl/CubemapUtils.h index 5c5e0dc73a..823283880f 100644 --- a/libs/ibl/include/ibl/CubemapUtils.h +++ b/libs/ibl/include/ibl/CubemapUtils.h @@ -78,6 +78,8 @@ public: //! clamps image to acceptable range static void clamp(Image& src); + static void highlight(Image& src); + //! Downsamples a cubemap by helf in x and y using a box filter static void downsampleCubemapLevelBoxFilter(utils::JobSystem& js, Cubemap& dst, const Cubemap& src); diff --git a/libs/ibl/src/CubemapUtils.cpp b/libs/ibl/src/CubemapUtils.cpp index 157ceaa455..d3d92bcc87 100644 --- a/libs/ibl/src/CubemapUtils.cpp +++ b/libs/ibl/src/CubemapUtils.cpp @@ -57,6 +57,19 @@ void CubemapUtils::clamp(Image& src) { } } +void CubemapUtils::highlight(Image& src) { + const size_t width = src.getWidth(); + const size_t height = src.getHeight(); + for (size_t y=0 ; y(src.getPixelRef(x, y)); + if (min(c) < 0.0f) { + c = { 1, 0, 1 }; + } + } + } +} + void CubemapUtils::equirectangularToCubemap(JobSystem& js, Cubemap& dst, const Image& src) { const size_t width = src.getWidth(); const size_t height = src.getHeight(); diff --git a/tools/cmgen/src/cmgen.cpp b/tools/cmgen/src/cmgen.cpp index a2c6223eb1..3a3fd440ae 100644 --- a/tools/cmgen/src/cmgen.cpp +++ b/tools/cmgen/src/cmgen.cpp @@ -745,6 +745,7 @@ void sphericalHarmonics(utils::JobSystem& js, const utils::Path& iname, const Cu std::string basename = iname.getNameWithoutExtension(); utils::Path filePath = outputDir + (basename + "_sh" + (g_sh_irradiance ? "_i" : "_r") + ".hdr"); + CubemapUtils::highlight(image); saveImage(filePath, ImageEncoder::Format::HDR, image, ""); } @@ -755,6 +756,7 @@ void sphericalHarmonics(utils::JobSystem& js, const utils::Path& iname, const Cu std::string basename = iname.getNameWithoutExtension(); utils::Path filePath = outputDir + (basename + "_sh" + (!g_sh_irradiance ? "_i" : "_r") + ".hdr"); + CubemapUtils::highlight(image); saveImage(filePath, ImageEncoder::Format::HDR, image, ""); } }