diff --git a/projects/sph/shaders/force.comp b/projects/sph/shaders/force.comp index 865d6be5f6270f1418ed45a2a2c733e4076f1975..54ce5d36df28017ace196cf8944e09acbf8e370f 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;