diff --git a/projects/wobble_bobble/shaders/grid.vert b/projects/wobble_bobble/shaders/grid.vert
index 44e54c6c4151e6697ef6f71fcb185a388940f284..61f9f9b764b61927596f499f7f766d377efb40e3 100644
--- a/projects/wobble_bobble/shaders/grid.vert
+++ b/projects/wobble_bobble/shaders/grid.vert
@@ -1,6 +1,7 @@
 #version 450
 
-layout(set=0, binding=0, rgba32f) readonly uniform image3D gridImage;
+layout(set=0, binding=0) uniform texture3D gridImage;
+layout(set=0, binding=1) uniform sampler gridSampler;
 
 layout(location = 0) in vec2 vertexPos;
 
@@ -16,7 +17,7 @@ ivec3 actual_mod(ivec3 x, ivec3 y) {
 }
 
 void main()	{
-    ivec3 gridResolution = imageSize(gridImage);
+    ivec3 gridResolution = textureSize(sampler3D(gridImage, gridSampler), 0);
 
     ivec3 gridID = ivec3(
         gl_InstanceIndex,
@@ -29,7 +30,7 @@ void main()	{
     vec3 position = (vec3(gridID) + vec3(0.5f)) / gridResolution;
     float size = 1.0f / length(vec3(gridResolution));
 
-    vec4 gridData = imageLoad(gridImage, gridID);
+    vec4 gridData = texture(sampler3D(gridImage, gridSampler), position);
 
     float mass = gridData.w;
 
diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp
index 575fc4a36fcbbe23c70338aeb5fe009ca3497bcc..3327893333788cfd032ca6a708d9b5a2f45f48cc 100644
--- a/projects/wobble_bobble/src/main.cpp
+++ b/projects/wobble_bobble/src/main.cpp
@@ -330,7 +330,8 @@ int main(int argc, const char **argv) {
 	
 	{
 		vkcv::DescriptorWrites writes;
-		writes.storageImageWrites.push_back(vkcv::StorageImageDescriptorWrite(0, tmpGrid.getHandle()));
+		writes.sampledImageWrites.push_back(vkcv::SampledImageDescriptorWrite(0, tmpGrid.getHandle()));
+		writes.samplerWrites.push_back(vkcv::SamplerDescriptorWrite(1, gridSampler));
 		core.writeDescriptorSet(gfxSetGrid, writes);
 	}
 	
@@ -375,7 +376,6 @@ int main(int argc, const char **argv) {
 	gfxPipelineConfigParticles.m_VertexLayout = vertexLayoutParticles;
 	gfxPipelineConfigParticles.m_DescriptorLayouts = { gfxSetLayoutParticles };
 	gfxPipelineConfigParticles.m_UseDynamicViewport = true;
-	gfxPipelineConfigParticles.m_blendMode = vkcv::BlendMode::Additive;
 	
 	vkcv::GraphicsPipelineHandle gfxPipelineGrid = core.createGraphicsPipeline(gfxPipelineConfigGrid);
 	vkcv::GraphicsPipelineHandle gfxPipelineParticles = core.createGraphicsPipeline(gfxPipelineConfigParticles);
@@ -570,7 +570,6 @@ int main(int argc, const char **argv) {
 		
 		if (renderGrid) {
 			core.recordBeginDebugLabel(cmdStream, "RENDER GRID", { 0.13f, 0.20f, 0.22f, 1.0f });
-			core.prepareImageForStorage(cmdStream, tmpGrid.getHandle());
 			
 			core.recordDrawcallsToCmdStream(
 					cmdStream,