Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/device/device_cpu.cpp')
-rw-r--r--intern/cycles/device/device_cpu.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index ee3a3ddea64..d37ed046c1e 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -24,6 +24,10 @@
# include <OSL/oslexec.h>
#endif
+#ifdef WITH_EMBREE
+# include <embree3/rtcore.h>
+#endif
+
#include "device/device.h"
#include "device/device_denoising.h"
#include "device/device_intern.h"
@@ -183,6 +187,9 @@ class CPUDevice : public Device {
oidn::FilterRef oidn_filter;
#endif
thread_spin_lock oidn_task_lock;
+#ifdef WITH_EMBREE
+ RTCDevice embree_device;
+#endif
bool use_split_kernel;
@@ -302,6 +309,9 @@ class CPUDevice : public Device {
#ifdef WITH_OSL
kernel_globals.osl = &osl_globals;
#endif
+#ifdef WITH_EMBREE
+ embree_device = rtcNewDevice("verbose=0");
+#endif
use_split_kernel = DebugFlags().cpu.split_kernel;
if (use_split_kernel) {
VLOG(1) << "Will be using split kernel.";
@@ -339,6 +349,9 @@ class CPUDevice : public Device {
~CPUDevice()
{
+#ifdef WITH_EMBREE
+ rtcReleaseDevice(embree_device);
+#endif
task_pool.cancel();
texture_info.free();
}
@@ -523,6 +536,15 @@ class CPUDevice : public Device {
#endif
}
+ void *bvh_device() const override
+ {
+#ifdef WITH_EMBREE
+ return embree_device;
+#else
+ return NULL;
+#endif
+ }
+
void thread_run(DeviceTask &task)
{
if (task.type == DeviceTask::RENDER)