This patch causes the render buffers to be copied to the denoiser device only once before denoising and output/display is then fed from that single buffer on the denoiser device. That way usually all but one copy (from all the render devices to the denoiser device) can be eliminated, provided that the denoiser device is also the display device (in which case interop is used to update the display). As such this patch also adds some logic that tries to ensure the chosen denoiser device is the same as the display device. Differential Revision: https://developer.blender.org/D15657
31 lines
708 B
C++
31 lines
708 B
C++
/* SPDX-License-Identifier: Apache-2.0
|
|
* Copyright 2021-2022 Blender Foundation */
|
|
|
|
#pragma once
|
|
|
|
#include "session/output_driver.h"
|
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
/* PathTraceTile
|
|
*
|
|
* Implementation of OutputDriver::Tile interface for path tracer. */
|
|
|
|
class PathTrace;
|
|
|
|
class PathTraceTile : public OutputDriver::Tile {
|
|
public:
|
|
PathTraceTile(PathTrace &path_trace);
|
|
|
|
bool get_pass_pixels(const string_view pass_name, const int num_channels, float *pixels) const;
|
|
bool set_pass_pixels(const string_view pass_name,
|
|
const int num_channels,
|
|
const float *pixels) const;
|
|
|
|
private:
|
|
PathTrace &path_trace_;
|
|
mutable bool copied_from_device_;
|
|
};
|
|
|
|
CCL_NAMESPACE_END
|