Index: sdl-game.cpp
===================================================================
--- sdl-game.cpp	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ sdl-game.cpp	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -96,6 +96,6 @@
                                                       deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxStorageBufferRange,
-                                                          deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxUniformBufferRange,
+                                                          deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    initImGuiOverlay();
@@ -123,5 +123,5 @@
    createBufferSet(objects_modelPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_modelPipeline);
@@ -131,5 +131,5 @@
    modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_modelPipeline.infoSet);
-   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT, &objectBuffers_modelPipeline.infoSet);
    modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
@@ -482,9 +482,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_modelPipeline.data(), uniforms_modelPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_modelPipeline.data(),
+                                       uniforms_modelPipeline.mapped(imageIndex),
                                        uniformBuffers_modelPipeline.memory[imageIndex],
                                        uniforms_modelPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_modelPipeline.data(), objects_modelPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_modelPipeline.data(),
+                                       objects_modelPipeline.mapped(imageIndex),
                                        objectBuffers_modelPipeline.memory[imageIndex],
                                        objects_modelPipeline.memorySize(), true);
@@ -1213,5 +1215,5 @@
    // TODO: Find a more elegant, per-screen solution for this
    if (currentRenderScreenFn == &VulkanGame::renderGameScreen) {
-      modelPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
+      modelPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
 
 
@@ -1301,5 +1303,5 @@
    createBufferSet(objects_modelPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_modelPipeline);
Index: shaders/asteroid.vert
===================================================================
--- shaders/asteroid.vert	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/asteroid.vert	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -8,12 +8,12 @@
 };
 
