Skip to content

Commit 90dd580

Browse files
Merge pull request #45 from AnastaZIuk/master
Optix bug reproduction - input & output denoiser DDS data
2 parents b4c0d1c + 2677217 commit 90dd580

File tree

9 files changed

+213
-133
lines changed

9 files changed

+213
-133
lines changed

cmake/FindOptiX.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ macro(_find_version_path targetVersion targetPath rootName searchList )
2929
string ( REGEX MATCH "${rootName}(.*)([0-9]+).([0-9]+).([0-9]+)(.*)$" result "${checkdir}" )
3030
if ( "${result}" STREQUAL "${checkdir}" )
3131
# found a path with versioning
32+
if(${CMAKE_MATCH_2} LESS "7" OR ${CMAKE_MATCH_2} EQUAL "7" AND ${CMAKE_MATCH_3} LESS "2")
33+
message(STATUS "Found OptiX ${CMAKE_MATCH_2}.${CMAKE_MATCH_3}.${CMAKE_MATCH_4}. Expecting 7.2.0 or higher")
34+
continue()
35+
endif()
3236
SET ( ver "${CMAKE_MATCH_2}.${CMAKE_MATCH_3}.${CMAKE_MATCH_4}" )
3337
if ( ver GREATER bestver )
3438
SET ( bestver ${ver} )
@@ -78,10 +82,15 @@ if (DEFINED OPTIX_LOCATION OR DEFINED ENV{OPTIX_LOCATION} )
7882
# Locate by version failed. Handle user override for OPTIX_LOCATION.
7983
string ( REGEX MATCH ".*([0-9]+).([0-9]+).([0-9]+)(.*)$" result "${OPTIX_LOCATION}" )
8084
if ( "${result}" STREQUAL "${OPTIX_LOCATION}" )
85+
if(${CMAKE_MATCH_2} LESS "7" OR ${CMAKE_MATCH_2} EQUAL "7" AND ${CMAKE_MATCH_3} LESS "2")
86+
message(STATUS "Found OptiX ${CMAKE_MATCH_2}.${CMAKE_MATCH_3}.${CMAKE_MATCH_4}. Expecting 7.2.0 or higher")
87+
continue()
88+
else()
8189
SET ( bestver "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}" )
8290
SET ( bestmajorver ${CMAKE_MATCH_1})
8391
SET ( bestminorver ${CMAKE_MATCH_2})
8492
Message(STATUS "found version ${bestver}")
93+
endif()
8594
else()
8695
Message(WARNING "Could NOT extract the version from OptiX folder : ${result}")
8796
endif()

examples_tests/39.DenoiserTonemapper/CommandLineHandler.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using namespace nbl;
1010
using namespace asset;
1111
using namespace core;
1212

