22 #ifdef WITH_OPENIMAGEDENOISE
24 # include <OpenImageDenoise/oidn.hpp>
37 this->m_settings =
nullptr;
49 this->m_inputProgramColor =
nullptr;
50 this->m_inputProgramNormal =
nullptr;
51 this->m_inputProgramAlbedo =
nullptr;
67 this->
generateDenoise(data, tileColor, tileNormal, tileAlbedo, this->m_settings);
93 float *inputBufferColor = inputTileColor->
getBuffer();
95 if (!inputBufferColor) {
98 #ifdef WITH_OPENIMAGEDENOISE
109 oidn::DeviceRef device = oidn::newDevice();
112 oidn::FilterRef
filter = device.newFilter(
"RT");
115 oidn::Format::Float3,
120 if (inputTileNormal && inputTileNormal->
getBuffer()) {
123 oidn::Format::Float3,
129 if (inputTileAlbedo && inputTileAlbedo->
getBuffer()) {
132 oidn::Format::Float3,
140 oidn::Format::Float3,
149 filter.set(
"srgb",
false);
158 for (
size_t i = 0; i < numPixels; i++) {
159 data[i * 4 + 3] = inputBufferColor[i * 4 + 3];
165 UNUSED_VARS(inputTileAlbedo, inputTileNormal, settings);
int BLI_cpu_support_sse41(void)
#define BLI_MUTEX_INITIALIZER
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
bool determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output) override
MemoryBuffer * createMemoryBuffer(rcti *rect) override
void initExecution() override
void deinitExecution() override
void generateDenoise(float *data, MemoryBuffer *inputTileColor, MemoryBuffer *inputTileNormal, MemoryBuffer *inputTileAlbedo, NodeDenoise *settings)
a MemoryBuffer contains access to the data of a chunk
const int getHeight() const
get the height of this MemoryBuffer
const int getWidth() const
get the width of this MemoryBuffer
float * getBuffer()
get the data of this MemoryBuffer
virtual void * initializeTileData(rcti *)
unsigned int getHeight() const
void addInputSocket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void addOutputSocket(DataType datatype)
unsigned int getWidth() const
SocketReader * getInputSocketReader(unsigned int inputSocketindex)
virtual bool determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output)
void deinitExecution() override
void initExecution() override
@ Vector
Vector data type.
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)