| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright 2019, Blender Foundation. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  |  * as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  |  * of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  * along with this program; if not, write to the Free Software Foundation, | 
					
						
							|  |  |  |  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Contributor: | 
					
						
							|  |  |  |  *      Stefan Werner | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "COM_DenoiseOperation.h"
 | 
					
						
							|  |  |  | #include "BLI_math.h"
 | 
					
						
							|  |  |  | #ifdef WITH_OPENIMAGEDENOISE
 | 
					
						
							| 
									
										
										
										
											2019-08-27 11:06:48 +02:00
										 |  |  | #  include "BLI_threads.h"
 | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | #  include <OpenImageDenoise/oidn.hpp>
 | 
					
						
							| 
									
										
										
										
											2019-08-27 11:06:48 +02:00
										 |  |  | static pthread_mutex_t oidn_lock = BLI_MUTEX_INITIALIZER; | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | #include <iostream>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DenoiseOperation::DenoiseOperation() : SingleThreadedOperation() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   this->addInputSocket(COM_DT_COLOR); | 
					
						
							|  |  |  |   this->addInputSocket(COM_DT_VECTOR); | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |   this->addInputSocket(COM_DT_COLOR); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   this->addOutputSocket(COM_DT_COLOR); | 
					
						
							|  |  |  |   this->m_settings = NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | void DenoiseOperation::initExecution() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   SingleThreadedOperation::initExecution(); | 
					
						
							|  |  |  |   this->m_inputProgramColor = getInputSocketReader(0); | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |   this->m_inputProgramNormal = getInputSocketReader(1); | 
					
						
							|  |  |  |   this->m_inputProgramAlbedo = getInputSocketReader(2); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DenoiseOperation::deinitExecution() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   this->m_inputProgramColor = NULL; | 
					
						
							|  |  |  |   this->m_inputProgramNormal = NULL; | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |   this->m_inputProgramAlbedo = NULL; | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   SingleThreadedOperation::deinitExecution(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MemoryBuffer *DenoiseOperation::createMemoryBuffer(rcti *rect2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   MemoryBuffer *tileColor = (MemoryBuffer *)this->m_inputProgramColor->initializeTileData(rect2); | 
					
						
							|  |  |  |   MemoryBuffer *tileNormal = (MemoryBuffer *)this->m_inputProgramNormal->initializeTileData(rect2); | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |   MemoryBuffer *tileAlbedo = (MemoryBuffer *)this->m_inputProgramAlbedo->initializeTileData(rect2); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   rcti rect; | 
					
						
							|  |  |  |   rect.xmin = 0; | 
					
						
							|  |  |  |   rect.ymin = 0; | 
					
						
							|  |  |  |   rect.xmax = getWidth(); | 
					
						
							|  |  |  |   rect.ymax = getHeight(); | 
					
						
							|  |  |  |   MemoryBuffer *result = new MemoryBuffer(COM_DT_COLOR, &rect); | 
					
						
							|  |  |  |   float *data = result->getBuffer(); | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |   this->generateDenoise(data, tileColor, tileNormal, tileAlbedo, this->m_settings); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   return result; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool DenoiseOperation::determineDependingAreaOfInterest(rcti * /*input*/, | 
					
						
							|  |  |  |                                                         ReadBufferOperation *readOperation, | 
					
						
							|  |  |  |                                                         rcti *output) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   if (isCached()) { | 
					
						
							|  |  |  |     return false; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   else { | 
					
						
							|  |  |  |     rcti newInput; | 
					
						
							|  |  |  |     newInput.xmax = this->getWidth(); | 
					
						
							|  |  |  |     newInput.xmin = 0; | 
					
						
							|  |  |  |     newInput.ymax = this->getHeight(); | 
					
						
							|  |  |  |     newInput.ymin = 0; | 
					
						
							|  |  |  |     return NodeOperation::determineDependingAreaOfInterest(&newInput, readOperation, output); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DenoiseOperation::generateDenoise(float *data, | 
					
						
							|  |  |  |                                        MemoryBuffer *inputTileColor, | 
					
						
							|  |  |  |                                        MemoryBuffer *inputTileNormal, | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |                                        MemoryBuffer *inputTileAlbedo, | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |                                        NodeDenoise *settings) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   float *inputBufferColor = inputTileColor->getBuffer(); | 
					
						
							|  |  |  |   BLI_assert(inputBufferColor); | 
					
						
							|  |  |  |   if (!inputBufferColor) { | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | #ifdef WITH_OPENIMAGEDENOISE
 | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |   if (BLI_cpu_support_sse41()) { | 
					
						
							|  |  |  |     oidn::DeviceRef device = oidn::newDevice(); | 
					
						
							|  |  |  |     device.commit(); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     oidn::FilterRef filter = device.newFilter("RT"); | 
					
						
							|  |  |  |     filter.setImage("color", | 
					
						
							|  |  |  |                     inputBufferColor, | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |                     oidn::Format::Float3, | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |                     inputTileColor->getWidth(), | 
					
						
							|  |  |  |                     inputTileColor->getHeight(), | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |                     0, | 
					
						
							|  |  |  |                     4 * sizeof(float)); | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     if (inputTileNormal && inputTileNormal->getBuffer()) { | 
					
						
							|  |  |  |       filter.setImage("normal", | 
					
						
							|  |  |  |                       inputTileNormal->getBuffer(), | 
					
						
							|  |  |  |                       oidn::Format::Float3, | 
					
						
							|  |  |  |                       inputTileNormal->getWidth(), | 
					
						
							|  |  |  |                       inputTileNormal->getHeight(), | 
					
						
							|  |  |  |                       0, | 
					
						
							|  |  |  |                       3 * sizeof(float)); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-08-27 14:43:48 +02:00
										 |  |  |     if (inputTileAlbedo && inputTileAlbedo->getBuffer()) { | 
					
						
							|  |  |  |       filter.setImage("albedo", | 
					
						
							|  |  |  |                       inputTileAlbedo->getBuffer(), | 
					
						
							|  |  |  |                       oidn::Format::Float3, | 
					
						
							|  |  |  |                       inputTileAlbedo->getWidth(), | 
					
						
							|  |  |  |                       inputTileAlbedo->getHeight(), | 
					
						
							|  |  |  |                       0, | 
					
						
							|  |  |  |                       4 * sizeof(float)); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     filter.setImage("output", | 
					
						
							|  |  |  |                     data, | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |                     oidn::Format::Float3, | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |                     inputTileColor->getWidth(), | 
					
						
							|  |  |  |                     inputTileColor->getHeight(), | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |                     0, | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |                     4 * sizeof(float)); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     BLI_assert(settings); | 
					
						
							|  |  |  |     if (settings) { | 
					
						
							|  |  |  |       filter.set("hdr", settings->hdr); | 
					
						
							|  |  |  |       filter.set("srgb", false); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     filter.commit(); | 
					
						
							|  |  |  |     /* Since it's memory intensive, it's better to run only one instance of OIDN at a time.
 | 
					
						
							|  |  |  |      * OpenImageDenoise is multithreaded internally and should use all available cores nonetheless. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     BLI_mutex_lock(&oidn_lock); | 
					
						
							|  |  |  |     filter.execute(); | 
					
						
							|  |  |  |     BLI_mutex_unlock(&oidn_lock); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  |     /* copy the alpha channel, OpenImageDenoise currently only supports RGB */ | 
					
						
							|  |  |  |     size_t numPixels = inputTileColor->getWidth() * inputTileColor->getHeight(); | 
					
						
							|  |  |  |     for (size_t i = 0; i < numPixels; ++i) { | 
					
						
							|  |  |  |       data[i * 4 + 3] = inputBufferColor[i * 4 + 3]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return; | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2019-08-27 14:03:49 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  |   /* If built without OIDN or running on an unsupported CPU, just pass through. */ | 
					
						
							| 
									
										
										
										
											2019-08-18 19:29:59 +10:00
										 |  |  |   UNUSED_VARS(inputTileAlbedo, inputTileNormal, settings); | 
					
						
							| 
									
										
										
											
												Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
											
										 
											2019-08-14 15:30:26 +02:00
										 |  |  |   ::memcpy(data, | 
					
						
							|  |  |  |            inputBufferColor, | 
					
						
							|  |  |  |            inputTileColor->getWidth() * inputTileColor->getHeight() * sizeof(float) * 4); | 
					
						
							|  |  |  | } |