Index: shaders/asteroid.vert
===================================================================
--- shaders/asteroid.vert	(revision b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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 b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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 b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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 b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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 b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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 b8efa561bb310d6d43bc6666ee16750afbcac2f8)
+++ 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);
 }
