diff --git a/projects/sph/shaders/force.comp b/projects/sph/shaders/force.comp
index c8d88f95d13e5c08ea94e3f3b3744d2c55fa4185..ea9b378b48a23fd0208ab18d884dbccda5ab21f4 100644
--- a/projects/sph/shaders/force.comp
+++ b/projects/sph/shaders/force.comp
@@ -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);
             }
         }
     }