[Bf-blender-cvs] [fbf4aeb] openvdb: Move exported flag from SmokeDomainSettings to OpenVDBCache

Kévin Dietrich noreply at git.blender.org
Thu Jun 11 12:28:51 CEST 2015


Commit: fbf4aebfda596567ab8eb6464dd3c48770ef02fb
Author: Kévin Dietrich
Date:   Wed Jun 10 02:25:08 2015 +0200
Branches: openvdb
https://developer.blender.org/rBfbf4aebfda596567ab8eb6464dd3c48770ef02fb

Move exported flag from SmokeDomainSettings to OpenVDBCache

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

M	source/blender/blenkernel/BKE_smoke.h
M	source/blender/blenkernel/intern/smoke.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/makesdna/DNA_smoke_types.h
M	source/blender/makesrna/intern/rna_smoke.c

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

diff --git a/source/blender/blenkernel/BKE_smoke.h b/source/blender/blenkernel/BKE_smoke.h
index 74cc1c2..bc2e376 100644
--- a/source/blender/blenkernel/BKE_smoke.h
+++ b/source/blender/blenkernel/BKE_smoke.h
@@ -33,6 +33,8 @@
  *  \author Daniel Genrich
  */
 
+struct OpenVDBCache;
+
 typedef float (*bresenham_callback)(float *result, float *input, int res[3], int *pixel, float *tRay, float correct);
 
 struct DerivedMesh *smokeModifier_do(struct SmokeModifierData *smd, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, bool for_render);
@@ -63,7 +65,7 @@ void smokeModifier_OpenVDB_update_transform(struct SmokeModifierData *smd,
                                             update_cb update,
                                             void *update_cb_data);
 
-void smokeModifier_OpenVDB_import(struct SmokeModifierData *smd, struct Scene *scene, struct Object *ob);
+void smokeModifier_OpenVDB_import(struct SmokeModifierData *smd, struct Scene *scene, struct Object *ob, struct OpenVDBCache *cache);
 
 struct OpenVDBCache *BKE_openvdb_get_current_cache(struct SmokeDomainSettings *sds);
 void BKE_openvdb_cache_filename(char *r_filename, const char *path, const char *fname, const char *relbase, int frame);
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 1bf7660..bc529d9 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -2680,6 +2680,7 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object *
 	{
 		SmokeDomainSettings *sds = smd->domain;
 		PointCache *cache = NULL;
+		OpenVDBCache *vdb_cache = NULL;
 		PTCacheID pid;
 		int startframe, endframe, framenr;
 		float timescale;
@@ -2717,14 +2718,17 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object *
 		}
 
 		/* try to read from openvdb cache */
-//		if (sds->use_openvdb && (sds->flags & MOD_SMOKE_OPENVDB_EXPORTED)) {
-//			smokeModifier_OpenVDB_import(smd, scene, ob);
-//			smd->time = framenr;
-//			return;
+//		vdb_cache = BKE_openvdb_get_current_cache(sds);
+//		if (sds->use_openvdb && vdb_cache) {
+//			if (vdb_cache->flags & VDB_CACHE_SMOKE_EXPORTED) {
+//				smokeModifier_OpenVDB_import(smd, scene, ob, vdb_cache);
+//				smd->time = framenr;
+//				return;
+//			}
 //		}
 
 		/* try to read from cache */
-		if (BKE_ptcache_read(&pid, (float)framenr) == PTCACHE_READ_EXACT) {
+		if (!sds->use_openvdb && (BKE_ptcache_read(&pid, (float)framenr) == PTCACHE_READ_EXACT)) {
 			BKE_ptcache_validate(cache, framenr);
 			smd->time = framenr;
 			return;
@@ -3378,15 +3382,14 @@ void smokeModifier_OpenVDB_export(SmokeModifierData *smd, Scene *scene, Object *
 		}
 	}
 
-	sds->flags |= MOD_SMOKE_OPENVDB_EXPORTED;
+	cache->flags |= VDB_CACHE_SMOKE_EXPORTED;
 
 	scene->r.cfra = orig_frame;
 }
 
