Commit: abd33a3c0c1cf7097d7ee25a68b6083e19a89f75 Author: Sebastián Barschkis Date: Fri Mar 6 11:03:21 2020 +0100 Branches: master https://developer.blender.org/rBabd33a3c0c1cf7097d7ee25a68b6083e19a89f75
Fluid: Cleanup naming for emmission bounding box Since the bounding boxes are now also being used for effector objects, there needs to be a better name for them. Instead of calling them EmissionMap, which caters only to emission objects, they will now be called FluidObjectBB. =================================================================== M source/blender/blenkernel/intern/fluid.c =================================================================== diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c index 977b449f6d3..f638211dded 100644 --- a/source/blender/blenkernel/intern/fluid.c +++ b/source/blender/blenkernel/intern/fluid.c @@ -650,7 +650,7 @@ static bool is_static_object(Object *ob) /** \name Bounding Box * \{ */ -typedef struct EmissionMap { +typedef struct FluidObjectBB { float *influence; float *velocity; float *distances; @@ -658,95 +658,98 @@ typedef struct EmissionMap { int min[3], max[3], res[3]; int hmin[3], hmax[3], hres[3]; int total_cells, valid; -} EmissionMap; +} FluidObjectBB; -static void em_boundInsert(EmissionMap *em, float point[3]) +static void bb_boundInsert(FluidObjectBB *bb, float point[3]) { int i = 0; - if (!em->valid) { + if (!bb->valid) { for (; i < 3; i++) { - em->min[i] = (int)floor(point[i]); - em->max[i] = (int)ceil(point[i]); + bb->min[i] = (int)floor(point[i]); + bb->max[i] = (int)ceil(point[i]); } - em->valid = 1; + bb->valid = 1; } else { for (; i < 3; i++) { - if (point[i] < em->min[i]) { - em->min[i] = (int)floor(point[i]); + if (point[i] < bb->min[i]) { + bb->min[i] = (int)floor(point[i]); } - if (point[i] > em->max[i]) { - em->max[i] = (int)ceil(point[i]); + if (point[i] > bb->max[i]) { + bb->max[i] = (int)ceil(point[i]); } } } } -static void em_allocateData(EmissionMap *em, bool use_velocity, bool use_influence) +static void bb_allocateData(FluidObjectBB *bb, bool use_velocity, bool use_influence) { int i, res[3]; for (i = 0; i < 3; i++) { - res[i] = em->max[i] - em->min[i]; + res[i] = bb->max[i] - bb->min[i]; if (res[i] <= 0) { return; } } - em->total_cells = res[0] * res[1] * res[2]; - copy_v3_v3_int(em->res, res); + bb->total_cells = res[0] * res[1] * res[2]; + copy_v3_v3_int(bb->res, res); - em->numobjs = MEM_calloc_arrayN(em->total_cells, sizeof(float), "fluid_bb_numobjs"); + bb->numobjs = MEM_calloc_arrayN(bb->total_cells, sizeof(float), "fluid_bb_numobjs"); if (use_influence) { - em->influence = MEM_calloc_arrayN(em->total_cells, sizeof(float), "fluid_bb_influence"); + bb->influence = MEM_calloc_arrayN(bb->total_cells, sizeof(float), "fluid_bb_influence"); } if (use_velocity) { - em->velocity = MEM_calloc_arrayN(em->total_cells * 3, sizeof(float), "fluid_bb_velocity"); + bb->velocity = MEM_calloc_arrayN(bb->total_cells * 3, sizeof(float), "fluid_bb_velocity"); } - em->distances = MEM_malloc_arrayN(em->total_cells, sizeof(float), "fluid_bb_distances"); + bb->distances = MEM_malloc_arrayN(bb->total_cells, sizeof(float), "fluid_bb_distances"); /* Initialize to infinity. */ - memset(em->distances, 0x7f7f7f7f, sizeof(float) * em->total_cells); + memset(bb->distances, 0x7f7f7f7f, sizeof(float) * bb->total_cells); - em->valid = true; + bb->valid = true; } -static void em_freeData(EmissionMap *em) +static void bb_freeData(FluidObjectBB *bb) { - if (em->numobjs) { - MEM_freeN(em->numobjs); + if (bb->numobjs) { + MEM_freeN(bb->numobjs); } - if (em->influence) { - MEM_freeN(em->influence); + if (bb->influence) { + MEM_freeN(bb->influence); } - if (em->velocity) { - MEM_freeN(em->velocity); + if (bb->velocity) { + MEM_freeN(bb->velocity); } - if (em->distances) { - MEM_freeN(em->distances); + if (bb->distances) { + MEM_freeN(bb->distances); } } -static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int additive, float sample_size) +static void bb_combineMaps(FluidObjectBB *output, + FluidObjectBB *bb2, + int additive, + float sample_size) { int i, x, y, z; /* Copyfill input 1 struct and clear output for new allocation. */ - EmissionMap em1; - memcpy(&em1, output, sizeof(EmissionMap)); - memset(output, 0, sizeof(EmissionMap)); + FluidObjectBB bb1; + memcpy(&bb1, output, sizeof(FluidObjectBB)); + memset(output, 0, sizeof(FluidObjectBB)); for (i = 0; i < 3; i++) { - if (em1.valid) { - output->min[i] = MIN2(em1.min[i], em2->min[i]); - output->max[i] = MAX2(em1.max[i], em2->max[i]); + if (bb1.valid) { + output->min[i] = MIN2(bb1.min[i], bb2->min[i]); + output->max[i] = MAX2(bb1.max[i], bb2->max[i]); } else { - output->min[i] = em2->min[i]; - output->max[i] = em2->max[i]; + output->min[i] = bb2->min[i]; + output->max[i] = bb2->max[i]; } } /* Allocate output map. */ - em_allocateData(output, (em1.velocity || em2->velocity), (em1.influence || em2->influence)); + bb_allocateData(output, (bb1.velocity || bb2->velocity), (bb1.influence || bb2->influence)); /* Low through bounding box */ for (x = output->min[0]; x < output->max[0]; x++) { @@ -759,45 +762,45 @@ static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int additive, z - output->min[2]); /* Initialize with first input if in range. */ - if (x >= em1.min[0] && x < em1.max[0] && y >= em1.min[1] && y < em1.max[1] && - z >= em1.min[2] && z < em1.max[2]) { + if (x >= bb1.min[0] && x < bb1.max[0] && y >= bb1.min[1] && y < bb1.max[1] && + z >= bb1.min[2] && z < bb1.max[2]) { int index_in = manta_get_index( - x - em1.min[0], em1.res[0], y - em1.min[1], em1.res[1], z - em1.min[2]); + x - bb1.min[0], bb1.res[0], y - bb1.min[1], bb1.res[1], z - bb1.min[2]); /* Values. */ - output->numobjs[index_out] = em1.numobjs[index_in]; - output->influence[index_out] = em1.influence[index_in]; - output->distances[index_out] = em1.distances[index_in]; - if (output->velocity && em1.velocity) { - copy_v3_v3(&output->velocity[index_out * 3], &em1.velocity[index_in * 3]); + output->numobjs[index_out] = bb1.numobjs[index_in]; + output->influence[index_out] = bb1.influence[index_in]; + output->distances[index_out] = bb1.distances[index_in]; + if (output->velocity && bb1.velocity) { + copy_v3_v3(&output->velocity[index_out * 3], &bb1.velocity[index_in * 3]); } } /* Apply second input if in range. */ - if (x >= em2->min[0] && x < em2->max[0] && y >= em2->min[1] && y < em2->max[1] && - z >= em2->min[2] && z < em2->max[2]) { + if (x >= bb2->min[0] && x < bb2->max[0] && y >= bb2->min[1] && y < bb2->max[1] && + z >= bb2->min[2] && z < bb2->max[2]) { int index_in = manta_get_index( - x - em2->min[0], em2->res[0], y - em2->min[1], em2->res[1], z - em2->min[2]); + x - bb2->min[0], bb2->res[0], y - bb2->min[1], bb2->res[1], z - bb2->min[2]); /* Values. */ - output->numobjs[index_out] = MAX2(em2->numobjs[index_in], output->numobjs[index_out]); + output->numobjs[index_out] = MAX2(bb2->numobjs[index_in], output->numobjs[index_out]); if (additive) { - output->influence[index_out] += em2->influence[index_in] * sample_size; + output->influence[index_out] += bb2->influence[index_in] * sample_size; } else { - output->influence[index_out] = MAX2(em2->influence[index_in], + output->influence[index_out] = MAX2(bb2->influence[index_in], output->influence[index_out]); } - output->distances[index_out] = MIN2(em2->distances[index_in], + output->distances[index_out] = MIN2(bb2->distances[index_in], output->distances[index_out]); - if (output->velocity && em2->velocity) { + if (output->velocity && bb2->velocity) { /* Last sample replaces the velocity. */ output->velocity[index_out * 3] = ADD_IF_LOWER(output->velocity[index_out * 3], - em2->velocity[index_in * 3]); + bb2->velocity[index_in * 3]); output->velocity[index_out * 3 + 1] = ADD_IF_LOWER(output->velocity[index_out * 3 + 1], - em2->velocity[index_in * 3 + 1]); + bb2->velocity[index_in * 3 + 1]); output->velocity[index_out * 3 + 2] = ADD_IF_LOWER(output->velocity[index_out * 3 + 2], - em2->velocity[index_in * 3 + 2]); + bb2->velocity[index_in * 3 + 2]); } } } /* Low res loop. */ @@ -805,7 +808,7 @@ static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int additive, } /* Free original data. */ - em_freeData(&em1); + bb_freeData(&bb1); } /** \} */ @@ -940,7 +943,7 @@ typedef struct ObstaclesFromDMData { const MLoopTri *mlooptri; BVHTreeFromMesh *tree; - EmissionMap *om; + FluidObjectBB *bb; bool has_velocity; float *vert_vel; @@ -952,29 +955,29 @@ static void obstacles_from_mesh_task_cb(void *__restrict userdata, const TaskParallelTLS *__restrict UNUSED(tls)) { ObstaclesFromDMData *data = userdata; - EmissionMap *om = data->om; + FluidObjectBB *bb = data->bb; for (int x = data->min[0]; x < data->max[0]; x++) { for (int y = data->min[1]; y < data->max[1]; y++) { const int index = manta_get_index( - x - om->min[0], om->res[0], y - om->min[1], om->res[1], z - om->min[2]); + x - bb->min[0], bb->res[0], y - bb->min[1], bb->res[1], z - bb->min[2]); float ray_start[3] = {(float)x + 0.5f, (float)y + 0.5f, (float)z + 0.5f}; - /* Calculate object velocities. Result in om->velocity. */ + /* Calculate object velocities. Result in bb->velocity. */ sample_effector(data->mes, data->mvert, data->mloop @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs