[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