-void smokeModifier_OpenVDB_import(SmokeModifierData *smd, Scene *scene, Object *ob)
+void smokeModifier_OpenVDB_import(SmokeModifierData *smd, Scene *scene, Object *ob, OpenVDBCache *cache)
 {
 	SmokeDomainSettings *sds = smd->domain;
-	OpenVDBCache *cache;
 	int startframe, endframe;
 	char filename[FILE_MAX];
 	const char *relbase = modifier_path_relbase(ob);
@@ -3478,7 +3481,7 @@ void smokeModifier_OpenVDB_export(SmokeModifierData *smd, Scene *scene, Object *
 	UNUSED_VARS(smd, scene, ob, dm, update, update_cb_data);
 }
 
-void smokeModifier_OpenVDB_import(SmokeModifierData *smd, Scene *scene, Object *ob)
+void smokeModifier_OpenVDB_import(SmokeModifierData *smd, Scene *scene, Object *ob, OpenVDBCache *cache)
 {
 	UNUSED_VARS(smd, scene, ob);
 }
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 9d8222d..40ad065 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -2547,7 +2547,7 @@ OpenVDBCache *BKE_openvdb_get_current_cache(SmokeDomainSettings *sds)
 	OpenVDBCache *cache = sds->vdb_caches.first;
 
 	for (; cache; cache = cache->next) {
-		if (cache->flag & VDB_CACHE_CURRENT) {
+		if (cache->flags & VDB_CACHE_CURRENT) {
 			break;
 		}
 	}
@@ -2585,11 +2585,11 @@ static int openvdb_cache_add_exec(bContext *C, wmOperator *op)
 	cache = BKE_openvdb_get_current_cache(sds);
 
 	if (cache) {
-		cache->flag &= ~VDB_CACHE_CURRENT;
+		cache->flags &= ~VDB_CACHE_CURRENT;
 	}
 
 	cache_new = openvdb_cache_new();
-	cache_new->flag |= VDB_CACHE_CURRENT;
+	cache_new->flags |= VDB_CACHE_CURRENT;
 
 	BLI_addtail(&sds->vdb_caches, cache_new);
 
@@ -2636,10 +2636,10 @@ static int openvdb_cache_remove_exec(bContext *C, wmOperator *op)
 	}
 
 	if (cache_next) {
-		cache_next->flag |= VDB_CACHE_CURRENT;
+		cache_next->flags |= VDB_CACHE_CURRENT;
 	}
 	else if (cache_prev) {
-		cache_prev->flag |= VDB_CACHE_CURRENT;
+		cache_prev->flags |= VDB_CACHE_CURRENT;
 	}
 
 	WM_event_add_notifier(C, NC_OBJECT | ND_POINTCACHE, ob);
diff --git a/source/blender/makesdna/DNA_smoke_types.h b/source/blender/makesdna/DNA_smoke_types.h
index 522b19b..1b5464e 100644
--- a/source/blender/makesdna/DNA_smoke_types.h
+++ b/source/blender/makesdna/DNA_smoke_types.h
@@ -41,7 +41,6 @@ enum {
 	MOD_SMOKE_HIGH_SMOOTH = (1 << 5),  /* -- Deprecated -- */
 	MOD_SMOKE_FILE_LOAD = (1 << 6),  /* flag for file load */
 	MOD_SMOKE_ADAPTIVE_DOMAIN = (1 << 7),
-	MOD_SMOKE_OPENVDB_EXPORTED = (1 << 8),
 };
 
 #if (DNA_DEPRECATED_GCC_POISON == 1)
@@ -164,11 +163,12 @@ typedef struct OpenVDBCache {
 	char path[1024];
 	char name[64];
 	int startframe, endframe;
-	short flag, compression, pad[2];
+	short flags, compression, pad[2];
 } OpenVDBCache;
 
 enum {
-	VDB_CACHE_CURRENT = 1,
+	VDB_CACHE_CURRENT        = (1 << 0),
+	VDB_CACHE_SMOKE_EXPORTED = (1 << 1),
 };
 
 enum {
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 59198e8..e3e6f5b 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -293,7 +293,7 @@ static int rna_SmokeModifier_active_openvdb_cache_index_get(PointerRNA *ptr)
     int i = 0;
 
     for (; cache; cache = cache->next, i++) {
-        if (cache->flag & VDB_CACHE_CURRENT)
+        if (cache->flags & VDB_CACHE_CURRENT)
             return i;
     }
     return 0;
@@ -307,9 +307,9 @@ static void rna_SmokeModifier_active_openvdb_cache_index_set(struct PointerRNA *
 
     for (; cache; cache = cache->next, i++) {
         if (i == value)
-            cache->flag |= VDB_CACHE_CURRENT;
+            cache->flags |= VDB_CACHE_CURRENT;
         else
-            cache->flag &= ~VDB_CACHE_CURRENT;
+            cache->flags &= ~VDB_CACHE_CURRENT;
     }
 }




More information about the Bf-blender-cvs mailing list