diff --git a/common/platform.h b/common/platform.h index be14bc7..9373b61 100644 --- a/common/platform.h +++ b/common/platform.h @@ -19,7 +19,7 @@ #if defined(_WIN32) #define WIN32_LEAN_AND_MEAN #define NOMINMAX - #include + #include #elif defined(__APPLE__) #include #endif @@ -129,4 +129,3 @@ namespace oidn { std::string getBuildName(); } // namespace oidn - diff --git a/core/autoencoder.cpp b/core/autoencoder.cpp index d6915e6..d8da684 100644 --- a/core/autoencoder.cpp +++ b/core/autoencoder.cpp @@ -90,13 +90,19 @@ namespace oidn { if (!dirty) return; - device->executeTask([&]() - { + // -- GODOT start -- + //device->executeTask([&]() + //{ + // GODOT end -- + if (mayiuse(avx512_common)) net = buildNet<16>(); else net = buildNet<8>(); - }); + + // GODOT start -- + //}); + // GODOT end -- dirty = false; } @@ -108,9 +114,10 @@ namespace oidn { if (!net) return; - - device->executeTask([&]() - { + // -- GODOT start -- + //device->executeTask([&]() + //{ + // -- GODOT end -- Progress progress; progress.func = progressFunc; progress.userPtr = progressUserPtr; @@ -156,7 +163,9 @@ namespace oidn { tileIndex++; } } - }); + // -- GODOT start -- + //}); + // -- GODOT end -- } void AutoencoderFilter::computeTileSize() @@ -464,6 +473,11 @@ namespace oidn { return std::make_shared(); } +// -- GODOT start -- +// Godot doesn't need Raytracing filters. Removing them saves space in the weights files. +#if 0 +// -- GODOT end -- + // -------------------------------------------------------------------------- // RTFilter // -------------------------------------------------------------------------- @@ -491,6 +505,9 @@ namespace oidn { weightData.hdr_alb = weights::rt_hdr_alb; weightData.hdr_alb_nrm = weights::rt_hdr_alb_nrm; } +// -- GODOT start -- +#endif +// -- GODOT end -- // -------------------------------------------------------------------------- // RTLightmapFilter diff --git a/core/autoencoder.h b/core/autoencoder.h index c199052..98b6108 100644 --- a/core/autoencoder.h +++ b/core/autoencoder.h @@ -93,11 +93,18 @@ namespace oidn { // RTFilter - Generic ray tracing denoiser // -------------------------------------------------------------------------- +// -- GODOT start -- +// Godot doesn't need Raytracing filters. Removing them saves space in the weights files. +#if 0 +// -- GODOT end -- class RTFilter : public AutoencoderFilter { public: explicit RTFilter(const Ref& device); }; +// -- GODOT start -- +#endif +// -- GODOT end -- // -------------------------------------------------------------------------- // RTLightmapFilter - Ray traced lightmap denoiser diff --git a/core/common.h b/core/common.h index a3a7e8a..a35dd90 100644 --- a/core/common.h +++ b/core/common.h @@ -27,7 +27,9 @@ #include "common/ref.h" #include "common/exception.h" #include "common/thread.h" -#include "common/tasking.h" +// -- GODOT start -- +//#include "common/tasking.h" +// -- GODOT end -- #include "math.h" namespace oidn { diff --git a/core/device.cpp b/core/device.cpp index c455695..3cd658b 100644 --- a/core/device.cpp +++ b/core/device.cpp @@ -29,7 +29,9 @@ namespace oidn { Device::~Device() { - observer.reset(); + // -- GODOT start -- + //observer.reset(); + // -- GODOT end -- } void Device::setError(Device* device, Error code, const std::string& message) @@ -141,6 +143,9 @@ namespace oidn { if (isCommitted()) throw Exception(Error::InvalidOperation, "device can be committed only once"); + // -- GODOT start -- + #if 0 + // -- GODOT end -- // Get the optimal thread affinities if (setAffinity) { @@ -157,7 +162,10 @@ namespace oidn { // Automatically set the thread affinities if (affinity) observer = std::make_shared(affinity, *arena); - + // -- GODOT start -- + #endif + numThreads = 1; + // -- GODOT end -- dirty = false; if (isVerbose()) @@ -191,9 +199,17 @@ namespace oidn { Ref filter; +// -- GODOT start -- +// Godot doesn't need Raytracing filters. Removing them saves space in the weights files. +#if 0 +// -- GODOT end -- if (type == "RT") filter = makeRef(Ref(this)); - else if (type == "RTLightmap") +// -- GODOT start -- +// Godot doesn't need Raytracing filters. Removing them saves space in the weights files. +#endif + if (type == "RTLightmap") +// -- GODOT end -- filter = makeRef(Ref(this)); else throw Exception(Error::InvalidArgument, "unknown filter type"); @@ -210,11 +226,12 @@ namespace oidn { std::cout << " Build : " << getBuildName() << std::endl; std::cout << " Platform: " << getPlatformName() << std::endl; - std::cout << " Tasking :"; - std::cout << " TBB" << TBB_VERSION_MAJOR << "." << TBB_VERSION_MINOR; - std::cout << " TBB_header_interface_" << TBB_INTERFACE_VERSION << " TBB_lib_interface_" << tbb::TBB_runtime_interface_version(); - std::cout << std::endl; - +// -- GODOT start -- +// std::cout << " Tasking :"; +// std::cout << " TBB" << TBB_VERSION_MAJOR << "." << TBB_VERSION_MINOR; +// std::cout << " TBB_header_interface_" << TBB_INTERFACE_VERSION << " TBB_lib_interface_" << tbb::TBB_runtime_interface_version(); +// std::cout << std::endl; +// -- GODOT end -- std::cout << std::endl; } diff --git a/core/device.h b/core/device.h index c2df714..d9cfd85 100644 --- a/core/device.h +++ b/core/device.h @@ -41,10 +41,12 @@ namespace oidn { ErrorFunction errorFunc = nullptr; void* errorUserPtr = nullptr; - // Tasking - std::shared_ptr arena; - std::shared_ptr observer; - std::shared_ptr affinity; +// -- GODOT start -- +// // Tasking +// std::shared_ptr arena; +// std::shared_ptr observer; +// std::shared_ptr affinity; +// -- GODOT end -- // Parameters int numThreads = 0; // autodetect by default @@ -66,17 +68,19 @@ namespace oidn { void commit(); - template - void executeTask(F& f) - { - arena->execute(f); - } +// -- GODOT start -- +// template +// void executeTask(F& f) +// { +// arena->execute(f); +// } - template - void executeTask(const F& f) - { - arena->execute(f); - } +// template +// void executeTask(const F& f) +// { +// arena->execute(f); +// } +// -- GODOT end -- Ref newBuffer(size_t byteSize); Ref newBuffer(void* ptr, size_t byteSize); @@ -86,7 +90,10 @@ namespace oidn { __forceinline std::mutex& getMutex() { return mutex; } private: - bool isCommitted() const { return bool(arena); } +// -- GODOT start -- + //bool isCommitted() const { return bool(arena); } + bool isCommitted() const { return false; } +// -- GODOT end -- void checkCommitted(); void print(); diff --git a/core/network.cpp b/core/network.cpp index 8c2de09..ed8328c 100644 --- a/core/network.cpp +++ b/core/network.cpp @@ -17,6 +17,9 @@ #include "upsample.h" #include "weights_reorder.h" #include "network.h" +// -- GODOT start -- +#include +// -- GODOT end -- namespace oidn { diff --git a/core/transfer_function.cpp b/core/transfer_function.cpp index 601f814..ce5deca 100644 --- a/core/transfer_function.cpp +++ b/core/transfer_function.cpp @@ -38,16 +38,24 @@ namespace oidn { // Compute the average log luminance of the downsampled image using Sum = std::pair; - Sum sum = - tbb::parallel_reduce( - tbb::blocked_range2d(0, HK, 0, WK), - Sum(0.f, 0), - [&](const tbb::blocked_range2d& r, Sum sum) -> Sum + // -- GODOT start -- + // Sum sum = + // tbb::parallel_reduce( + // tbb::blocked_range2d(0, HK, 0, WK), + // Sum(0.f, 0), + // [&](const tbb::blocked_range2d& r, Sum sum) -> Sum + // { + // // Iterate over blocks + // for (int i = r.rows().begin(); i != r.rows().end(); ++i) + // { + // for (int j = r.cols().begin(); j != r.cols().end(); ++j) + // { + + Sum sum = Sum(0.0f, 0); + + for (int i = 0; i != HK; ++i) { - // Iterate over blocks - for (int i = r.rows().begin(); i != r.rows().end(); ++i) - { - for (int j = r.cols().begin(); j != r.cols().end(); ++j) + for (int j = 0; j != WK; ++j) { // Compute the average luminance in the current block const int beginH = int(ptrdiff_t(i) * H / HK); @@ -82,11 +90,12 @@ namespace oidn { } } - return sum; - }, - [](Sum a, Sum b) -> Sum { return Sum(a.first+b.first, a.second+b.second); }, - tbb::static_partitioner() - ); + // return sum; + // }, + // [](Sum a, Sum b) -> Sum { return Sum(a.first+b.first, a.second+b.second); }, + // tbb::static_partitioner() + // ); + // -- GODOT end -- return (sum.second > 0) ? (key / exp2(sum.first / float(sum.second))) : 1.f; }