and glass shaders. How well this will work on non-fermi GPU's is unclear still, it's
a bit heavy on register usage.
+ device->device_type = type;
+
+ DeviceType device_type;
bool background;
public:
virtual ~Device() {}
bool background;
public:
virtual ~Device() {}
+ DeviceType type() { return device_type; }
+
/* info */
virtual string description() = 0;
/* info */
virtual string description() = 0;
#define __EMISSION__
#define __TEXTURES__
#define __HOLDOUT__
#define __EMISSION__
#define __TEXTURES__
#define __HOLDOUT__
-//#define __MULTI_CLOSURE__
+#define __MULTI_CLOSURE__
//#define __TRANSPARENT_SHADOWS__
//#define __MULTI_LIGHT__
#endif
//#define __TRANSPARENT_SHADOWS__
//#define __MULTI_LIGHT__
#endif
SceneParams()
{
shadingsystem = SVM;
SceneParams()
{
shadingsystem = SVM;
- use_multi_closure = false;
+ use_multi_closure = true;
bvh_type = BVH_DYNAMIC;
use_bvh_cache = false;
use_bvh_spatial_split = false;
bvh_type = BVH_DYNAMIC;
use_bvh_cache = false;
use_bvh_spatial_split = false;
}
bool sunsky_done = false;
}
bool sunsky_done = false;
+ bool use_multi_closure = (scene->params.use_multi_closure && device->type() != DEVICE_OPENCL);
for(i = 0; i < scene->shaders.size(); i++) {
Shader *shader = scene->shaders[i];
for(i = 0; i < scene->shaders.size(); i++) {
Shader *shader = scene->shaders[i];
scene->light_manager->need_update = true;
SVMCompiler compiler(scene->shader_manager, scene->image_manager,
scene->light_manager->need_update = true;
SVMCompiler compiler(scene->shader_manager, scene->image_manager,
- scene->params.use_multi_closure);
compiler.sunsky = (sunsky_done)? NULL: &dscene->data.sunsky;
compiler.background = ((int)i == scene->default_background);
compiler.compile(shader, svm_nodes, i);
compiler.sunsky = (sunsky_done)? NULL: &dscene->data.sunsky;
compiler.background = ((int)i == scene->default_background);
compiler.compile(shader, svm_nodes, i);