Skip to content
Snippets Groups Projects
Verified Commit 65d3b726 authored by Josch Morgenstern's avatar Josch Morgenstern
Browse files

[#111] add dynamic gravity vector

parent 3119489a
No related branches found
No related tags found
1 merge request!95Resolve "Wassersimulation mit Interaktion"
......@@ -4,8 +4,6 @@
const float PI = 3.1415926535897932384626433832795;
#include "particle_params.inc"
layout(local_size_x = 256) in;
struct Particle
......@@ -30,7 +28,15 @@ layout(std430, binding = 0) writeonly buffer buffer_outParticle
};
layout( push_constant ) uniform constants{
float deltaTime;
float h;
float mass;
float gasConstant;
float offset;
float gravity;
float viscosity;
float ABSORBTION;
float dt;
vec3 gravityDir;
float particleCount;
};
......@@ -56,6 +62,7 @@ vec3 viscosityForce = vec3(0, 0, 0);
vec3 externalForce = vec3(0, 0, 0);
void main() {
uint id = gl_GlobalInvocationID.x;
if(id >= int(particleCount))
......@@ -63,7 +70,7 @@ void main() {
return;
}
externalForce = vec3(0, inParticle[id].density * gravity, 0);
externalForce = inParticle[id].density * gravity * vec3(-gravityDir.x,gravityDir.y,gravityDir.z);
for(uint i = 0; i < int(particleCount); i++)
{
......@@ -73,8 +80,8 @@ void main() {
float dist = length(dir);
if(dist != 0)
{
pressureForce += mass * -(inParticle[id].pressure + inParticle[i].pressure)/(2.f * inParticle[i].density) * grad_spiky(dist) * normalize(dir);
viscosityForce += mass * (inParticle[i].velocity - inParticle[id].velocity)/inParticle[i].density * laplacian(dist);
pressureForce += mass * -(inParticle[id].pressure + inParticle[i].pressure)/(2.f * inParticle[i].density) * grad_spiky(dist) * normalize(dir);
viscosityForce += mass * (inParticle[i].velocity - inParticle[id].velocity)/inParticle[i].density * laplacian(dist);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment