diff options
Diffstat (limited to 'intern/mantaflow')
-rw-r--r-- | intern/mantaflow/extern/manta_fluid_API.h | 16 | ||||
-rw-r--r-- | intern/mantaflow/intern/manta_fluid_API.cpp | 43 |
2 files changed, 23 insertions, 36 deletions
diff --git a/intern/mantaflow/extern/manta_fluid_API.h b/intern/mantaflow/extern/manta_fluid_API.h index 5ed94d99edd..48d42504994 100644 --- a/intern/mantaflow/extern/manta_fluid_API.h +++ b/intern/mantaflow/extern/manta_fluid_API.h @@ -132,14 +132,14 @@ void manta_smoke_turbulence_export(struct MANTA *smoke, float **tcw2); void manta_smoke_get_rgba(struct MANTA *smoke, float *data, int sequential); void manta_smoke_turbulence_get_rgba(struct MANTA *smoke, float *data, int sequential); -void manta_smoke_get_rgba_from_density(struct MANTA *smoke, - float color[3], - float *data, - int sequential); -void manta_smoke_turbulence_get_rgba_from_density(struct MANTA *smoke, - float color[3], - float *data, - int sequential); +void manta_smoke_get_rgba_fixed_color(struct MANTA *smoke, + float color[3], + float *data, + int sequential); +void manta_smoke_turbulence_get_rgba_fixed_color(struct MANTA *smoke, + float color[3], + float *data, + int sequential); void manta_smoke_ensure_heat(struct MANTA *smoke, struct FluidModifierData *mmd); void manta_smoke_ensure_fire(struct MANTA *smoke, struct FluidModifierData *mmd); void manta_smoke_ensure_colors(struct MANTA *smoke, struct FluidModifierData *mmd); diff --git a/intern/mantaflow/intern/manta_fluid_API.cpp b/intern/mantaflow/intern/manta_fluid_API.cpp index 7e3e4520485..89c69bebc51 100644 --- a/intern/mantaflow/intern/manta_fluid_API.cpp +++ b/intern/mantaflow/intern/manta_fluid_API.cpp @@ -455,14 +455,9 @@ static void get_rgba( for (i = 0; i < total_cells; i++) { float alpha = a[i]; - if (alpha) { - data[i * m] = r[i]; - data[i * m + i_g] = g[i]; - data[i * m + i_b] = b[i]; - } - else { - data[i * m] = data[i * m + i_g] = data[i * m + i_b] = 0.0f; - } + data[i * m] = r[i] * alpha; + data[i * m + i_g] = g[i] * alpha; + data[i * m + i_b] = b[i] * alpha; data[i * m + i_a] = alpha; } } @@ -489,8 +484,7 @@ void manta_smoke_turbulence_get_rgba(MANTA *smoke, float *data, int sequential) sequential); } -static void get_rgba_from_density( - float color[3], float *a, int total_cells, float *data, int sequential) +static void get_rgba_fixed_color(float color[3], int total_cells, float *data, int sequential) { int i; int m = 4, i_g = 1, i_b = 2, i_a = 3; @@ -502,31 +496,24 @@ static void get_rgba_from_density( } for (i = 0; i < total_cells; i++) { - float alpha = a[i]; - if (alpha) { - data[i * m] = color[0] * alpha; - data[i * m + i_g] = color[1] * alpha; - data[i * m + i_b] = color[2] * alpha; - } - else { - data[i * m] = data[i * m + i_g] = data[i * m + i_b] = 0.0f; - } - data[i * m + i_a] = alpha; + data[i * m] = color[0]; + data[i * m + i_g] = color[1]; + data[i * m + i_b] = color[2]; + data[i * m + i_a] = 1.0f; } } -void manta_smoke_get_rgba_from_density(MANTA *smoke, float color[3], float *data, int sequential) +void manta_smoke_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential) { - get_rgba_from_density(color, smoke->getDensity(), smoke->getTotalCells(), data, sequential); + get_rgba_fixed_color(color, smoke->getTotalCells(), data, sequential); } -void manta_smoke_turbulence_get_rgba_from_density(MANTA *smoke, - float color[3], - float *data, - int sequential) +void manta_smoke_turbulence_get_rgba_fixed_color(MANTA *smoke, + float color[3], + float *data, + int sequential) { - get_rgba_from_density( - color, smoke->getDensityHigh(), smoke->getTotalCellsHigh(), data, sequential); + get_rgba_fixed_color(color, smoke->getTotalCellsHigh(), data, sequential); } void manta_smoke_ensure_heat(MANTA *smoke, struct FluidModifierData *mmd) |