GPU-backed surface fluid simulator (falls back to the CPU solver). 更多...
#include <Fluids.h>
Public 成员函数 | |
| FluidSimulator (int maxParticles, const FluidParams ¶ms, bool preferGpu) | |
| Fluid simulator. | |
| ~FluidSimulator () | |
| Fluid simulator. | |
| FluidSimulator (const FluidSimulator &)=delete | |
| FluidSimulator & | operator= (const FluidSimulator &)=delete |
| void | setSdf (const MeshSdf &sdf) |
| Replace the collision surface (re-uploads the SDF on the GPU path). | |
| const MeshSdf & | sdf () const |
| Sdf. | |
| int | spawnDrop (const glm::vec3 ¢er, float radius, int count) |
| Spawn a drop of particles near the surface. | |
| void | step (float dt) |
| Advance the simulation by dt seconds. | |
| eve::Result< void > | step (const eve::SimulationStep &step, const eve::physics::SimulationSettings &settings) override |
| Advances the production CPU/GPGPU solver with the shared contract. | |
| eve::physics::SimulationObservation | observation () const noexcept override |
| Returns completed tick/time observables. | |
| eve::physics::SimulationBackendKind | kind () const noexcept override |
| Reports the actual CPU or production GPU path selected. | |
| eve::physics::SimulationDeterminism | determinism () const noexcept override |
| CPU/GPGPU particle results are equivalent within a numeric tolerance. | |
| eve::Result< void > | restoreObservation (const eve::physics::SimulationObservation &observation) override |
| Restores tick/progress metadata after an owner-level restore. | |
| bool | usedBackendFallback () const noexcept |
| Whether optional accelerator selection fell back to CPU. | |
| eve::Status | backendSelectionStatus () const |
| Selection status, including observable provider/degraded-path diagnostics. | |
| int | getParticleCount () const |
| Returns the particle count. | |
| int | getMaxParticles () const |
| Returns the max particles. | |
| bool | usingGpu () const |
| Using gpu. | |
| void | readPositions (std::vector< glm::vec3 > &out) const |
| Copy live particle positions out (CPU mirror; GPU path downloads). | |
| void | readDensities (std::vector< float > &out) const |
| Copy per-particle densities out (CPU mirror). | |
| FluidParams & | params () |
| Params. | |
| const FluidParams & | params () const |
| Params. | |
| void | setGravity (float x, float y, float z) |
| Set the gravity vector. | |
| void | setViscosity (float viscosity) |
| Set XSPH viscosity strength. | |
| void | setCohesion (float cohesion) |
| Set Akinci-style fluid-fluid cohesion strength. | |
| void | setAdhesion (float adhesion) |
| Set fluid-surface adhesion strength. | |
| void | setPbfIterations (int passes) |
| Set PBF density-constraint passes per substep. | |
| void | setDamping (float damping) |
| Set linear air damping. | |
| void | setParticleRadius (float radius) |
| Set particle radius (support radius is unchanged). | |
| void | setSupportRadius (float h) |
| Set SPH support radius. | |
| void | setSdfSphere (float cx, float cy, float cz, float radius, int res) |
| Convenience: bake a sphere SDF around the origin. | |
Public 成员函数 继承自 eve::physics::ISimulationBackend | |
| virtual | ~ISimulationBackend ()=default |
| Releases the backend; borrowed domain state is not destroyed. | |
详细描述
构造及析构函数说明
◆ FluidSimulator() [1/2]
| eve::fluids::FluidSimulator::FluidSimulator | ( | int | maxParticles, |
| const FluidParams & | params, | ||
| bool | preferGpu | ||
| ) |
Fluid simulator.
- 参数
-
maxParticles particle buffer capacity. params initial tuning parameters. preferGpu use the gpgpu compute path when a device is available.
在文件 Fluids.cpp 第 63 行定义.
◆ ~FluidSimulator()
| eve::fluids::FluidSimulator::~FluidSimulator | ( | ) |
Fluid simulator.
在文件 Fluids.cpp 第 66 行定义.
◆ FluidSimulator() [2/2]
|
delete |
成员函数说明
◆ backendSelectionStatus()
|
inline |
◆ determinism()
|
inlineoverridevirtualnoexcept |
CPU/GPGPU particle results are equivalent within a numeric tolerance.
◆ getMaxParticles()
|
inline |
◆ getParticleCount()
|
inline |
◆ kind()
|
inlineoverridevirtualnoexcept |
Reports the actual CPU or production GPU path selected.
实现了 eve::physics::ISimulationBackend.
引用了 eve::physics::Cpu , 以及 eve::physics::Gpu.
◆ observation()
|
inlineoverridevirtualnoexcept |
Returns completed tick/time observables.
实现了 eve::physics::ISimulationBackend.
被这些函数引用 restoreObservation().
◆ operator=()
|
delete |
◆ params() [1/2]
|
inline |
Params.
- 返回
- mutable tuning parameters.
◆ params() [2/2]
|
inline |
◆ readDensities()
| void eve::fluids::FluidSimulator::readDensities | ( | std::vector< float > & | out | ) | const |
Copy per-particle densities out (CPU mirror).
在文件 Fluids.cpp 第 236 行定义.
引用了 eve::fluids::FluidSimulation::densities() , 以及 eve::fluids::FluidSimulation::particleCount().
◆ readPositions()
| void eve::fluids::FluidSimulator::readPositions | ( | std::vector< glm::vec3 > & | out | ) | const |
Copy live particle positions out (CPU mirror; GPU path downloads).
在文件 Fluids.cpp 第 230 行定义.
引用了 eve::fluids::FluidSimulation::particleCount() , 以及 eve::fluids::FluidSimulation::particles().
◆ restoreObservation()
|
overridevirtual |
Restores tick/progress metadata after an owner-level restore.
重载 eve::physics::ISimulationBackend .
在文件 Fluids.cpp 第 222 行定义.
引用了 eve::Applied, observation(), eve::Status::success(), eve::Result< T >::success() , 以及 valid.
◆ sdf()
|
inline |
◆ setAdhesion()
| void eve::fluids::FluidSimulator::setAdhesion | ( | float | adhesion | ) |
Set fluid-surface adhesion strength.
在文件 Fluids.cpp 第 246 行定义.
引用了 eve::fluids::FluidParams::adhesion , 以及 eve::fluids::FluidSimulation::params().
◆ setCohesion()
| void eve::fluids::FluidSimulator::setCohesion | ( | float | cohesion | ) |
Set Akinci-style fluid-fluid cohesion strength.
在文件 Fluids.cpp 第 245 行定义.
引用了 eve::fluids::FluidParams::cohesion , 以及 eve::fluids::FluidSimulation::params().
◆ setDamping()
| void eve::fluids::FluidSimulator::setDamping | ( | float | damping | ) |
Set linear air damping.
在文件 Fluids.cpp 第 248 行定义.
引用了 eve::fluids::FluidParams::damping , 以及 eve::fluids::FluidSimulation::params().
◆ setGravity()
| void eve::fluids::FluidSimulator::setGravity | ( | float | x, |
| float | y, | ||
| float | z | ||
| ) |
Set the gravity vector.
在文件 Fluids.cpp 第 242 行定义.
引用了 eve::fluids::FluidParams::gravity, eve::fluids::FluidSimulation::params(), x, y , 以及 z.
◆ setParticleRadius()
| void eve::fluids::FluidSimulator::setParticleRadius | ( | float | radius | ) |
Set particle radius (support radius is unchanged).
在文件 Fluids.cpp 第 249 行定义.
引用了 eve::fluids::FluidSimulation::params(), eve::fluids::FluidParams::particleRadius , 以及 radius.
◆ setPbfIterations()
| void eve::fluids::FluidSimulator::setPbfIterations | ( | int | passes | ) |
Set PBF density-constraint passes per substep.
在文件 Fluids.cpp 第 247 行定义.
引用了 eve::fluids::FluidSimulation::params() , 以及 eve::fluids::FluidParams::pbfIterations.
◆ setSdf()
| void eve::fluids::FluidSimulator::setSdf | ( | const MeshSdf & | sdf | ) |
Replace the collision surface (re-uploads the SDF on the GPU path).
在文件 Fluids.cpp 第 88 行定义.
引用了 eve::fluids::SimGrid::make(), eve::fluids::FluidSimulation::params(), sdf(), eve::fluids::FluidSimulation::setSdf() , 以及 eve::fluids::FluidParams::supportRadius.
被这些函数引用 setSdfSphere().
◆ setSdfSphere()
| void eve::fluids::FluidSimulator::setSdfSphere | ( | float | cx, |
| float | cy, | ||
| float | cz, | ||
| float | radius, | ||
| int | res | ||
| ) |
Convenience: bake a sphere SDF around the origin.
- 参数
-
cx sphere center X. cy sphere center Y. cz sphere center Z. radius sphere radius. res voxel resolution per axis.
在文件 Fluids.cpp 第 255 行定义.
引用了 cx, cy, eve::fluids::MeshSdf::makeSphere(), radius , 以及 setSdf().
◆ setSupportRadius()
| void eve::fluids::FluidSimulator::setSupportRadius | ( | float | h | ) |
Set SPH support radius.
在文件 Fluids.cpp 第 250 行定义.
引用了 h, eve::fluids::SimGrid::make(), eve::fluids::FluidSimulation::params(), eve::fluids::FluidSimulation::sdf() , 以及 eve::fluids::FluidParams::supportRadius.
◆ setViscosity()
| void eve::fluids::FluidSimulator::setViscosity | ( | float | viscosity | ) |
Set XSPH viscosity strength.
在文件 Fluids.cpp 第 244 行定义.
引用了 eve::fluids::FluidSimulation::params() , 以及 eve::fluids::FluidParams::viscosity.
◆ spawnDrop()
| int eve::fluids::FluidSimulator::spawnDrop | ( | const glm::vec3 & | center, |
| float | radius, | ||
| int | count | ||
| ) |
Spawn a drop of particles near the surface.
- 参数
-
center drop center. radius drop radius. count particle count.
- 返回
- particles actually added.
在文件 Fluids.cpp 第 122 行定义.
引用了 center, count, radius , 以及 eve::fluids::FluidSimulation::spawnDrop().
◆ step() [1/2]
|
overridevirtual |
Advances the production CPU/GPGPU solver with the shared contract.
实现了 eve::physics::ISimulationBackend.
在文件 Fluids.cpp 第 184 行定义.
引用了 eve::Applied, eve::SimulationStep::delta, error, eve::Diagnostic::error(), eve::Failed, eve::Result< T >::failure(), eve::Duration::seconds(), settings, eve::Status::success(), eve::Result< T >::success(), eve::Unsupported, valid , 以及 eve::Diagnostic::warning().
◆ step() [2/2]
| void eve::fluids::FluidSimulator::step | ( | float | dt | ) |
Advance the simulation by dt seconds.
在文件 Fluids.cpp 第 126 行定义.
引用了 eve::fluids::FluidParams::iterations , 以及 eve::fluids::FluidSimulation::params().
◆ usedBackendFallback()
|
inlinenoexcept |
◆ usingGpu()
|
inline |
该类的文档由以下文件生成:
- src/modules/fluids/Fluids.h
- src/modules/fluids/Fluids.cpp
Public 成员函数 继承自