diff options
author | Sebastián Barschkis <sebbas@sebbas.org> | 2020-10-19 22:40:04 +0300 |
---|---|---|
committer | Sebastián Barschkis <sebbas@sebbas.org> | 2020-10-19 22:40:17 +0300 |
commit | c6c49257710c4c7976601de54bcddc45eb9ee206 (patch) | |
tree | ef7a6fb0e8c8f4509910248079eed78aa881abd6 /source/blender/blenkernel/intern/fluid.c | |
parent | aa244a7a68db75111b4afc12b39c8d8c4297e528 (diff) |
Fluid: Added domain check for new OpenVDB precision 'Mini' type
Precision 'Mini' should only be available for liquids domains.
Diffstat (limited to 'source/blender/blenkernel/intern/fluid.c')
-rw-r--r-- | source/blender/blenkernel/intern/fluid.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c index 7392c9161b8..f66ba428611 100644 --- a/source/blender/blenkernel/intern/fluid.c +++ b/source/blender/blenkernel/intern/fluid.c @@ -4683,24 +4683,31 @@ void BKE_fluid_effector_type_set(Object *UNUSED(object), FluidEffectorSettings * settings->type = type; } -void BKE_fluid_coba_field_sanitize(FluidDomainSettings *settings) +void BKE_fluid_fields_sanitize(FluidDomainSettings *settings) { - /* Based on the domain type, the coba field is defaulted accordingly if the selected field + /* Based on the domain type, certain fields are defaulted accordingly if the selected field * is unsupported. */ - const char field = settings->coba_field; + const char coba_field = settings->coba_field; + const char data_depth = settings->openvdb_data_depth; if (settings->type == FLUID_DOMAIN_TYPE_GAS) { - if (field == FLUID_DOMAIN_FIELD_PHI || field == FLUID_DOMAIN_FIELD_PHI_IN || - field == FLUID_DOMAIN_FIELD_PHI_OUT || field == FLUID_DOMAIN_FIELD_PHI_OBSTACLE) { + if (coba_field == FLUID_DOMAIN_FIELD_PHI || coba_field == FLUID_DOMAIN_FIELD_PHI_IN || + coba_field == FLUID_DOMAIN_FIELD_PHI_OUT || + coba_field == FLUID_DOMAIN_FIELD_PHI_OBSTACLE) { /* Defaulted to density for gas domain. */ settings->coba_field = FLUID_DOMAIN_FIELD_DENSITY; } + + /* Gas domains do not support vdb mini precision. */ + if (data_depth == VDB_PRECISION_MINI_FLOAT) { + settings->openvdb_data_depth = VDB_PRECISION_HALF_FLOAT; + } } else if (settings->type == FLUID_DOMAIN_TYPE_LIQUID) { - if (field == FLUID_DOMAIN_FIELD_COLOR_R || field == FLUID_DOMAIN_FIELD_COLOR_G || - field == FLUID_DOMAIN_FIELD_COLOR_B || field == FLUID_DOMAIN_FIELD_DENSITY || - field == FLUID_DOMAIN_FIELD_FLAME || field == FLUID_DOMAIN_FIELD_FUEL || - field == FLUID_DOMAIN_FIELD_HEAT) { + if (coba_field == FLUID_DOMAIN_FIELD_COLOR_R || coba_field == FLUID_DOMAIN_FIELD_COLOR_G || + coba_field == FLUID_DOMAIN_FIELD_COLOR_B || coba_field == FLUID_DOMAIN_FIELD_DENSITY || + coba_field == FLUID_DOMAIN_FIELD_FLAME || coba_field == FLUID_DOMAIN_FIELD_FUEL || + coba_field == FLUID_DOMAIN_FIELD_HEAT) { /* Defaulted to phi for liquid domain. */ settings->coba_field = FLUID_DOMAIN_FIELD_PHI; } |