[Bf-blender-cvs] [0552d61a121] soc-2018-cycles-volumes: Several minor fixes and variable name changes.

Geraldine Chua noreply at git.blender.org
Thu Aug 2 18:10:15 CEST 2018


Commit: 0552d61a1216de5455a024b6ba6a2c618293a16c
Author: Geraldine Chua
Date:   Thu Aug 2 23:55:50 2018 +0800
Branches: soc-2018-cycles-volumes
https://developer.blender.org/rB0552d61a1216de5455a024b6ba6a2c618293a16c

Several minor fixes and variable name changes.

Notable changes:
* P_v moved to correct location in ShaderData struct and shader init.
* Volume motion blur now also checks if the Deformation Blur box in
the Object panel is checked.
* Changed OpenVDB variable names to refer to generic volumes.

===================================================================

M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/kernel/geom/geom_volume.h
M	intern/cycles/kernel/kernel_shader.h
M	intern/cycles/kernel/kernel_types.h
M	intern/cycles/render/image.cpp
M	intern/cycles/render/image.h
M	intern/cycles/render/mesh.cpp
M	release/scripts/startup/bl_ui/properties_physics_smoke.py
M	source/blender/blenkernel/intern/pointcache.c
M	source/blender/editors/io/io_openvdb.c
M	source/blender/editors/space_file/filelist.c
M	source/blender/editors/space_file/filesel.c
M	source/blender/makesdna/DNA_smoke_types.h
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/intern/rna_smoke.c
M	source/blender/windowmanager/intern/wm_operator_props.c

===================================================================

diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 8dbd80f3747..1141973efd3 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -1083,7 +1083,7 @@ class CyclesObjectSettings(bpy.types.PropertyGroup):
 
         cls.use_deform_motion = BoolProperty(
                 name="Use Deformation Motion",
-                description="Use deformation motion blur for this object",
+                description="Use deformation motion blur for this object. If object is a volume, use volume motion blur",
                 default=True,
                 )
 
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 77a82ae4a19..7486eba2d48 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -378,15 +378,18 @@ static void create_mesh_volume_attributes(Scene *scene,
 	string filename;
 	void *builtin_data;
 
-	if(b_domain.is_openvdb()) {
-		if(!scene->params.intialized_openvdb) {
+	if(b_domain.use_volume_file()) {
+		BL::ID b_id = b_ob.data();
+		filename = blender_absolute_path(b_data, b_id,
+		                                 b_domain.volume_filepath());
+
+		if(string_endswith(filename, ".vdb") &&
+		   !scene->params.intialized_openvdb)
+		{
 			openvdb_initialize();
 			scene->params.intialized_openvdb = true;
 		}
 
-		BL::ID b_id = b_ob.data();
-		filename = blender_absolute_path(b_data, b_id,
-		                                 b_domain.openvdb_filepath());
 		builtin_data = NULL;
 	}
 	else {
diff --git a/intern/cycles/kernel/geom/geom_volume.h b/intern/cycles/kernel/geom/geom_volume.h
index 51a7efc1457..dd093a881cc 100644
--- a/intern/cycles/kernel/geom/geom_volume.h
+++ b/intern/cycles/kernel/geom/geom_volume.h
@@ -55,6 +55,7 @@ ccl_device_inline float3 volume_get_position(KernelGlobals *kg,
 {
 	float3 P = volume_normalized_position(kg, sd, sd->P);
 
+#ifdef __OBJECT_MOTION__
 	/* Eulerian motion blur. */
 	if(kernel_data.cam.shuttertime != -1.0f) {
 		AttributeDescriptor v_desc = find_attribute(kg, sd, ATTR_STD_VOLUME_VELOCITY);
@@ -73,6 +74,7 @@ ccl_device_inline float3 volume_get_position(KernelGlobals *kg,
 			P = volume_normalized_position(kg, sd, sd->P + velocity * sd->time);
 		}
 	}
+#endif
 
 	return P;
 }
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index 64b1e070982..4c4598accce 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -1211,10 +1211,10 @@ ccl_device_inline void shader_eval_volume(KernelGlobals *kg,
 			/* todo: this is inefficient for motion blur, we should be
 			 * caching matrices instead of recomputing them each step */
 			shader_setup_object_transforms(kg, sd, sd->time);
+#endif
 
 			/* Cache volume P. */
 			sd->P_v = volume_get_position(kg, sd);
-#endif
 		}
 
 		/* evaluate shader */
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 63ff8f3ba6f..7f869eb51c2 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -1037,6 +1037,12 @@ typedef ccl_addr_space struct ShaderData {
 	float3 ray_P;
 	differential3 ray_dP;
 
+#ifdef __VOLUME__
+	/* Normalized volume position, only set for volumes.
+	 * May be advected for motion blur. */
+	float3 P_v;
+#endif
+
 #ifdef __OSL__
 	struct KernelGlobals *osl_globals;
 	struct PathState *osl_path_state;
@@ -1058,11 +1064,6 @@ typedef ccl_addr_space struct ShaderData {
 
 	/* At the end so we can adjust size in ShaderDataTinyStorage. */
 	struct ShaderClosure closure[MAX_CLOSURE];
-
-#ifdef __VOLUME__
-	/* Normalized volume position. May be advected for motion blur. */
-	float3 P_v;
-#endif
 } ShaderData;
 
 typedef ccl_addr_space struct ShaderDataTinyStorage {
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 6bba328145e..2656da877f4 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -275,14 +275,14 @@ string ImageManager::name_from_type(int type)
 		return "byte4";
 }
 
-string ImageManager::name_from_grid_type(int type)
+static string name_from_grid_type(int type)
 {
 	if(type == IMAGE_GRID_TYPE_SPARSE)
 		return "sparse";
 	else if(type == IMAGE_GRID_TYPE_OPENVDB)
 		return "OpenVDB";
 	else
-		return "default";
+		return "dense";
 }
 
 static bool image_equals(ImageManager::Image *image,
diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h
index e36876da434..5106f302228 100644
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@ -181,7 +181,6 @@ private:
 	int type_index_to_flattened_slot(int slot, ImageDataType type);
 	int flattened_slot_to_type_index(int flat_slot, ImageDataType *type);
 	string name_from_type(int type);
-	string name_from_grid_type(int type);
 
 	void device_load_image(Device *device,
 	                       Scene *scene,
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index 1cfbb085e45..570dbf083ff 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -1545,7 +1545,8 @@ void MeshManager::device_update_attributes(Device *device, DeviceScene *dscene,
 		}
 
 		/* motion blur for volumes */
-		if(scene->need_motion() == Scene::MOTION_BLUR && mesh->has_volume) {
+		if(mesh->use_motion_blur && mesh->motion_steps > 1 && mesh->has_volume)
+		{
 			mesh_attributes[i].add(ATTR_STD_VOLUME_VELOCITY);
 		}
 	}
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 42ff60da6f1..541d24f2794 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -52,6 +52,21 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
         md = context.smoke
         ob = context.object
 
+        if bpy.app.build_options.openvdb and md.domain_settings.use_volume_file:
+            domain = md.domain_settings
+            layout.prop(domain, "use_volume_file", text="Volume Import")
+            split = layout.split(percentage=0.25)
+            col = split.column()
+            col.label(text="File Path:")
+            col = split.column()
+            col.prop(domain, "volume_filepath", text="")
+            split = layout.split(percentage=0.5)
+            col = split.column()
+            col.label(text="Empty Space:")
+            col = split.column()
+            col.prop(domain, "clipping")
+            return
+
         layout.row().prop(md, "smoke_type", expand=True)
 
         if md.smoke_type == 'DOMAIN':
@@ -82,16 +97,6 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
             sub.prop(domain, "dissolve_speed", text="Time")
             sub.prop(domain, "use_dissolve_smoke_log", text="Slow")
 
-            if(bpy.app.build_options.openvdb):
-                layout.prop(domain, "is_openvdb", text="OpenVDB Import")
-
-                if(domain.is_openvdb):
-                    split = layout.split(percentage=0.35)
-                    col = split.column()
-                    col.label(text="File Path:")
-                    col = split.column()
-                    col.prop(domain, "openvdb_filepath", text="")
-
         elif md.smoke_type == 'FLOW':
 
             flow = md.flow_settings
@@ -188,7 +193,7 @@ class PHYSICS_PT_smoke_fire(PhysicButtonsPanel, Panel):
     @classmethod
     def poll(cls, context):
         md = context.smoke
-        return md and (md.smoke_type == 'DOMAIN') and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (not md.domain_settings.use_volume_file)
 
     def draw(self, context):
         layout = self.layout
@@ -218,7 +223,7 @@ class PHYSICS_PT_smoke_adaptive_domain(PhysicButtonsPanel, Panel):
     @classmethod
     def poll(cls, context):
         md = context.smoke
-        return md and (md.smoke_type == 'DOMAIN') and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (not md.domain_settings.use_volume_file)
 
     def draw_header(self, context):
         md = context.smoke.domain_settings
@@ -253,7 +258,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel):
     def poll(cls, context):
         md = context.smoke
         rd = context.scene.render
-        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.use_volume_file)
 
     def draw_header(self, context):
         md = context.smoke.domain_settings
@@ -293,7 +298,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel):
     def poll(cls, context):
         md = context.smoke
         rd = context.scene.render
-        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.use_volume_file)
 
     def draw(self, context):
         layout = self.layout
@@ -322,7 +327,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel):
     def poll(cls, context):
         md = context.smoke
         rd = context.scene.render
-        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.use_volume_file)
 
     def draw(self, context):
         layout = self.layout
@@ -359,7 +364,7 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel):
     def poll(cls, context):
         md = context.smoke
         rd = context.scene.render
-        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.is_openvdb)
+        return md and (md.smoke_type == 'DOMAIN') and (rd.engine in cls.COMPAT_ENGINES) and (not md.domain_settings.use_volume_file)
 
     def draw(self, context):
         domain = context.smoke.domain_settings
@@ 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list