[Bf-blender-cvs] [29c51dd] openvdb: Added a method to check for sparse volumes.

Kévin Dietrich noreply at git.blender.org
Sun Nov 13 21:43:59 CET 2016


Commit: 29c51dd1ed700c93ef00e1e5bc294f48785e15a8
Author: Kévin Dietrich
Date:   Sat Jan 30 23:23:27 2016 +0100
Branches: openvdb
https://developer.blender.org/rB29c51dd1ed700c93ef00e1e5bc294f48785e15a8

Added a method to check for sparse volumes.

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

M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/blender/blender_sync.h
M	intern/cycles/kernel/kernel_shader.h

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

diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index d77d197..646a193 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -73,6 +73,34 @@ bool BlenderSync::object_is_light(BL::Object b_ob)
 	return (b_ob_data && b_ob_data.is_a(&RNA_Lamp));
 }
 
+bool BlenderSync::object_has_sparse_volume(BL::Object b_ob)
+{
+	BL::SmokeDomainSettings b_domain = object_smoke_domain_find(b_ob);
+
+	if(!b_domain) {
+		return false;
+	}
+
+	BL::PointCache b_ptcache = b_domain.point_cache();
+
+	if (!b_ptcache.is_baked()) {
+	    return false;
+	}
+
+	if (b_domain.cache_file_format() != BL::SmokeDomainSettings::cache_file_format_OPENVDB) {
+	    return false;
+	}
+
+#if 0
+	char filename[1024];
+	SmokeDomainSettings_cache_filename_get(&b_domain.ptr, filename);
+
+	return strcmp(filename, "");
+#else
+	return true;
+#endif
+}
+
 static uint object_ray_visibility(BL::Object b_ob)
 {
 	PointerRNA cvisibility = RNA_pointer_get(&b_ob.ptr, "cycles_visibility");
@@ -348,9 +376,10 @@ Object *BlenderSync::sync_object(BL::Object b_parent,
 	bool use_holdout = (layer_flag & render_layer.holdout_layer) != 0;
 	
 	if(object_has_sparse_volume(b_ob)) {
-		object->mesh = NULL;
+		//object->mesh = NULL;
+		printf("object has sparse volume\n");
 	}
-	else {
+	/*else*/ {
 		/* mesh sync */
 		object->mesh = sync_mesh(b_ob, object_updated, hide_tris);
 	}
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index 2eb153a..addf655 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -123,6 +123,7 @@ private:
 	bool BKE_object_is_modified(BL::Object b_ob);
 	bool object_is_mesh(BL::Object b_ob);
 	bool object_is_light(BL::Object b_ob);
+	bool object_has_sparse_volume(BL::Object b_ob);
 
 	/* variables */
 	BL::RenderEngine b_engine;
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index c8550d2..1a331ab 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -104,7 +104,7 @@ ccl_device_noinline void shader_setup_from_ray(KernelGlobals *kg,
 #endif
 	}
 	else if(ccl_fetch(sd, type) & PRIMITIVE_VOLUME) {
-		ccl_fetch(sd, shader) = kernel_tex_fetch(__vol_shader, ccl_fetch(sd, prim));
+	//	ccl_fetch(sd, shader) = kernel_tex_fetch(__vol_shader, ccl_fetch(sd, prim));
 	}
 	else {
 		/* motion triangle */




More information about the Bf-blender-cvs mailing list