PeriDyno
1.0.0
Loading...
Searching...
No Matches
D:
Peridyno
peridyno
src
Dynamics
Vulkan
ParticleSystem
Module
ParticleIntegrator.cpp
Go to the documentation of this file.
1
#include "
ParticleIntegrator.h
"
2
3
namespace
dyno
4
{
5
IMPLEMENT_CLASS
(
ParticleIntegrator
)
6
7
8
struct
FluidSolverParams
9
{
10
float
gravity
;
11
float
dt
;
12
};
13
14
ParticleIntegrator::ParticleIntegrator
()
15
:
Module
()
16
{
17
this->addKernel(
18
"ParticleIntegrator"
,
19
std::make_shared<VkProgram>(
20
BUFFER
(
Vec3f
),
// inout: position
21
BUFFER
(
Vec3f
),
// inout: velocity
22
UNIFORM
(
FluidSolverParams
),
// in: array info
23
CONSTANT
(
uint
)
// in: particle number
24
)
25
);
26
kernel(
"ParticleIntegrator"
)->load(getAssetPath() +
"shaders/glsl/particlesystem/ParticleIntegrator.comp.spv"
);
27
}
28
29
void
ParticleIntegrator::updateImpl
()
30
{
31
float
dt = this->inTimeStep()->getValue();
32
33
auto
& pos = this->inPosition()->getData();
34
auto
& vel = this->inVelocity()->getData();
35
36
uint
num = pos.size();
37
38
FluidSolverParams
params;
39
params.
dt
= dt;
40
params.
gravity
= -9.8f;
41
42
VkUniform<FluidSolverParams>
uniform;
43
uniform.
setValue
(params);
44
45
VkConstant<uint>
constNum(pos.size());
46
47
kernel(
"ParticleIntegrator"
)->flush(
48
vkDispatchSize
(num, 64),
49
pos.handle(),
50
vel.handle(),
51
&uniform,
52
&constNum);
53
}
54
}
IMPLEMENT_CLASS
#define IMPLEMENT_CLASS(name)
Definition
Object.h:79
UNIFORM
#define UNIFORM(T)
Definition
VkProgram.h:99
BUFFER
#define BUFFER(T)
Definition
VkProgram.h:96
CONSTANT
#define CONSTANT(T)
Definition
VkProgram.h:100
ParticleIntegrator.h
dyno::Module::Module
Module(std::string name="default")
Definition
Module.cpp:7
dyno::ParticleIntegrator
Definition
ParticleIntegrator.h:9
dyno::ParticleIntegrator::ParticleIntegrator
ParticleIntegrator()
Definition
ParticleIntegrator.cpp:14
dyno::ParticleIntegrator::updateImpl
void updateImpl() override
Definition
ParticleIntegrator.cpp:29
dyno::VkConstant
Definition
VkConstant.h:8
dyno::VkUniform
Definition
VkUniform.h:9
dyno::VkUniform::setValue
void setValue(T val)
Definition
VkUniform.inl:32
dyno
This is an implementation of AdditiveCCD based on peridyno.
Definition
Array.h:25
dyno::vkDispatchSize
static dim3 vkDispatchSize(uint totalSize, uint blockSize)
Definition
VkProgram.h:34
dyno::Vec3f
Vector< float, 3 > Vec3f
Definition
Vector3D.h:93
dyno::uint
unsigned int uint
Definition
VkProgram.h:14
dyno::FluidSolverParams
Definition
ParticleIntegrator.cpp:9
dyno::FluidSolverParams::dt
float dt
Definition
ParticleIntegrator.cpp:11
dyno::FluidSolverParams::gravity
float gravity
Definition
ParticleIntegrator.cpp:10
Generated by
1.13.2