13-
CommandLineHandler::CommandLineHandler(core::vector<std::string> argv, IAssetManager* am) : status(false), assetManager(am)
13+
CommandLineHandler::CommandLineHandler(core::vector<std::string> argv, IAssetManager* am, nbl::io::IFileSystem* fs) : status(false), assetManager(am)
1414
{
1515
auto startEntireTime = std::chrono::steady_clock::now();
1616

@@ -28,6 +28,7 @@ CommandLineHandler::CommandLineHandler(core::vector<std::string> argv, IAssetMan
2828
auto mitsubaLoader = core::make_smart_refctd_ptr<nbl::ext::MitsubaLoader::CMitsubaLoader>(am,fs);
2929
mitsubaLoader->initialize();
3030
am->addAssetLoader(std::move(mitsubaLoader));
31+
3132
core::vector<std::array<std::string, PROPER_CMD_ARGUMENTS_AMOUNT>> argvMappedList;
3233

3334
auto pushArgvList = [&](auto argvStream, auto variableCount)
@@ -343,20 +344,19 @@ nbl::core::matrix3x4SIMD CommandLineHandler::getCameraTransform(uint64_t id)
343344
assert(!meshes_bundle.isEmpty(), ("ERROR (" + std::to_string(__LINE__) + " line): The xml file is invalid! Id of input stride: " + std::to_string(id)).c_str());
344345
auto endTime = std::chrono::steady_clock::now();
345346
elapsedTimeXmls += (endTime - startTime);
346-
347+
347348
auto mesh = meshes_bundle.getContents().begin()[0];
348349
auto mesh_raw = static_cast<asset::ICPUMesh*>(mesh.get());
349-
const auto mitsubaMetadata = static_cast<const ext::MitsubaLoader::CMitsubaMetadata*>(mesh_raw->getMetadata());
350-
const auto data = mitsubaMetadata->getMitsubaMetadata();
350+
const auto mitsubaMetadata = static_cast<const ext::MitsubaLoader::CMitsubaMetadata*>(meshes_bundle.getMetadata());
351351

352-
bool validateFlag = data->sensors.empty();
352+
bool validateFlag = mitsubaMetadata->m_global.m_sensors.empty();
353353
if (validateFlag)
354354
{
355355
os::Printer::log("ERROR (" + std::to_string(__LINE__) + " line): The is no transform matrix in " + filePath + " ! Id of input stride: " + std::to_string(id), ELL_ERROR);
356356
assert(validateFlag);
357357
}
358358

359-
auto transformReference = data->sensors[0].transform.matrix.extractSub3x4();
359+
auto transformReference = mitsubaMetadata->m_global.m_sensors[0].transform.matrix.extractSub3x4();
360360
transformReference.setTranslation(core::vectorSIMDf(0, 0, 0, 0));
361361

362362
return transformReference;

examples_tests/39.DenoiserTonemapper/CommandLineHandler.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ class CommandLineHandler
181181
{
182182
public:
183183

184-
CommandLineHandler(nbl::core::vector<std::string> argv, nbl::asset::IAssetManager* am);
184+
CommandLineHandler(nbl::core::vector<std::string> argv, nbl::asset::IAssetManager* am, nbl::io::IFileSystem* fs);
185185

186186
auto getInputFilesAmount()
187187
{

examples_tests/39.DenoiserTonemapper/ShaderCommon.glsl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// This file is part of the "Nabla Engine".
33
// For conditions of distribution and use, see copyright notice in nabla.h
44

5-
#define COMPUTE_WG_SIZE 256u
5+
#define COMPUTE_WG_SIZE 256
66
layout(local_size_x=COMPUTE_WG_SIZE) in;
77

88
layout(constant_id = 1) const uint EII_COLOR = 0u;
@@ -17,9 +17,9 @@ layout(push_constant, row_major) uniform PushConstants{
1717
#define _NBL_GLSL_EXT_LUMA_METER_PUSH_CONSTANTS_DEFINED_
1818

1919

20-
#define SHARED_CHANNELS 3u
20+
#define SHARED_CHANNELS 3
2121
// the amount of memory needed for luma metering is bigger than interleaving
22-
#define _NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_ ((COMPUTE_WG_SIZE+1u)*8u)
22+
#define _NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_ ((COMPUTE_WG_SIZE+1)*8)
2323
shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
2424
#define _NBL_GLSL_SCRATCH_SHARED_DEFINED_ repackBuffer
2525

@@ -29,8 +29,11 @@ shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
2929
#define _NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_X_DEFINED_ 256
3030
#define _NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_Y_DEFINED_ 1
3131

32-
#define _NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_ floatBitsToInt(1.0/4096.0)
33-
#define _NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_ floatBitsToInt(32768.0)
32+
#define _NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_ 0x39800000
33+
// floatBitsToInt(1.0/4096.0) glslc got a lot more anal since last version
34+
#define _NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_ 0x47000000
35+
// floatBitsToInt(32768.0) glslc got a lot more anal since last version
36+
3437
// its the mean mode
3538
#define _NBL_GLSL_EXT_LUMA_METER_MODE_DEFINED_ 1
3639

@@ -50,6 +53,7 @@ shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
5053

5154
#define _NBL_GLSL_EXT_LUMA_METER_INVOCATION_COUNT (_NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_X_DEFINED_*_NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_Y_DEFINED_)
5255
#define _NBL_GLSL_EXT_LUMA_METER_BIN_COUNT _NBL_GLSL_EXT_LUMA_METER_INVOCATION_COUNT
56+
#define _NBL_GLSL_WORKGROUP_SIZE_ _NBL_GLSL_EXT_LUMA_METER_BIN_COUNT
5357
#define _NBL_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION 4
5458
#ifdef _NBL_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
5559
#include "nbl/builtin/glsl/ext/LumaMeter/impl.glsl"

0 commit comments

Comments
 (0)