Index: VulkanGame.vcxproj
===================================================================
--- VulkanGame.vcxproj	(revision 7865c5b0ff6fd16268522aa00c64569b2fd54092)
+++ VulkanGame.vcxproj	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
@@ -188,8 +188,12 @@
     <None Include="shaders\asteroid.frag" />
     <None Include="shaders\asteroid.vert" />
+    <None Include="shaders\explosion.frag" />
+    <None Include="shaders\explosion.vert" />
+    <None Include="shaders\laser.frag" />
+    <None Include="shaders\laser.vert" />
     <None Include="shaders\overlay.frag" />
     <None Include="shaders\overlay.vert" />
-    <None Include="shaders\scene.frag" />
-    <None Include="shaders\scene.vert" />
+    <None Include="shaders\model.frag" />
+    <None Include="shaders\model.vert" />
     <None Include="shaders\ship.frag" />
     <None Include="shaders\ship.vert" />
Index: VulkanGame.vcxproj.filters
===================================================================
--- VulkanGame.vcxproj.filters	(revision 7865c5b0ff6fd16268522aa00c64569b2fd54092)
+++ VulkanGame.vcxproj.filters	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
@@ -95,12 +95,40 @@
   <ItemGroup>
     <None Include="assets\laser.xcf" />
-    <None Include="shaders\asteroid.frag" />
-    <None Include="shaders\asteroid.vert" />
-    <None Include="shaders\overlay.frag" />
-    <None Include="shaders\overlay.vert" />
-    <None Include="shaders\scene.frag" />
-    <None Include="shaders\scene.vert" />
-    <None Include="shaders\ship.frag" />
-    <None Include="shaders\ship.vert" />
+    <None Include="shaders\asteroid.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\asteroid.vert">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\ship.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\ship.vert">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\overlay.vert">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\overlay.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\explosion.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\explosion.vert">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\laser.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\laser.vert">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\model.frag">
+      <Filter>shaders</Filter>
+    </None>
+    <None Include="shaders\model.vert">
+      <Filter>shaders</Filter>
+    </None>
   </ItemGroup>
   <ItemGroup>
@@ -141,4 +169,7 @@
       <UniqueIdentifier>{7a1e3c9c-c984-4cf9-9c02-9a4332a7ce92}</UniqueIdentifier>
     </Filter>
+    <Filter Include="shaders">
+      <UniqueIdentifier>{3cca3074-6c74-4e28-b5cf-05662306a067}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
Index: shaders/model.frag
===================================================================
--- shaders/model.frag	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
+++ shaders/model.frag	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
@@ -0,0 +1,13 @@
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(binding = 2) uniform sampler2D texSampler;
+
+layout(location = 0) in vec3 fragColor;
+layout(location = 1) in vec2 fragTexCoord;
+
+layout(location = 0) out vec4 outColor;
+
+void main() {
+   outColor = vec4(fragColor * texture(texSampler, fragTexCoord).rgb, 1.0);
+}
Index: shaders/model.vert
===================================================================
--- shaders/model.vert	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
+++ shaders/model.vert	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
@@ -0,0 +1,30 @@
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+struct Object {
+   mat4 model;
+};
+
+layout (binding = 0) uniform UniformBufferObject {
+   mat4 view;
+   mat4 proj;
+} ubo;
+
+layout(binding = 1) readonly buffer StorageBufferObject {
+   Object objects[];
+} sbo;
+
+layout(location = 0) in vec3 inPosition;
+layout(location = 1) in vec3 inColor;
+layout(location = 2) in vec2 inTexCoord;
+layout(location = 3) in uint obj_index;
+
+layout(location = 0) out vec3 fragColor;
+layout(location = 1) out vec2 fragTexCoord;
+
+void main() {
+   fragColor = inColor;
+   fragTexCoord = inTexCoord;
+
+   gl_Position = ubo.proj * ubo.view * sbo.objects[obj_index].model * vec4(inPosition, 1.0);
+}
Index: aders/scene.frag
===================================================================
--- shaders/scene.frag	(revision 7865c5b0ff6fd16268522aa00c64569b2fd54092)
+++ 	(revision )
@@ -1,13 +1,0 @@
-#version 450
-#extension GL_ARB_separate_shader_objects : enable
-
-layout(binding = 2) uniform sampler2D texSampler;
-
-layout(location = 0) in vec3 fragColor;
-layout(location = 1) in vec2 fragTexCoord;
-
-layout(location = 0) out vec4 outColor;
-
-void main() {
-   outColor = vec4(fragColor * texture(texSampler, fragTexCoord).rgb, 1.0);
-}
Index: aders/scene.vert
===================================================================
--- shaders/scene.vert	(revision 7865c5b0ff6fd16268522aa00c64569b2fd54092)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#version 450
-#extension GL_ARB_separate_shader_objects : enable
-
-struct Object {
-   mat4 model;
-};
-
-layout (binding = 0) uniform UniformBufferObject {
-   mat4 view;
-   mat4 proj;
-} ubo;
-
-layout(binding = 1) readonly buffer StorageBufferObject {
-   Object objects[];
-} sbo;
-
-layout(location = 0) in vec3 inPosition;
-layout(location = 1) in vec3 inColor;
-layout(location = 2) in vec2 inTexCoord;
-layout(location = 3) in uint obj_index;
-
-layout(location = 0) out vec3 fragColor;
-layout(location = 1) out vec2 fragTexCoord;
-
-void main() {
-   fragColor = inColor;
-   fragTexCoord = inTexCoord;
-
-   gl_Position = ubo.proj * ubo.view * sbo.objects[obj_index].model * vec4(inPosition, 1.0);
-}
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision 7865c5b0ff6fd16268522aa00c64569b2fd54092)
+++ vulkan-game.cpp	(revision aa7e5f02d65eda57e6410dbfc26d5ef3e252bcc6)
@@ -342,5 +342,5 @@
 
    modelPipeline.createDescriptorSetLayout();
-   modelPipeline.createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv");
+   modelPipeline.createPipeline("shaders/model-vert.spv", "shaders/model-frag.spv");
    modelPipeline.createDescriptorPool(swapChainImages);
    modelPipeline.createDescriptorSets(swapChainImages);
@@ -2103,5 +2103,5 @@
 
    modelPipeline.updateRenderPass(renderPass);
-   modelPipeline.createPipeline("shaders/scene-vert.spv", "shaders/scene-frag.spv");
+   modelPipeline.createPipeline("shaders/model-vert.spv", "shaders/model-frag.spv");
    modelPipeline.createDescriptorPool(swapChainImages);
    modelPipeline.createDescriptorSets(swapChainImages);
