[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40163] branches/cycles: Cycles:

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Sep 12 15:13:56 CEST 2011


Revision: 40163
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40163
Author:   blendix
Date:     2011-09-12 13:13:56 +0000 (Mon, 12 Sep 2011)
Log Message:
-----------
Cycles:
* Fix missing update when editing objects with emission materials.
* Fix preview pass rendering set to 1 not showing full resolution.
* Fix CUDA runtime compiling failing due to missing cache directory.
* Use settings from first render layer for visibility and material override.

And a bunch of incomplete and still disabled code mostly related to closure
sampling.

Modified Paths:
--------------
    branches/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/blender/addon/ui.py
    branches/cycles/intern/cycles/blender/blender_mesh.cpp
    branches/cycles/intern/cycles/blender/blender_object.cpp
    branches/cycles/intern/cycles/blender/blender_sync.cpp
    branches/cycles/intern/cycles/blender/blender_sync.h
    branches/cycles/intern/cycles/device/device.cpp
    branches/cycles/intern/cycles/device/device_cuda.cpp
    branches/cycles/intern/cycles/device/device_multi.cpp
    branches/cycles/intern/cycles/kernel/kernel_emission.h
    branches/cycles/intern/cycles/kernel/kernel_globals.h
    branches/cycles/intern/cycles/kernel/kernel_light.h
    branches/cycles/intern/cycles/kernel/kernel_path.h
    branches/cycles/intern/cycles/kernel/kernel_shader.h
    branches/cycles/intern/cycles/kernel/kernel_types.h
    branches/cycles/intern/cycles/kernel/osl/osl_shader.cpp
    branches/cycles/intern/cycles/kernel/osl/osl_shader.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_diffuse.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_microfacet.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_reflection.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_refraction.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_transparent.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_ward.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_westin.h
    branches/cycles/intern/cycles/kernel/svm/emissive.h
    branches/cycles/intern/cycles/kernel/svm/svm.h
    branches/cycles/intern/cycles/kernel/svm/svm_bsdf.h
    branches/cycles/intern/cycles/kernel/svm/svm_closure.h
    branches/cycles/intern/cycles/kernel/svm/svm_types.h
    branches/cycles/intern/cycles/kernel/svm/volume.h
    branches/cycles/intern/cycles/render/light.cpp
    branches/cycles/intern/cycles/render/mesh.cpp
    branches/cycles/intern/cycles/render/nodes.cpp
    branches/cycles/intern/cycles/render/object.cpp
    branches/cycles/intern/cycles/render/session.cpp
    branches/cycles/intern/cycles/render/session.h
    branches/cycles/intern/cycles/render/svm.cpp
    branches/cycles/intern/cycles/render/svm.h
    branches/cycles/intern/cycles/render/tile.cpp
    branches/cycles/intern/cycles/util/util_path.cpp
    branches/cycles/intern/cycles/util/util_path.h

Modified: branches/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/CMakeLists.txt	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/CMakeLists.txt	2011-09-12 13:13:56 UTC (rev 40163)
@@ -207,11 +207,10 @@
 # Cycles
 option(WITH_CYCLES			"Enable Cycles Render Engine" ON)
 OPTION(WITH_CYCLES_OSL		"Build with Open Shading Language support" OFF)
-OPTION(WITH_CYCLES_CUDA		"Build with CUDA support" OFF)
+OPTION(WITH_CYCLES_CUDA		"Build with CUDA binaries" OFF)
 OPTION(WITH_CYCLES_BLENDER	"Build Blender Python extension" ON)
 OPTION(WITH_CYCLES_PARTIO	"Build with Partio point cloud support (unfinished)" OFF)
 OPTION(WITH_CYCLES_NETWORK	"Build with network rendering support (unfinished)" OFF)
-OPTION(WITH_CYCLES_MULTI	"Build with network rendering support (unfinished)" OFF)
 OPTION(WITH_CYCLES_TEST		"Build cycles test application" OFF)
 
 # disable for now, but plan to support on all platforms eventually

Modified: branches/cycles/intern/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/intern/cycles/CMakeLists.txt	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/CMakeLists.txt	2011-09-12 13:13:56 UTC (rev 40163)
@@ -41,10 +41,6 @@
   add_definitions(-DWITH_NETWORK)
 endif()
 
-if(WITH_CYCLES_MULTI)
-  add_definitions(-DWITH_MULTI)
-endif()
-
 if(WITH_CYCLES_CUDA)
   add_definitions(-DWITH_CUDA_BINARIES)
 endif()
@@ -59,6 +55,7 @@
 
 add_definitions(-DWITH_OPENCL)
 add_definitions(-DWITH_CUDA)
