Blender V4.3
manta_fluid_API.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2016 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#include <cmath>
10
11#include "MANTA_main.h"
12#include "manta_fluid_API.h"
13
14/* Fluid functions */
15MANTA *manta_init(int *res, struct FluidModifierData *fmd)
16{
17 return new MANTA(res, fmd);
18}
19void manta_free(MANTA *fluid)
20{
21 delete fluid;
22}
23
25{
26 return fluid->initObstacle(fmd);
27}
29{
30 return fluid->initGuiding(fmd);
31}
33{
34 return fluid->initInVelocity(fmd);
35}
37{
38 return fluid->initOutflow(fmd);
39}
40
41bool manta_write_config(MANTA *fluid, FluidModifierData *fmd, int framenr)
42{
43 return fluid->writeConfiguration(fmd, framenr);
44}
45
46bool manta_write_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
47{
48 return fluid->writeData(fmd, framenr);
49}
50
51bool manta_write_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
52{
53 return fluid->writeNoise(fmd, framenr);
54}
55
56bool manta_read_config(MANTA *fluid, FluidModifierData *fmd, int framenr)
57{
58 return fluid->readConfiguration(fmd, framenr);
59}
60
61bool manta_read_data(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
62{
63 return fluid->readData(fmd, framenr, resumable);
64}
65
66bool manta_read_noise(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
67{
68 return fluid->readNoise(fmd, framenr, resumable);
69}
70
71bool manta_read_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
72{
73 return fluid->readMesh(fmd, framenr);
74}
75
76bool manta_read_particles(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
77{
78 return fluid->readParticles(fmd, framenr, resumable);
79}
80
81bool manta_read_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool sourceDomain)
82{
83 return fluid->readGuiding(fmd, framenr, sourceDomain);
84}
85
86bool manta_bake_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
87{
88 return fluid->bakeData(fmd, framenr);
89}
90
91bool manta_bake_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
92{
93 return fluid->bakeNoise(fmd, framenr);
94}
95
96bool manta_bake_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
97{
98 return fluid->bakeMesh(fmd, framenr);
99}
100
101bool manta_bake_particles(MANTA *fluid, FluidModifierData *fmd, int framenr)
102{
103 return fluid->bakeParticles(fmd, framenr);
104}
105
106bool manta_bake_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr)
107{
108 return fluid->bakeGuiding(fmd, framenr);
109}
110
111bool manta_has_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
112{
113 return fluid->hasData(fmd, framenr);
114}
115
116bool manta_has_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
117{
118 return fluid->hasNoise(fmd, framenr);
119}
120
121bool manta_has_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
122{
123 return fluid->hasMesh(fmd, framenr);
124}
125
126bool manta_has_particles(MANTA *fluid, FluidModifierData *fmd, int framenr)
127{
128 return fluid->hasParticles(fmd, framenr);
129}
130
131bool manta_has_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool domain)
132{
133 return fluid->hasGuiding(fmd, framenr, domain);
134}
135
137{
138 fluid->updateVariables(fmd);
139}
140
142{
143 return fluid->getFrame();
144}
145
147{
148 return fluid->getTimestep();
149}
150
152{
153 fluid->adaptTimestep();
154}
155
157{
158 return fluid->needsRealloc(fmd);
159}
160
161void manta_update_pointers(struct MANTA *fluid, struct FluidModifierData *fmd, bool flush)
162{
163 fluid->updatePointers(fmd, flush);
164}
165
166/* Fluid accessors */
167size_t manta_get_index(int x, int max_x, int y, int max_y, int z /*, int max_z */)
168{
169 return x + y * max_x + z * max_x * max_y;
170}
171size_t manta_get_index2d(int x, int max_x, int y /*, int max_y, int z, int max_z */)
172{
173 return x + y * max_x;
174}
176{
177 return fluid->getVelocityX();
178}
180{
181 return fluid->getVelocityY();
182}
184{
185 return fluid->getVelocityZ();
186}
187
189{
190 return fluid->getObVelocityX();
191}
193{
194 return fluid->getObVelocityY();
195}
197{
198 return fluid->getObVelocityZ();
199}
200
202{
203 return fluid->getGuideVelocityX();
204}
206{
207 return fluid->getGuideVelocityY();
208}
210{
211 return fluid->getGuideVelocityZ();
212}
213
215{
216 return fluid->getInVelocityX();
217}
219{
220 return fluid->getInVelocityY();
221}
223{
224 return fluid->getInVelocityZ();
225}
226
228{
229 return fluid->getForceX();
230}
232{
233 return fluid->getForceY();
234}
236{
237 return fluid->getForceZ();
238}
239
241{
242 return fluid->getPhiGuideIn();
243}
244
246{
247 return fluid->getNumObstacle();
248}
250{
251 return fluid->getNumGuide();
252}
253
255{
256 return fluid->getResX();
257}
259{
260 return fluid->getResY();
261}
263{
264 return fluid->getResZ();
265}
266
268{
269 return fluid->getPhiIn();
270}
272{
273 return fluid->getPhiStaticIn();
274}
276{
277 return fluid->getPhiObsIn();
278}
280{
281 return fluid->getPhiObsStaticIn();
282}
284{
285 return fluid->getPhiOutIn();
286}
288{
289 return fluid->getPhiOutStaticIn();
290}
291float *manta_get_phi(MANTA *fluid)
292{
293 return fluid->getPhi();
294}
296{
297 return fluid->getPressure();
298}
299
300/* Smoke functions */
302{
303 return smoke->exportSmokeScript(fmd);
304}
305
306static void get_rgba(
307 float *r, float *g, float *b, float *a, int total_cells, float *data, int sequential)
308{
309 int i;
310 /* Use offsets to map RGB grids to correct location in data grid. */
311 int m = 4, i_g = 1, i_b = 2, i_a = 3;
312 if (sequential) {
313 m = 1;
314 i_g *= total_cells;
315 i_b *= total_cells;
316 i_a *= total_cells;
317 }
318
319 for (i = 0; i < total_cells; i++) {
320 float alpha = a[i];
321 data[i * m] = r[i] * alpha;
322 data[i * m + i_g] = g[i] * alpha;
323 data[i * m + i_b] = b[i] * alpha;
324 data[i * m + i_a] = alpha;
325 }
326}
327
328void manta_smoke_get_rgba(MANTA *smoke, float *data, int sequential)
329{
330 get_rgba(smoke->getColorR(),
331 smoke->getColorG(),
332 smoke->getColorB(),
333 smoke->getDensity(),
334 smoke->getTotalCells(),
335 data,
336 sequential);
337}
338
339void manta_noise_get_rgba(MANTA *smoke, float *data, int sequential)
340{
341 get_rgba(smoke->getColorRHigh(),
342 smoke->getColorGHigh(),
343 smoke->getColorBHigh(),
344 smoke->getDensityHigh(),
345 smoke->getTotalCellsHigh(),
346 data,
347 sequential);
348}
349
350static void get_rgba_fixed_color(float color[3], int total_cells, float *data, int sequential)
351{
352 int i;
353 int m = 4, i_g = 1, i_b = 2, i_a = 3;
354 if (sequential) {
355 m = 1;
356 i_g *= total_cells;
357 i_b *= total_cells;
358 i_a *= total_cells;
359 }
360
361 for (i = 0; i < total_cells; i++) {
362 data[i * m] = color[0];
363 data[i * m + i_g] = color[1];
364 data[i * m + i_b] = color[2];
365 data[i * m + i_a] = 1.0f;
366 }
367}
368
369void manta_smoke_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential)
370{
371 get_rgba_fixed_color(color, smoke->getTotalCells(), data, sequential);
372}
373
374void manta_noise_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential)
375{
376 get_rgba_fixed_color(color, smoke->getTotalCellsHigh(), data, sequential);
377}
378
380{
381 return smoke->initHeat(fmd);
382}
383
385{
386 bool result = smoke->initFire(fmd);
387 if (smoke->usingNoise()) {
388 result &= smoke->initFireHigh(fmd);
389 }
390 return result;
391}
392
394{
395 bool result = smoke->initColors(fmd);
396 if (smoke->usingNoise()) {
397 result &= smoke->initColorsHigh(fmd);
398 }
399 return result;
400}
401
402/* Smoke accessors */
404{
405 return smoke->getDensity();
406}
408{
409 return smoke->getFuel();
410}
412{
413 return smoke->getReact();
414}
416{
417 return smoke->getHeat();
418}
420{
421 return smoke->getFlame();
422}
424{
425 return smoke->getShadow();
426}
427
429{
430 return smoke->getColorR();
431}
433{
434 return smoke->getColorG();
435}
437{
438 return smoke->getColorB();
439}
440
442{
443 return smoke->getFlags();
444}
445
447{
448 return smoke->getDensityIn();
449}
451{
452 return smoke->getHeatIn();
453}
455{
456 return smoke->getColorRIn();
457}
459{
460 return smoke->getColorGIn();
461}
463{
464 return smoke->getColorBIn();
465}
467{
468 return smoke->getFuelIn();
469}
471{
472 return smoke->getReactIn();
473}
475{
476 return smoke->getEmissionIn();
477}
478
480{
481 return smoke->getHeat() != nullptr;
482 ;
483}
485{
486 return smoke->getFuel() != nullptr;
487}
489{
490 return smoke->getColorR() != nullptr && smoke->getColorG() != nullptr &&
491 smoke->getColorB() != nullptr;
492}
493
495{
496 return smoke->getDensityHigh();
497}
499{
500 return smoke->getFuelHigh();
501}
503{
504 return smoke->getReactHigh();
505}
507{
508 return smoke->getColorRHigh();
509}
511{
512 return smoke->getColorGHigh();
513}
515{
516 return smoke->getColorBHigh();
517}
519{
520 return smoke->getFlameHigh();
521}
523{
524 return smoke->getTextureU();
525}
527{
528 return smoke->getTextureV();
529}
531{
532 return smoke->getTextureW();
533}
535{
536 return smoke->getTextureU2();
537}
539{
540 return smoke->getTextureV2();
541}
543{
544 return smoke->getTextureW2();
545}
546
548{
549 return smoke->getFuelHigh() != nullptr;
550}
552{
553 return smoke->getColorRHigh() != nullptr && smoke->getColorGHigh() != nullptr &&
554 smoke->getColorBHigh() != nullptr;
555 ;
556}
557
558void manta_noise_get_res(MANTA *smoke, int *res)
559{
560 res[0] = smoke->getResXHigh();
561 res[1] = smoke->getResYHigh();
562 res[2] = smoke->getResZHigh();
563}
565{
566 return smoke->getResXHigh() * smoke->getResYHigh() * smoke->getResZHigh();
567}
568
569/* Liquid functions */
571{
572 return liquid->exportLiquidScript(fmd);
573}
574
576{
577 return liquid->initLiquidSndParts(fmd);
578}
579
580/* Liquid accessors */
582{
583 return liquid->getParticleResX();
584}
586{
587 return liquid->getParticleResY();
588}
590{
591 return liquid->getParticleResZ();
592}
593
595{
596 return liquid->getMeshResX();
597}
599{
600 return liquid->getMeshResY();
601}
603{
604 return liquid->getMeshResZ();
605}
606
608{
609 return liquid->getParticleUpres();
610}
612{
613 return liquid->getMeshUpres();
614}
615
617{
618 return liquid->getNumVertices();
619}
621{
622 return liquid->getNumNormals();
623}
625{
626 return liquid->getNumTriangles();
627}
628
630{
631 return liquid->getVertexXAt(i);
632}
634{
635 return liquid->getVertexYAt(i);
636}
638{
639 return liquid->getVertexZAt(i);
640}
641
643{
644 return liquid->getNormalXAt(i);
645}
647{
648 return liquid->getNormalYAt(i);
649}
651{
652 return liquid->getNormalZAt(i);
653}
654
656{
657 return liquid->getTriangleXAt(i);
658}
660{
661 return liquid->getTriangleYAt(i);
662}
664{
665 return liquid->getTriangleZAt(i);
666}
667
669{
670 return liquid->getVertVelXAt(i);
671}
673{
674 return liquid->getVertVelYAt(i);
675}
677{
678 return liquid->getVertVelZAt(i);
679}
680
682{
683 return liquid->getNumFlipParticles();
684}
686{
687 return liquid->getNumSndParticles();
688}
689
691{
692 return liquid->getFlipParticleFlagAt(i);
693}
695{
696 return liquid->getSndParticleFlagAt(i);
697}
698
700{
701 return liquid->getFlipParticlePositionXAt(i);
702}
704{
705 return liquid->getFlipParticlePositionYAt(i);
706}
708{
709 return liquid->getFlipParticlePositionZAt(i);
710}
711
713{
714 return liquid->getFlipParticleVelocityXAt(i);
715}
717{
718 return liquid->getFlipParticleVelocityYAt(i);
719}
721{
722 return liquid->getFlipParticleVelocityZAt(i);
723}
724
726{
727 return liquid->getSndParticlePositionXAt(i);
728}
730{
731 return liquid->getSndParticlePositionYAt(i);
732}
734{
735 return liquid->getSndParticlePositionZAt(i);
736}
737
739{
740 return liquid->getSndParticleVelocityXAt(i);
741}
743{
744 return liquid->getSndParticleVelocityYAt(i);
745}
747{
748 return liquid->getSndParticleVelocityZAt(i);
749}
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition btQuadWord.h:117
local_group_size(16, 16) .push_constant(Type b
void manta_noise_get_rgba(MANTA *smoke, float *data, int sequential)
int manta_liquid_get_num_normals(MANTA *liquid)
bool manta_noise_has_fuel(MANTA *smoke)
float * manta_smoke_get_heat(MANTA *smoke)
bool manta_bake_particles(MANTA *fluid, FluidModifierData *fmd, int framenr)
int manta_liquid_get_num_verts(MANTA *liquid)
bool manta_ensure_guiding(MANTA *fluid, struct FluidModifierData *fmd)
float * manta_noise_get_color_b(MANTA *smoke)
float manta_liquid_get_snd_particle_position_x_at(MANTA *liquid, int i)
float * manta_noise_get_texture_v(MANTA *smoke)
bool manta_write_config(MANTA *fluid, FluidModifierData *fmd, int framenr)
int manta_liquid_get_triangle_z_at(MANTA *liquid, int i)
float * manta_get_phioutstatic_in(MANTA *fluid)
int manta_liquid_get_particle_res_z(MANTA *liquid)
float * manta_get_phiout_in(MANTA *fluid)
float * manta_noise_get_texture_w2(MANTA *smoke)
float * manta_noise_get_texture_u(MANTA *smoke)
bool manta_has_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_noise_get_texture_v2(MANTA *smoke)
void manta_update_variables(MANTA *fluid, FluidModifierData *fmd)
bool manta_bake_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_noise_get_color_r(MANTA *smoke)
bool manta_smoke_ensure_heat(MANTA *smoke, struct FluidModifierData *fmd)
int manta_liquid_get_triangle_y_at(MANTA *liquid, int i)
bool manta_has_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_get_ob_velocity_x(MANTA *fluid)
int manta_get_frame(MANTA *fluid)
float manta_liquid_get_vertvel_z_at(MANTA *liquid, int i)
float manta_liquid_get_normal_x_at(MANTA *liquid, int i)
float * manta_get_force_y(MANTA *fluid)
int manta_get_res_z(MANTA *fluid)
bool manta_smoke_has_fuel(MANTA *smoke)
bool manta_smoke_ensure_colors(MANTA *smoke, struct FluidModifierData *fmd)
int manta_noise_get_cells(MANTA *smoke)
void manta_smoke_get_rgba(MANTA *smoke, float *data, int sequential)
float * manta_noise_get_fuel(MANTA *smoke)
float manta_liquid_get_flip_particle_velocity_z_at(MANTA *liquid, int i)
float manta_liquid_get_flip_particle_position_x_at(MANTA *liquid, int i)
float * manta_get_ob_velocity_y(MANTA *fluid)
float * manta_smoke_get_color_b(MANTA *smoke)
size_t manta_get_index2d(int x, int max_x, int y)
bool manta_read_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool sourceDomain)
int manta_liquid_get_particle_res_y(MANTA *liquid)
float * manta_get_force_z(MANTA *fluid)
static void get_rgba_fixed_color(float color[3], int total_cells, float *data, int sequential)
float * manta_get_phiobsstatic_in(MANTA *fluid)
float * manta_noise_get_texture_w(MANTA *smoke)
float * manta_get_in_velocity_x(MANTA *fluid)
float manta_liquid_get_vertex_z_at(MANTA *liquid, int i)
void manta_smoke_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential)
float * manta_smoke_get_react(MANTA *smoke)
float * manta_smoke_get_shadow(MANTA *smoke)
int manta_get_res_x(MANTA *fluid)
float manta_liquid_get_vertex_y_at(MANTA *liquid, int i)
int manta_liquid_get_particle_res_x(MANTA *liquid)
float manta_liquid_get_flip_particle_velocity_y_at(MANTA *liquid, int i)
int manta_liquid_get_triangle_x_at(MANTA *liquid, int i)
bool manta_read_mesh(MANTA *fluid, FluidModifierData *fmd, int framenr)
bool manta_needs_realloc(MANTA *fluid, FluidModifierData *fmd)
int manta_liquid_get_num_snd_particles(MANTA *liquid)
float * manta_smoke_get_fuel(MANTA *smoke)
float * manta_smoke_get_color_b_in(MANTA *smoke)
float * manta_smoke_get_react_in(MANTA *smoke)
float manta_liquid_get_vertvel_y_at(MANTA *liquid, int i)
int manta_liquid_get_num_triangles(MANTA *liquid)
int * manta_smoke_get_flags(MANTA *smoke)
void manta_free(MANTA *fluid)
int manta_liquid_get_particle_upres(MANTA *liquid)
float * manta_get_phiobs_in(MANTA *fluid)
bool manta_liquid_ensure_sndparts(MANTA *liquid, struct FluidModifierData *fmd)
float manta_liquid_get_normal_z_at(MANTA *liquid, int i)
bool manta_has_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr, bool domain)
int manta_liquid_get_mesh_upres(MANTA *liquid)
float * manta_get_guide_velocity_y(MANTA *fluid)
float * manta_get_velocity_y(MANTA *fluid)
bool manta_read_particles(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
bool manta_smoke_has_colors(MANTA *smoke)
int manta_liquid_get_mesh_res_y(MANTA *liquid)
int manta_liquid_get_flip_particle_flag_at(MANTA *liquid, int i)
void manta_noise_get_rgba_fixed_color(MANTA *smoke, float color[3], float *data, int sequential)
float * manta_get_in_velocity_y(MANTA *fluid)
size_t manta_get_index(int x, int max_x, int y, int max_y, int z)
int manta_liquid_get_mesh_res_z(MANTA *liquid)
float * manta_get_guide_velocity_x(MANTA *fluid)
bool manta_write_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
float manta_liquid_get_snd_particle_velocity_z_at(MANTA *liquid, int i)
float * manta_get_phiguide_in(MANTA *fluid)
bool manta_bake_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_smoke_get_color_g_in(MANTA *smoke)
float * manta_smoke_get_density(MANTA *smoke)
float manta_liquid_get_vertvel_x_at(MANTA *liquid, int i)
float * manta_get_in_velocity_z(MANTA *fluid)
void manta_update_pointers(struct MANTA *fluid, struct FluidModifierData *fmd, bool flush)
float manta_liquid_get_normal_y_at(MANTA *liquid, int i)
float * manta_get_velocity_z(MANTA *fluid)
float * manta_smoke_get_color_r(MANTA *smoke)
float * manta_get_guide_velocity_z(MANTA *fluid)
bool manta_ensure_invelocity(MANTA *fluid, struct FluidModifierData *fmd)
bool manta_write_data(MANTA *fluid, FluidModifierData *fmd, int framenr)
bool manta_read_data(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
float * manta_smoke_get_color_g(MANTA *smoke)
bool manta_has_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
void manta_adapt_timestep(MANTA *fluid)
float manta_get_timestep(MANTA *fluid)
float * manta_noise_get_texture_u2(MANTA *smoke)
float * manta_smoke_get_flame(MANTA *smoke)
float manta_liquid_get_snd_particle_velocity_y_at(MANTA *liquid, int i)
float manta_liquid_get_snd_particle_position_z_at(MANTA *liquid, int i)
void manta_noise_get_res(MANTA *smoke, int *res)
float * manta_smoke_get_emission_in(MANTA *smoke)
bool manta_ensure_outflow(MANTA *fluid, struct FluidModifierData *fmd)
float * manta_noise_get_flame(MANTA *smoke)
bool manta_smoke_ensure_fire(MANTA *smoke, struct FluidModifierData *fmd)
MANTA * manta_init(int *res, struct FluidModifierData *fmd)
int manta_get_res_y(MANTA *fluid)
bool manta_noise_has_colors(MANTA *smoke)
float manta_liquid_get_snd_particle_velocity_x_at(MANTA *liquid, int i)
bool manta_liquid_export_script(MANTA *liquid, FluidModifierData *fmd)
float * manta_smoke_get_fuel_in(MANTA *smoke)
bool manta_read_config(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_get_phi_in(MANTA *fluid)
bool manta_read_noise(MANTA *fluid, FluidModifierData *fmd, int framenr, bool resumable)
float * manta_noise_get_color_g(MANTA *smoke)
float * manta_get_num_guide(MANTA *fluid)
float manta_liquid_get_flip_particle_position_z_at(MANTA *liquid, int i)
float * manta_smoke_get_heat_in(MANTA *smoke)
float * manta_get_num_obstacle(MANTA *fluid)
float * manta_noise_get_react(MANTA *smoke)
float * manta_noise_get_density(MANTA *smoke)
bool manta_smoke_export_script(MANTA *smoke, FluidModifierData *fmd)
bool manta_smoke_has_heat(MANTA *smoke)
float manta_liquid_get_flip_particle_position_y_at(MANTA *liquid, int i)
float * manta_smoke_get_color_r_in(MANTA *smoke)
int manta_liquid_get_snd_particle_flag_at(MANTA *liquid, int i)
float * manta_get_pressure(MANTA *fluid)
bool manta_bake_guiding(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_get_velocity_x(MANTA *fluid)
float * manta_get_force_x(MANTA *fluid)
static void get_rgba(float *r, float *g, float *b, float *a, int total_cells, float *data, int sequential)
float manta_liquid_get_flip_particle_velocity_x_at(MANTA *liquid, int i)
int manta_liquid_get_mesh_res_x(MANTA *liquid)
float manta_liquid_get_snd_particle_position_y_at(MANTA *liquid, int i)
float * manta_get_phistatic_in(MANTA *fluid)
float * manta_smoke_get_density_in(MANTA *smoke)
float manta_liquid_get_vertex_x_at(MANTA *liquid, int i)
bool manta_ensure_obstacle(MANTA *fluid, struct FluidModifierData *fmd)
float * manta_get_phi(MANTA *fluid)
bool manta_has_particles(MANTA *fluid, FluidModifierData *fmd, int framenr)
int manta_liquid_get_num_flip_particles(MANTA *liquid)
bool manta_bake_noise(MANTA *fluid, FluidModifierData *fmd, int framenr)
float * manta_get_ob_velocity_z(MANTA *fluid)
bool exportSmokeScript(struct FluidModifierData *fmd)
int getMeshResX()
Definition MANTA_main.h:140
float * getPhiOutIn()
Definition MANTA_main.h:388
float * getDensity()
Definition MANTA_main.h:174
int getParticleResZ()
Definition MANTA_main.h:136
float * getPhi()
Definition MANTA_main.h:396
int * getFlags()
Definition MANTA_main.h:242
float * getColorG()
Definition MANTA_main.h:270
float * getFuelIn()
Definition MANTA_main.h:302
float * getVelocityY()
Definition MANTA_main.h:186
int getTriangleXAt(int i)
Definition MANTA_main.h:478
float getVertexZAt(int i)
Definition MANTA_main.h:440
int getNumVertices()
Definition MANTA_main.h:409
float getFlipParticlePositionXAt(int i)
Definition MANTA_main.h:554
bool bakeNoise(FluidModifierData *fmd, int framenr)
bool writeNoise(FluidModifierData *fmd, int framenr)
float getSndParticlePositionXAt(int i)
Definition MANTA_main.h:582
bool initFireHigh(struct FluidModifierData *fmd=nullptr)
bool hasNoise(FluidModifierData *fmd, int framenr)
float * getColorGIn()
Definition MANTA_main.h:294
bool exportLiquidScript(struct FluidModifierData *fmd)
bool readData(FluidModifierData *fmd, int framenr, bool resumable)
int getNumFlipParticles()
Definition MANTA_main.h:694
bool initOutflow(FluidModifierData *fmd=nullptr)
float getNormalZAt(int i)
Definition MANTA_main.h:468
size_t getTotalCells()
Definition MANTA_main.h:104
float * getTextureU()
Definition MANTA_main.h:343
float getSndParticleVelocityYAt(int i)
Definition MANTA_main.h:647
float * getHeatIn()
Definition MANTA_main.h:286
float * getObVelocityZ()
Definition MANTA_main.h:202
bool writeConfiguration(FluidModifierData *fmd, int framenr)
float * getFlameHigh()
Definition MANTA_main.h:319
float * getForceY()
Definition MANTA_main.h:234
int getParticleUpres()
Definition MANTA_main.h:168
float * getColorR()
Definition MANTA_main.h:266
float getSndParticleVelocityXAt(int i)
Definition MANTA_main.h:638
int getSndParticleFlagAt(int i)
Definition MANTA_main.h:544
float * getTextureV2()
Definition MANTA_main.h:359
float * getPhiStaticIn()
Definition MANTA_main.h:372
float * getObVelocityX()
Definition MANTA_main.h:194
bool initFire(struct FluidModifierData *fmd=nullptr)
float * getObVelocityY()
Definition MANTA_main.h:198
float * getVelocityZ()
Definition MANTA_main.h:190
float * getColorRHigh()
Definition MANTA_main.h:331
bool writeData(FluidModifierData *fmd, int framenr)
float getVertVelXAt(int i)
Definition MANTA_main.h:506
float getSndParticlePositionZAt(int i)
Definition MANTA_main.h:600
float * getInVelocityY()
Definition MANTA_main.h:222
float getVertVelYAt(int i)
Definition MANTA_main.h:515
float getFlipParticleVelocityYAt(int i)
Definition MANTA_main.h:619
float * getTextureU2()
Definition MANTA_main.h:355
bool needsRealloc(FluidModifierData *fmd)
float * getFlame()
Definition MANTA_main.h:254
int getResZHigh()
Definition MANTA_main.h:160
bool readParticles(FluidModifierData *fmd, int framenr, bool resumable)
float * getReact()
Definition MANTA_main.h:262
bool readMesh(FluidModifierData *fmd, int framenr)
bool readGuiding(FluidModifierData *fmd, int framenr, bool sourceDomain)
float getSndParticlePositionYAt(int i)
Definition MANTA_main.h:591
bool bakeMesh(FluidModifierData *fmd, int framenr)
float * getPhiIn()
Definition MANTA_main.h:368
int getNumSndParticles()
Definition MANTA_main.h:698
float * getVelocityX()
Definition MANTA_main.h:182
float getVertexXAt(int i)
Definition MANTA_main.h:422
float * getShadow()
Definition MANTA_main.h:278
float * getColorBIn()
Definition MANTA_main.h:298
int getMeshResY()
Definition MANTA_main.h:144
float * getDensityHigh()
Definition MANTA_main.h:315
float * getForceZ()
Definition MANTA_main.h:238
bool hasMesh(FluidModifierData *fmd, int framenr)
float * getDensityIn()
Definition MANTA_main.h:282
int getTriangleZAt(int i)
Definition MANTA_main.h:496
int getMeshResZ()
Definition MANTA_main.h:148
float getNormalXAt(int i)
Definition MANTA_main.h:450
float * getNumGuide()
Definition MANTA_main.h:250
bool initGuiding(FluidModifierData *fmd=nullptr)
int getResYHigh()
Definition MANTA_main.h:156
float * getTextureW2()
Definition MANTA_main.h:363
float * getColorRIn()
Definition MANTA_main.h:290
int getResZ()
Definition MANTA_main.h:124
float * getInVelocityZ()
Definition MANTA_main.h:226
bool readConfiguration(FluidModifierData *fmd, int framenr)
int getFlipParticleFlagAt(int i)
Definition MANTA_main.h:535
float getFlipParticleVelocityXAt(int i)
Definition MANTA_main.h:610
int getParticleResX()
Definition MANTA_main.h:128
bool bakeGuiding(FluidModifierData *fmd, int framenr)
size_t getTotalCellsHigh()
Definition MANTA_main.h:108
float getSndParticleVelocityZAt(int i)
Definition MANTA_main.h:656
int getResX()
Definition MANTA_main.h:116
float getFlipParticleVelocityZAt(int i)
Definition MANTA_main.h:628
bool hasParticles(FluidModifierData *fmd, int framenr)
float * getTextureV()
Definition MANTA_main.h:347
bool usingNoise()
Definition MANTA_main.h:112
float * getColorGHigh()
Definition MANTA_main.h:335
bool initColorsHigh(struct FluidModifierData *fmd=nullptr)
bool initObstacle(FluidModifierData *fmd=nullptr)
float * getPhiOutStaticIn()
Definition MANTA_main.h:392
float getTimestep()
bool initColors(struct FluidModifierData *fmd=nullptr)
bool readNoise(FluidModifierData *fmd, int framenr, bool resumable)
float * getInVelocityX()
Definition MANTA_main.h:218
float getVertVelZAt(int i)
Definition MANTA_main.h:524
int getTriangleYAt(int i)
Definition MANTA_main.h:487
float * getPressure()
Definition MANTA_main.h:400
float * getReactIn()
Definition MANTA_main.h:306
float * getGuideVelocityY()
Definition MANTA_main.h:210
bool hasGuiding(FluidModifierData *fmd, int framenr, bool sourceDomain)
float * getGuideVelocityZ()
Definition MANTA_main.h:214
bool initHeat(struct FluidModifierData *fmd=nullptr)
int getParticleResY()
Definition MANTA_main.h:132
bool bakeParticles(FluidModifierData *fmd, int framenr)
float * getTextureW()
Definition MANTA_main.h:351
bool bakeData(FluidModifierData *fmd, int framenr)
float getNormalYAt(int i)
Definition MANTA_main.h:459
bool initInVelocity(FluidModifierData *fmd=nullptr)
float * getHeat()
Definition MANTA_main.h:178
float * getFuelHigh()
Definition MANTA_main.h:323
float * getColorB()
Definition MANTA_main.h:274
float * getReactHigh()
Definition MANTA_main.h:327
float * getFuel()
Definition MANTA_main.h:258
int getNumNormals()
Definition MANTA_main.h:413
int getNumTriangles()
Definition MANTA_main.h:417
float * getEmissionIn()
Definition MANTA_main.h:310
void adaptTimestep()
int getResY()
Definition MANTA_main.h:120
float * getPhiGuideIn()
Definition MANTA_main.h:384
float * getColorBHigh()
Definition MANTA_main.h:339
float * getPhiObsStaticIn()
Definition MANTA_main.h:380
int getFrame()
void updatePointers(FluidModifierData *fmd, bool flush=false)
int getMeshUpres()
Definition MANTA_main.h:164
float * getForceX()
Definition MANTA_main.h:230
float * getGuideVelocityX()
Definition MANTA_main.h:206
float getFlipParticlePositionYAt(int i)
Definition MANTA_main.h:563
bool hasData(FluidModifierData *fmd, int framenr)
int getResXHigh()
Definition MANTA_main.h:152
float getVertexYAt(int i)
Definition MANTA_main.h:431
bool updateVariables(FluidModifierData *fmd)
float getFlipParticlePositionZAt(int i)
Definition MANTA_main.h:572
float * getPhiObsIn()
Definition MANTA_main.h:376
bool initLiquidSndParts(FluidModifierData *fmd=nullptr)
float * getNumObstacle()
Definition MANTA_main.h:246