104#ifdef WITH_OPENIMAGEDENOISE
105 oidn::DeviceRef device = oidn::newDevice(oidn::DeviceType::CPU);
108 const int width = input_image.
domain().
size.x;
109 const int height = input_image.
domain().
size.y;
110 const int pixel_stride =
sizeof(
float) * 4;
116 float *color =
static_cast<float *
>(
GPU_texture_read(input_image, data_format, 0));
117 oidn::FilterRef filter = device.newFilter(
"RT");
118 filter.setImage(
"color", color, oidn::Format::Float3, width, height, 0, pixel_stride);
119 filter.setImage(
"output", color, oidn::Format::Float3, width, height, 0, pixel_stride);
126 float *albedo =
nullptr;
129 albedo =
static_cast<float *
>(
GPU_texture_read(input_albedo, data_format, 0));
132 oidn::FilterRef albedoFilter = device.newFilter(
"RT");
133 albedoFilter.setImage(
134 "albedo", albedo, oidn::Format::Float3, width, height, 0, pixel_stride);
135 albedoFilter.setImage(
136 "output", albedo, oidn::Format::Float3, width, height, 0, pixel_stride);
138 albedoFilter.commit();
139 albedoFilter.execute();
142 filter.setImage(
"albedo", albedo, oidn::Format::Float3, width, height, 0, pixel_stride);
149 float *normal =
nullptr;
152 normal =
static_cast<float *
>(
GPU_texture_read(input_normal, data_format, 0));
155 oidn::FilterRef normalFilter = device.newFilter(
"RT");
156 normalFilter.setImage(
157 "normal", normal, oidn::Format::Float3, width, height, 0, pixel_stride);
158 normalFilter.setImage(
159 "output", normal, oidn::Format::Float3, width, height, 0, pixel_stride);
161 normalFilter.commit();
162 normalFilter.execute();
165 filter.setImage(
"normal", normal, oidn::Format::Float3, width, height, 0, pixel_stride);