Cycles: Make shadow catcher an optional feature for OpenCL

Solves majority of speed regression on AMD OpenCL.
This commit is contained in:
Sergey Sharybin
2017-03-21 13:55:27 +01:00
parent e07ffcbd1c
commit 8d48ea0233
3 changed files with 15 additions and 1 deletions

View File

@@ -121,6 +121,9 @@ public:
/* Use Transparent shadows */ /* Use Transparent shadows */
bool use_transparent; bool use_transparent;
/* Use various shadow tricks, such as shadow catcher. */
bool use_shadow_tricks;
DeviceRequestedFeatures() DeviceRequestedFeatures()
{ {
/* TODO(sergey): Find more meaningful defaults. */ /* TODO(sergey): Find more meaningful defaults. */
@@ -137,6 +140,7 @@ public:
use_integrator_branched = false; use_integrator_branched = false;
use_patch_evaluation = false; use_patch_evaluation = false;
use_transparent = false; use_transparent = false;
use_shadow_tricks = false;
} }
bool modified(const DeviceRequestedFeatures& requested_features) bool modified(const DeviceRequestedFeatures& requested_features)
@@ -153,7 +157,8 @@ public:
use_volume == requested_features.use_volume && use_volume == requested_features.use_volume &&
use_integrator_branched == requested_features.use_integrator_branched && use_integrator_branched == requested_features.use_integrator_branched &&
use_patch_evaluation == requested_features.use_patch_evaluation && use_patch_evaluation == requested_features.use_patch_evaluation &&
use_transparent == requested_features.use_transparent); use_transparent == requested_features.use_transparent &&
use_shadow_tricks == requested_features.use_shadow_tricks);
} }
/* Convert the requested features structure to a build options, /* Convert the requested features structure to a build options,
@@ -197,6 +202,9 @@ public:
if(!use_transparent && !use_volume) { if(!use_transparent && !use_volume) {
build_options += " -D__NO_TRANSPARENT__"; build_options += " -D__NO_TRANSPARENT__";
} }
if(!use_shadow_tricks) {
build_options += " -D__NO_SHADOW_TRICKS__";
}
return build_options; return build_options;
} }
}; };

View File

@@ -213,6 +213,9 @@ CCL_NAMESPACE_BEGIN
#ifdef __NO_TRANSPARENT__ #ifdef __NO_TRANSPARENT__
# undef __TRANSPARENT_SHADOWS__ # undef __TRANSPARENT_SHADOWS__
#endif #endif
#ifdef __NO_SHADOW_TRICKS__
#undef __SHADOW_TRICKS__
#endif
/* Random Numbers */ /* Random Numbers */

View File

@@ -637,6 +637,9 @@ DeviceRequestedFeatures Session::get_requested_device_features()
requested_features.use_patch_evaluation = true; requested_features.use_patch_evaluation = true;
} }
#endif #endif
if(object->is_shadow_catcher) {
requested_features.use_shadow_tricks = true;
}
} }
BakeManager *bake_manager = scene->bake_manager; BakeManager *bake_manager = scene->bake_manager;