-layout (binding = 0) uniform UniformBufferObject {
+layout (binding = 0) uniform camera_block {
    mat4 view;
    mat4 proj;
+} camera;
+
+layout(binding = 1) uniform ubo_block {
+   Object objects[1024];
 } ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
 
 layout(location = 0) in vec3 vertex_position;
@@ -35,8 +35,8 @@
 
 void main() {
-   position_eye = vec3(ubo.view * sbo.objects[obj_index].model * vec4(vertex_position, 1.0));
-   normal_eye = normalize(vec3(ubo.view * sbo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
+   position_eye = vec3(camera.view * ubo.objects[obj_index].model * vec4(vertex_position, 1.0));
+   normal_eye = normalize(vec3(camera.view * ubo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
 
-   float hp_percent = sbo.objects[obj_index].hp / 10.0;
+   float hp_percent = ubo.objects[obj_index].hp / 10.0;
    vec3 damage_color = vec3(1.0, 0.0, 0.0);
    color = (vertex_color * hp_percent) + (damage_color * (1.0 - hp_percent));
@@ -44,11 +44,11 @@
    fragTexCoord = inTexCoord;
 
-   light_position_eye = vec3(ubo.view * vec4(light_position_world, 1.0));
-   light2_position_eye = vec3(ubo.view * vec4(light2_position_world, 1.0));
+   light_position_eye = vec3(camera.view * vec4(light_position_world, 1.0));
+   light2_position_eye = vec3(camera.view * vec4(light2_position_world, 1.0));
 
-   if (sbo.objects[obj_index].deleted) {
+   if (ubo.objects[obj_index].deleted) {
       gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
    } else {
-      gl_Position = ubo.proj * vec4(position_eye, 1.0);
+      gl_Position = camera.proj * vec4(position_eye, 1.0);
    }
 }
Index: shaders/explosion.vert
===================================================================
--- shaders/explosion.vert	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/explosion.vert	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -9,13 +9,13 @@
 };
 
-layout (binding = 0) uniform UniformBufferObject {
+layout (binding = 0) uniform camera_block {
    mat4 view;
    mat4 proj;
    float cur_time;
+} camera;
+
+layout(binding = 1) uniform ubo_block {
+   Object objects[1024];
 } ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
 
 layout(location = 0) in vec3 particle_start_velocity;
@@ -26,10 +26,10 @@
 
 void main() {
-   mat4 model = sbo.objects[obj_index].model;
-   float explosion_start_time = sbo.objects[obj_index].explosion_start_time;
-   float explosion_duration = sbo.objects[obj_index].explosion_duration;
-   bool deleted = sbo.objects[obj_index].deleted;
+   mat4 model = ubo.objects[obj_index].model;
+   float explosion_start_time = ubo.objects[obj_index].explosion_start_time;
+   float explosion_duration = ubo.objects[obj_index].explosion_duration;
+   bool deleted = ubo.objects[obj_index].deleted;
 
-   float t = ubo.cur_time - explosion_start_time - particle_start_time;
+   float t = camera.cur_time - explosion_start_time - particle_start_time;
 
    if (t < 0.0) {
@@ -56,5 +56,5 @@
       p += normalize(particle_start_velocity) * mod(t, explosion_duration) / explosion_duration * 0.3;
 
-      gl_Position = ubo.proj * ubo.view * model * vec4(p, 1.0);
+      gl_Position = camera.proj * camera.view * model * vec4(p, 1.0);
    }
    gl_PointSize = 10.0; // size in pixels
Index: shaders/laser.frag
===================================================================
--- shaders/laser.frag	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/laser.frag	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -8,7 +8,7 @@
 };
 
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
+layout(binding = 1) uniform ubo_block {
+   Object objects[1024];
+} ubo;
 
 layout(binding = 2) uniform sampler2D laser_texture;
@@ -21,5 +21,5 @@
 void main() {
    vec4 texel = texture(laser_texture, texcoords_fs);
-   vec3 laser_color = sbo.objects[obj_index_fs].color;
+   vec3 laser_color = ubo.objects[obj_index_fs].color;
 
    frag_color = vec4(texel.r * laser_color.r, texel.g * laser_color.g, texel.b * laser_color.b, texel.a);
Index: shaders/laser.vert
===================================================================
--- shaders/laser.vert	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/laser.vert	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -8,12 +8,12 @@
 };
 
-layout (binding = 0) uniform UniformBufferObject {
+layout (binding = 0) uniform camera_block {
    mat4 view;
    mat4 proj;
+} camera;
+
+layout(binding = 1) uniform ubo_block {
+   Object objects[1024];
 } ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
 
 layout(location = 0) in vec3 vertex_position;
@@ -25,13 +25,13 @@
 
 void main() {
-   vec3 position_eye = vec3(ubo.view * sbo.objects[obj_index_vs].model * vec4(vertex_position, 1.0));
+   vec3 position_eye = vec3(camera.view * ubo.objects[obj_index_vs].model * vec4(vertex_position, 1.0));
 
    texcoords_fs = texcoords_vs;
    obj_index_fs = obj_index_vs;
 
-   if (sbo.objects[obj_index_vs].deleted) {
+   if (ubo.objects[obj_index_vs].deleted) {
       gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
    } else {
-      gl_Position = ubo.proj * vec4(position_eye, 1.0);
+      gl_Position = camera.proj * vec4(position_eye, 1.0);
    }
 }
Index: shaders/model.vert
===================================================================
--- shaders/model.vert	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/model.vert	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -6,16 +6,13 @@
 };
 
-layout (binding = 0) uniform UniformBufferObject {
+layout (binding = 0) uniform camera_block {
    mat4 view;
    mat4 proj;
+} camera;
+
+// TODO: Verify that I can actually store 1024 values here. They last time I checked, I think I could only store 1016 values
+layout (binding = 1) uniform ubo_block {
+	Object objects[1024];
 } ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
-
-layout (binding = 2) uniform UboInstance {
-	mat4 model;
-} uboInstance;
 
 layout(location = 0) in vec3 inPosition;
@@ -31,9 +28,9 @@
 void main() {
    // Using 0.0 instead of 1.0 means translations won't effect the normal
-   normal_eye = normalize(vec3(ubo.view * sbo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
+   normal_eye = normalize(vec3(camera.view * ubo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
 
    fragColor = inColor;
    fragTexCoord = inTexCoord;
 
-   gl_Position = ubo.proj * ubo.view * sbo.objects[obj_index].model * vec4(inPosition, 1.0);
+   gl_Position = camera.proj * camera.view * ubo.objects[obj_index].model * vec4(inPosition, 1.0);
 }
Index: shaders/ship.vert
===================================================================
--- shaders/ship.vert	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ shaders/ship.vert	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -6,12 +6,12 @@
 };
 
-layout (binding = 0) uniform UniformBufferObject {
+layout (binding = 0) uniform camera_block {
    mat4 view;
    mat4 proj;
+} camera;
+
+layout(binding = 1) uniform ubo_block {
+   Object objects[1024];
 } ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
 
 layout(location = 0) in vec3 vertex_position;
@@ -35,8 +35,8 @@
 // Check Anton's book to see how to fix this
 void main() {
-   position_eye = vec3(ubo.view * sbo.objects[obj_index].model * vec4(vertex_position, 1.0));
+   position_eye = vec3(camera.view * ubo.objects[obj_index].model * vec4(vertex_position, 1.0));
 
    // Using 0.0 instead of 1.0 means translations won't effect the normal
-   normal_eye = normalize(vec3(ubo.view * sbo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
+   normal_eye = normalize(vec3(camera.view * ubo.objects[obj_index].model * vec4(vertex_normal, 0.0)));
 
    color = vertex_color;
@@ -44,7 +44,7 @@
    fragTexCoord = inTexCoord;
 
-   light_position_eye = vec3(ubo.view * vec4(light_position_world, 1.0));
-   light2_position_eye = vec3(ubo.view * vec4(light2_position_world, 1.0));
+   light_position_eye = vec3(camera.view * vec4(light_position_world, 1.0));
+   light2_position_eye = vec3(camera.view * vec4(light2_position_world, 1.0));
 
-   gl_Position = ubo.proj * vec4(position_eye, 1.0);
+   gl_Position = camera.proj * vec4(position_eye, 1.0);
 }
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision b01b50c40d6cfb28d8e12f40f6f76c71dce70a0e)
+++ vulkan-game.cpp	(revision 67527a5eabbaf5ed7d062a8bd98c10598aa42fe6)
@@ -113,30 +113,30 @@
                                                       deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxStorageBufferRange,
-                                                          deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_modelPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxUniformBufferRange,
+                                                          deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    uniforms_shipPipeline = VulkanBuffer<UBO_VP_mats>(1, deviceProperties.limits.maxUniformBufferRange,
                                                      deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_shipPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxStorageBufferRange,
-                                                         deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_shipPipeline = VulkanBuffer<SSBO_ModelObject>(10, deviceProperties.limits.maxUniformBufferRange,
+                                                         deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    uniforms_asteroidPipeline = VulkanBuffer<UBO_VP_mats>(1, deviceProperties.limits.maxUniformBufferRange,
                                                          deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_asteroidPipeline = VulkanBuffer<SSBO_Asteroid>(10, deviceProperties.limits.maxStorageBufferRange,
-                                                          deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_asteroidPipeline = VulkanBuffer<SSBO_Asteroid>(10, deviceProperties.limits.maxUniformBufferRange,
+                                                          deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    uniforms_laserPipeline = VulkanBuffer<UBO_VP_mats>(1, deviceProperties.limits.maxUniformBufferRange,
                                                       deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_laserPipeline = VulkanBuffer<SSBO_Laser>(2, deviceProperties.limits.maxStorageBufferRange,
-                                                    deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_laserPipeline = VulkanBuffer<SSBO_Laser>(2, deviceProperties.limits.maxUniformBufferRange,
+                                                    deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    uniforms_explosionPipeline = VulkanBuffer<UBO_Explosion>(1, deviceProperties.limits.maxUniformBufferRange,
                                                             deviceProperties.limits.minUniformBufferOffsetAlignment);
 
-   objects_explosionPipeline = VulkanBuffer<SSBO_Explosion>(2, deviceProperties.limits.maxStorageBufferRange,
-                                                            deviceProperties.limits.minStorageBufferOffsetAlignment);
+   objects_explosionPipeline = VulkanBuffer<SSBO_Explosion>(2, deviceProperties.limits.maxUniformBufferRange,
+                                                            deviceProperties.limits.minUniformBufferOffsetAlignment);
 
    initImGuiOverlay();
@@ -166,5 +166,5 @@
    createBufferSet(objects_modelPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_modelPipeline);
@@ -174,5 +174,5 @@
    modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_modelPipeline.infoSet);
-   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT, &objectBuffers_modelPipeline.infoSet);
    modelPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
@@ -240,5 +240,5 @@
    createBufferSet(objects_shipPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_shipPipeline);
@@ -248,5 +248,5 @@
    shipPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_shipPipeline.infoSet);
-   shipPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   shipPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT, &objectBuffers_shipPipeline.infoSet);
 
@@ -511,5 +511,5 @@
    createBufferSet(objects_asteroidPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_asteroidPipeline);
@@ -519,5 +519,5 @@
    asteroidPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_asteroidPipeline.infoSet);
-   asteroidPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   asteroidPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT, &objectBuffers_asteroidPipeline.infoSet);
 
@@ -540,5 +540,5 @@
    createBufferSet(objects_laserPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_laserPipeline);
@@ -548,5 +548,5 @@
    laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_laserPipeline.infoSet);
-   laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, &objectBuffers_laserPipeline.infoSet);
    laserPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
@@ -571,5 +571,5 @@
    createBufferSet(objects_explosionPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_explosionPipeline);
@@ -579,5 +579,5 @@
    explosionPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
       VK_SHADER_STAGE_VERTEX_BIT, &uniformBuffers_explosionPipeline.infoSet);
-   explosionPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+   explosionPipeline.addDescriptorInfo(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
       VK_SHADER_STAGE_VERTEX_BIT, &objectBuffers_explosionPipeline.infoSet);
 
@@ -1107,9 +1107,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_modelPipeline.data(), uniforms_modelPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_modelPipeline.data(),
+                                       uniforms_modelPipeline.mapped(imageIndex),
                                        uniformBuffers_modelPipeline.memory[imageIndex],
                                        uniforms_modelPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_modelPipeline.data(), objects_modelPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_modelPipeline.data(),
+                                       objects_modelPipeline.mapped(imageIndex),
                                        objectBuffers_modelPipeline.memory[imageIndex],
                                        objects_modelPipeline.memorySize(), true);
@@ -1137,9 +1139,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_shipPipeline.data(), uniforms_shipPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_shipPipeline.data(),
+                                       uniforms_shipPipeline.mapped(imageIndex),
                                        uniformBuffers_shipPipeline.memory[imageIndex],
                                        uniforms_shipPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_shipPipeline.data(), objects_shipPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_shipPipeline.data(),
+                                       objects_shipPipeline.mapped(imageIndex),
                                        objectBuffers_shipPipeline.memory[imageIndex],
                                        objects_shipPipeline.memorySize(), true);
@@ -1190,9 +1194,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_asteroidPipeline.data(), uniforms_asteroidPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_asteroidPipeline.data(),
+                                       uniforms_asteroidPipeline.mapped(imageIndex),
                                        uniformBuffers_asteroidPipeline.memory[imageIndex],
                                        uniforms_asteroidPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_asteroidPipeline.data(), objects_asteroidPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_asteroidPipeline.data(),
+                                       objects_asteroidPipeline.mapped(imageIndex),
                                        objectBuffers_asteroidPipeline.memory[imageIndex],
                                        objects_asteroidPipeline.memorySize(), true);
@@ -1226,9 +1232,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_laserPipeline.data(), uniforms_laserPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_laserPipeline.data(),
+                                       uniforms_laserPipeline.mapped(imageIndex),
                                        uniformBuffers_laserPipeline.memory[imageIndex],
                                        uniforms_laserPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_laserPipeline.data(), objects_laserPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_laserPipeline.data(),
+                                       objects_laserPipeline.mapped(imageIndex),
                                        objectBuffers_laserPipeline.memory[imageIndex],
                                        objects_laserPipeline.memorySize(), true);
@@ -1261,9 +1269,11 @@
    }
 
-   VulkanUtils::copyDataToMappedMemory(device, uniforms_explosionPipeline.data(), uniforms_explosionPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, uniforms_explosionPipeline.data(),
+                                       uniforms_explosionPipeline.mapped(imageIndex),
                                        uniformBuffers_explosionPipeline.memory[imageIndex],
                                        uniforms_explosionPipeline.memorySize(), true);
 
-   VulkanUtils::copyDataToMappedMemory(device, objects_explosionPipeline.data(), objects_explosionPipeline.mapped(imageIndex),
+   VulkanUtils::copyDataToMappedMemory(device, objects_explosionPipeline.data(),
+                                       objects_explosionPipeline.mapped(imageIndex),
                                        objectBuffers_explosionPipeline.memory[imageIndex],
                                        objects_explosionPipeline.memorySize(), true);
@@ -1863,9 +1873,9 @@
    // TODO: Find a more elegant, per-screen solution for this
    if (currentRenderScreenFn == &VulkanGame::renderGameScreen) {
-      modelPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
-      shipPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
-      asteroidPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
-      laserPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
-      explosionPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, {});
+      modelPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
+      shipPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
+      asteroidPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
+      laserPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
+      explosionPipeline.createRenderCommands(commandBuffers[imageIndex], imageIndex, { 0 });
    }
 
@@ -2315,5 +2325,5 @@
    createBufferSet(objects_modelPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_modelPipeline);
@@ -2335,5 +2345,5 @@
    createBufferSet(objects_shipPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_shipPipeline);
@@ -2355,5 +2365,5 @@
    createBufferSet(objects_asteroidPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_asteroidPipeline);
@@ -2375,5 +2385,5 @@
    createBufferSet(objects_laserPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_laserPipeline);
@@ -2395,5 +2405,5 @@
    createBufferSet(objects_explosionPipeline.memorySize(),
                    VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT
-                   | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
+                   | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
                    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
                    objectBuffers_explosionPipeline);
