[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49143] trunk/blender/intern/cycles: fix for cycles bug in localview: see r48269, bits used for localview gave collisions with PathRayFlag's

Campbell Barton ideasman42 at gmail.com
Mon Jul 23 16:48:19 CEST 2012


Revision: 49143
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49143
Author:   campbellbarton
Date:     2012-07-23 14:48:19 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
fix for cycles bug in localview: see r48269, bits used for localview gave collisions with PathRayFlag's

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48269

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_object.cpp
    trunk/blender/intern/cycles/blender/blender_sync.cpp
    trunk/blender/intern/cycles/blender/blender_sync.h
    trunk/blender/intern/cycles/kernel/kernel_types.h

Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp	2012-07-23 13:56:30 UTC (rev 49142)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp	2012-07-23 14:48:19 UTC (rev 49143)
@@ -306,6 +306,7 @@
 		for(b_sce.objects.begin(b_ob); b_ob != b_sce.objects.end(); ++b_ob) {
 			bool hide = (render_layer.use_viewport_visibility)? b_ob->hide(): b_ob->hide_render();
 			uint ob_layer = get_layer(b_ob->layers(), b_ob->layers_local_view(), object_is_light(*b_ob));
+			CYCLES_LOCAL_LAYER_HACK(render_layer.use_localview, ob_layer);
 			hide = hide || !(ob_layer & scene_layer);
 
 			if(!hide) {

Modified: trunk/blender/intern/cycles/blender/blender_sync.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-07-23 13:56:30 UTC (rev 49142)
+++ trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-07-23 14:48:19 UTC (rev 49143)
@@ -219,7 +219,9 @@
 			layer = layername.c_str();
 		}
 		else {
+			render_layer.use_localview = (b_v3d.local_view() ? true : false);
 			render_layer.scene_layer = get_layer(b_v3d.layers(), b_v3d.layers_local_view());
+			CYCLES_LOCAL_LAYER_HACK(render_layer.use_localview, render_layer.scene_layer);
 			render_layer.layer = render_layer.scene_layer;
 			render_layer.holdout_layer = 0;
 			render_layer.material_override = PointerRNA_NULL;
@@ -245,6 +247,7 @@
 			render_layer.material_override = b_rlay->material_override();
 			render_layer.use_background = b_rlay->use_sky();
 			render_layer.use_viewport_visibility = false;
+			render_layer.use_localview = false;
 			render_layer.samples = b_rlay->samples();
 		}
 

Modified: trunk/blender/intern/cycles/blender/blender_sync.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.h	2012-07-23 13:56:30 UTC (rev 49142)
+++ trunk/blender/intern/cycles/blender/blender_sync.h	2012-07-23 14:48:19 UTC (rev 49143)
@@ -127,10 +127,25 @@
 		BL::Material material_override;
 		bool use_background;
 		bool use_viewport_visibility;
+		bool use_localview;
 		int samples;
 	} render_layer;
 };
 
+/* we don't have spare bits for localview (normally 20-28)
+ * because PATH_RAY_LAYER_SHIFT uses 20-32.
+ * So - check if we have localview and if so, shift local
+ * view bits down to 1-8, since this is done for the view
+ * port only - it should be OK and not conflict with
+ * render layers. - Campbell.
+ *
+ * ... as an alternative we could use uint64_t
+ */
+#define CYCLES_LOCAL_LAYER_HACK(use_localview, layer)   \
+	if (use_localview) {                                \
+		layer >>= 20;                                   \
+	} (void)0
+
 CCL_NAMESPACE_END
 
 #endif /* __BLENDER_SYNC_H__ */

Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h	2012-07-23 13:56:30 UTC (rev 49142)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h	2012-07-23 14:48:19 UTC (rev 49143)
@@ -172,6 +172,8 @@
 
 	PATH_RAY_ALL = (1|2|4|8|16|32|64|128|256|512),
 
+	/* this gives collisions with localview bits
+	 * see: CYCLES_LOCAL_LAYER_HACK(), grr - Campbell */
 	PATH_RAY_LAYER_SHIFT = (32-20)
 };
 




More information about the Bf-blender-cvs mailing list