From d721f9be6952f7f87b856e91fae5ae8a1b637060 Mon Sep 17 00:00:00 2001 From: Josh Morgenstern <josh@morgenstern.dev> Date: Tue, 14 Sep 2021 13:05:05 +0200 Subject: [PATCH] [#111] prevent force calculation for particle with itself --- projects/sph/shaders/force.comp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/projects/sph/shaders/force.comp b/projects/sph/shaders/force.comp index 865d6be5..54ce5d36 100644 --- a/projects/sph/shaders/force.comp +++ b/projects/sph/shaders/force.comp @@ -62,10 +62,13 @@ void main() { for(uint i = 0; i < inParticle.length(); i++) { - vec3 dir = inParticle[id].position - inParticle[i].position; - float dist = length(dir); - pressureForce += mass * -(inParticle[id].pressure + inParticle[i].pressure)/(2.f * inParticle[i].density) * spiky(dist) * normalize(dir); - viscosityForce += mass * (inParticle[id].velocity - inParticle[i].velocity)/inParticle[i].density * laplacian(dist); + if (id != i) + { + vec3 dir = inParticle[id].position - inParticle[i].position; + float dist = length(dir); + pressureForce += mass * -(inParticle[id].pressure + inParticle[i].pressure)/(2.f * inParticle[i].density) * spiky(dist) * normalize(dir); + viscosityForce += mass * (inParticle[id].velocity - inParticle[i].velocity)/inParticle[i].density * laplacian(dist); + } } viscosityForce *= viscosity; -- GitLab