[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57290] trunk/blender/intern/cycles/render : Fix #35672: missing update when changing light ray visibility during viewport render.
Brecht Van Lommel
brechtvanlommel at pandora.be
Sat Jun 8 15:43:39 CEST 2013
Revision: 57290
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57290
Author: blendix
Date: 2013-06-08 13:43:38 +0000 (Sat, 08 Jun 2013)
Log Message:
-----------
Fix #35672: missing update when changing light ray visibility during viewport render.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/light.cpp
trunk/blender/intern/cycles/render/light.h
Modified: trunk/blender/intern/cycles/render/light.cpp
===================================================================
--- trunk/blender/intern/cycles/render/light.cpp 2013-06-08 11:38:23 UTC (rev 57289)
+++ trunk/blender/intern/cycles/render/light.cpp 2013-06-08 13:43:38 UTC (rev 57290)
@@ -135,6 +135,7 @@
LightManager::LightManager()
{
need_update = true;
+ use_light_visibility = false;
}
LightManager::~LightManager()
@@ -232,15 +233,15 @@
if(!(object->visibility & PATH_RAY_DIFFUSE)) {
shader_id |= SHADER_EXCLUDE_DIFFUSE;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
if(!(object->visibility & PATH_RAY_GLOSSY)) {
shader_id |= SHADER_EXCLUDE_GLOSSY;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
if(!(object->visibility & PATH_RAY_TRANSMIT)) {
shader_id |= SHADER_EXCLUDE_TRANSMIT;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
for(size_t i = 0; i < mesh->triangles.size(); i++) {
@@ -511,7 +512,6 @@
}
}
}
- scene->film->use_light_visibility = false;
for(size_t i = 0; i < scene->lights.size(); i++) {
Light *light = scene->lights[i];
@@ -525,15 +525,15 @@
if(!light->use_diffuse) {
shader_id |= SHADER_EXCLUDE_DIFFUSE;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
if(!light->use_glossy) {
shader_id |= SHADER_EXCLUDE_GLOSSY;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
if(!light->use_transmission) {
shader_id |= SHADER_EXCLUDE_TRANSMIT;
- scene->film->use_light_visibility = true;
+ use_light_visibility = true;
}
if(light->type == LIGHT_POINT) {
@@ -618,6 +618,8 @@
device_free(device, dscene);
+ use_light_visibility = false;
+
device_update_points(device, dscene, scene);
if(progress.get_cancel()) return;
@@ -627,6 +629,11 @@
device_update_background(device, dscene, scene, progress);
if(progress.get_cancel()) return;
+ if(use_light_visibility != scene->film->use_light_visibility) {
+ scene->film->use_light_visibility = use_light_visibility;
+ scene->film->tag_update(scene);
+ }
+
need_update = false;
}
Modified: trunk/blender/intern/cycles/render/light.h
===================================================================
--- trunk/blender/intern/cycles/render/light.h 2013-06-08 11:38:23 UTC (rev 57289)
+++ trunk/blender/intern/cycles/render/light.h 2013-06-08 13:43:38 UTC (rev 57290)
@@ -65,6 +65,7 @@
class LightManager {
public:
+ bool use_light_visibility;
bool need_update;
LightManager();
More information about the Bf-blender-cvs
mailing list