diff --git a/projects/fire_works/src/main.cpp b/projects/fire_works/src/main.cpp
index 84d947e9a63cb112250f25ff9160b582e82213de..acc2d1472aafe0339652cd5d1e136d7643ddc42a 100644
--- a/projects/fire_works/src/main.cpp
+++ b/projects/fire_works/src/main.cpp
@@ -684,6 +684,10 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, eventBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, smokeBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, smokeIndexBuffer.getHandle());
+		
 		uint32_t smokeDispatchCount[3];
 		smokeDispatchCount[0] = std::ceil(smokeBuffer.getCount() / 256.f);
 		smokeDispatchCount[1] = 1;
@@ -699,6 +703,8 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, particleBuffer.getHandle());
+		
 		core.recordBeginDebugLabel(cmdStream, "Particle motion", { 0.0f, 0.0f, 1.0f, 1.0f });
 		core.recordComputeDispatchToCmdStream(
 			cmdStream,
@@ -709,6 +715,8 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
+		
 		uint32_t trailDispatchCount[3];
 		trailDispatchCount[0] = std::ceil(trailBuffer.getCount() / 256.f);
 		trailDispatchCount[1] = 1;
@@ -727,6 +735,9 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, pointBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
+		
 		cameraManager.update(time_values[1]);
 		
 		const auto& camera = cameraManager.getActiveCamera();