--- /dev/null
+#pragma MSP stage(compute)
+layout(local_size_x=8, local_size_y=8) in;
+
+uniform Params
+{
+ float delta_time;
+ float velocity_damping;
+ float gravity;
+ float max_flow_fraction;
+ float residual_depth;
+ ivec2 drop_pos;
+ float drop_time;
+};
+
+layout(push_constant) uniform Time
+{
+ float time;
+};
+
+uniform sampler2D surface_in;
+uniform sampler2D velocity_in;
+uniform sampler2D clamping_in;
+uniform sampler2D bottom_in;
+layout(r32f) uniform image2D surface_out;
+layout(rg32f) uniform image2D velocity_out;
+layout(r32f) uniform image2D clamping_out;
+
+float get_depth(ivec2 coord)
+{
+ return texelFetch(surface_in, coord, 0).x-texelFetch(bottom_in, coord, 0).x;
+}