+add_definitions(-DWITH_MULTI)
 
 include_directories(
 	${BOOST_INCLUDE_DIR}

Modified: branches/cycles/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/cycles/intern/cycles/blender/addon/ui.py	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/addon/ui.py	2011-09-12 13:13:56 UTC (rev 40163)
@@ -140,6 +140,42 @@
         sub.prop(cscene, "debug_bvh_type", text="")
         sub.prop(cscene, "debug_use_spatial_splits")
 
+class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
+    bl_label = "Layers"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    def draw(self, context):
+        layout = self.layout
+
+        scene = context.scene
+        rd = scene.render
+
+        # row = layout.row()
+        # row.template_list(rd, "layers", rd.layers, "active_index", rows=2)
+
+        # col = row.column(align=True)
+        # col.operator("scene.render_layer_add", icon='ZOOMIN', text="")
+        # col.operator("scene.render_layer_remove", icon='ZOOMOUT', text="")
+
+        row = layout.row()
+        # rl = rd.layers.active
+        rl = rd.layers[0]
+        row.prop(rl, "name")
+        #row.prop(rd, "use_single_layer", text="", icon_only=True)
+
+        split = layout.split()
+
+        col = split.column()
+        col.prop(scene, "layers", text="Scene")
+
+        col = split.column()
+        col.prop(rl, "layers", text="Layer")
+
+        layout.separator()
+
+        layout.prop(rl, "material_override", text="Material")
+
 class Cycles_PT_post_processing(CyclesButtonsPanel, Panel):
     bl_label = "Post Processing"
     bl_options = {'DEFAULT_CLOSED'}

Modified: branches/cycles/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-09-12 13:13:56 UTC (rev 40163)
@@ -223,8 +223,12 @@
 	vector<uint> used_shaders;
 
 	BL::Object::material_slots_iterator slot;
-	for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot)
-		find_shader(slot->material(), used_shaders);
+	for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot) {
+		if(render_layer.material_override)
+			find_shader(render_layer.material_override, used_shaders);
+		else
+			find_shader(slot->material(), used_shaders);
+	}
 
 	if(used_shaders.size() == 0)
 		used_shaders.push_back(scene->default_surface);

Modified: branches/cycles/intern/cycles/blender/blender_object.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_object.cpp	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_object.cpp	2011-09-12 13:13:56 UTC (rev 40163)
@@ -108,7 +108,7 @@
 
 /* Object */
 
-void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object b_ob, Transform& tfm)
+void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object b_ob, Transform& tfm, uint visibility)
 {
 	/* light is handled separately */
 	if(object_is_light(b_ob)) {
@@ -130,7 +130,7 @@
 		object->name = b_ob.name();
 		object->tfm = tfm;
 		
-		object->visibility = object_ray_visibility(b_ob);
+		object->visibility = object_ray_visibility(b_ob) & visibility;
 		if(b_parent.ptr.data != b_ob.ptr.data)
 			object->visibility &= object_ray_visibility(b_parent);
 
@@ -147,13 +147,9 @@
 void BlenderSync::sync_objects(BL::SpaceView3D b_v3d)
 {
 	/* layer data */
-	uint layer;
+	uint scene_layer = render_layer.scene_layer;
+	uint layer = render_layer.layer;
 	
-	if(b_v3d)
-		layer = get_layer(b_v3d.layers());
-	else
-		layer = get_layer(b_scene.layers());
-	
 	/* prepare for sync */
 	light_map.pre_sync();
 	mesh_map.pre_sync();
@@ -165,8 +161,14 @@
 
 	for(b_scene.objects.begin(b_ob); b_ob != b_scene.objects.end(); ++b_ob) {
 		bool hide = (b_v3d)? b_ob->hide(): b_ob->hide_render();
+		uint ob_layer = get_layer(b_ob->layers());
 
-		if(!hide && get_layer(b_ob->layers()) & layer) {
+		if(!hide && (ob_layer & scene_layer)) {
+			uint visibility = PATH_RAY_ALL;
+			
+			if(!(ob_layer & layer))
+				visibility &= ~PATH_RAY_CAMERA;
+
 			if(b_ob->is_duplicator()) {
 				/* dupli objects */
 				object_create_duplilist(*b_ob, b_scene);
@@ -176,7 +178,7 @@
 
 				for(b_ob->dupli_list.begin(b_dup); b_dup != b_ob->dupli_list.end(); ++b_dup) {
 					Transform tfm = get_transform(b_dup->matrix());
-					sync_object(*b_ob, b_index, b_dup->object(), tfm);
+					sync_object(*b_ob, b_index, b_dup->object(), tfm, visibility);
 					b_index++;
 				}
 
@@ -185,7 +187,7 @@
 			else {
 				/* object itself */
 				Transform tfm = get_transform(b_ob->matrix_world());
-				sync_object(*b_ob, 0, *b_ob, tfm);
+				sync_object(*b_ob, 0, *b_ob, tfm, visibility);
 			}
 		}
 	}

Modified: branches/cycles/intern/cycles/blender/blender_sync.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_sync.cpp	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_sync.cpp	2011-09-12 13:13:56 UTC (rev 40163)
@@ -118,6 +118,7 @@
 {
 	sync_integrator();
 	sync_film();
+	sync_render_layer(b_v3d);
 	sync_shaders();
 	sync_objects(b_v3d);
 }
@@ -172,6 +173,29 @@
 		filter->tag_update(scene);
 }
 
+/* Render Layer */
+
+void BlenderSync::sync_render_layer(BL::SpaceView3D b_v3d)
+{
+	if(b_v3d) {
+		render_layer.scene_layer = get_layer(b_v3d.layers());
+		render_layer.layer = render_layer.scene_layer;
+		render_layer.material_override = PointerRNA_NULL;
+	}
+	else {
+		BL::RenderSettings r = b_scene.render();
+		BL::RenderSettings::layers_iterator b_rlay;
+
+		for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) {
+			render_layer.scene_layer = get_layer(b_scene.layers());
+			render_layer.layer = get_layer(b_rlay->layers());
+			render_layer.material_override = b_rlay->material_override();
+
+			break; /* single layer for now */
+		}
+	}
+}
+
 /* Scene Parameters */
 
 SceneParams BlenderSync::get_scene_params(BL::Scene b_scene)

Modified: branches/cycles/intern/cycles/blender/blender_sync.h
===================================================================
--- branches/cycles/intern/cycles/blender/blender_sync.h	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_sync.h	2011-09-12 13:13:56 UTC (rev 40163)
@@ -72,11 +72,12 @@
 	void sync_integrator();
 	void sync_view();
 	void sync_world();
+	void sync_render_layer(BL::SpaceView3D b_v3d);
 	void sync_shaders();
 
 	void sync_nodes(Shader *shader, BL::ShaderNodeTree b_ntree);
 	Mesh *sync_mesh(BL::Object b_ob, bool object_updated);
-	void sync_object(BL::Object b_parent, int b_index, BL::Object b_object, Transform& tfm);
+	void sync_object(BL::Object b_parent, int b_index, BL::Object b_object, Transform& tfm, uint visibility);
 	void sync_light(BL::Object b_parent, int b_index, BL::Object b_ob, Transform& tfm);
 
 	/* util */
@@ -99,6 +100,17 @@
 
 	Scene *scene;
 	bool preview;
+
+	struct RenderLayerInfo {
+		RenderLayerInfo()
+		: scene_layer(0), layer(0),
+		  material_override(PointerRNA_NULL)
+		{}
+
+		uint scene_layer;
+		uint layer;
+		BL::Material material_override;
+	} render_layer;
 };
 
 CCL_NAMESPACE_END

Modified: branches/cycles/intern/cycles/device/device.cpp
===================================================================
--- branches/cycles/intern/cycles/device/device.cpp	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/device/device.cpp	2011-09-12 13:13:56 UTC (rev 40163)
@@ -84,7 +84,7 @@
 
 void Device::pixels_copy_from(device_memory& mem, int y, int w, int h)
 {
-	mem_copy_from(mem, sizeof(uchar)*4*y*w, sizeof(uchar)*4*w*h);
+	mem_copy_from(mem, sizeof(uint8_t)*4*y*w, sizeof(uint8_t)*4*w*h);
 }
 
 void Device::pixels_free(device_memory& mem)
@@ -104,8 +104,14 @@
 	glPixelZoom((float)width/(float)w, (float)height/(float)h);
 	glRasterPos2f(0, y);
 
-	glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, (void*)rgba.data_pointer);
+	uint8_t *pixels = (uint8_t*)rgba.data_pointer;
 
+	/* for multi devices, this assumes the ineffecient method that we allocate
+	   all pixels on the device even though we only render to a subset */
+	pixels += sizeof(uint8_t)*4*y*w;
+
+	glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+
 	glRasterPos2f(0.0f, 0.0f);
 	glPixelZoom(1.0f, 1.0f);
 

Modified: branches/cycles/intern/cycles/device/device_cuda.cpp
===================================================================
--- branches/cycles/intern/cycles/device/device_cuda.cpp	2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/device/device_cuda.cpp	2011-09-12 13:13:56 UTC (rev 40163)
@@ -232,11 +232,16 @@
 		double starttime = time_dt();
 		printf("Compiling CUDA kernel ...\n");
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list