Index: OpenGLReference.vcxproj
===================================================================
--- OpenGLReference.vcxproj	(revision 15104a87760bafad33c7890536e50ee7bc8c97c0)
+++ OpenGLReference.vcxproj	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
@@ -172,12 +172,12 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="asteroid.frag" />
-    <None Include="asteroid.vert" />
-    <None Include="explosion.frag" />
-    <None Include="explosion.vert" />
-    <None Include="ship.frag" />
-    <None Include="ship.vert" />
-    <None Include="laser.frag" />
-    <None Include="laser.vert" />
+    <None Include="gl-shaders\asteroid.frag" />
+    <None Include="gl-shaders\asteroid.vert" />
+    <None Include="gl-shaders\explosion.frag" />
+    <None Include="gl-shaders\explosion.vert" />
+    <None Include="gl-shaders\laser.frag" />
+    <None Include="gl-shaders\laser.vert" />
+    <None Include="gl-shaders\ship.frag" />
+    <None Include="gl-shaders\ship.vert" />
     <None Include="texture.frag" />
     <None Include="texture.vert" />
Index: VulkanGame.vcxproj
===================================================================
--- VulkanGame.vcxproj	(revision 15104a87760bafad33c7890536e50ee7bc8c97c0)
+++ VulkanGame.vcxproj	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
@@ -163,4 +163,6 @@
     <None Include="shaders\scene.frag" />
     <None Include="shaders\scene.vert" />
+    <None Include="shaders\ship.frag" />
+    <None Include="shaders\ship.vert" />
   </ItemGroup>
   <ItemGroup>
Index: shaders/ship.frag
===================================================================
--- shaders/ship.frag	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
+++ shaders/ship.frag	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
@@ -0,0 +1,60 @@
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+//in vec3 position_eye, normal_eye, color, light_position_eye, light2_position_eye;
+layout(location = 0) in vec3 position_eye;
+layout(location = 1) in vec3 color;
+
+layout(location = 0) out vec4 outColor;
+
+/*
+// fixed point light properties
+vec3 Ls = vec3(1.0, 1.0, 1.0);
+vec3 Ld = vec3(1.0, 1.0, 1.0);
+vec3 La = vec3(0.2, 0.2, 0.2);
+
+// surface reflectance
+vec3 Ks = vec3(1.0, 1.0, 1.0);
+vec3 Kd = vec3(1.0, 1.5, 1.0);
+vec3 Ka = vec3(0.2, 0.2, 0.2);
+float specular_exponent = 100.0; // specular 'power'
+*/
+
+void main() {
+  /*
+  // ambient intensity
+  vec3 Ia = La * Ka;
+
+  // ambient intensity
+  vec3 Ia2 = La * Ka;
+
+  vec3 direction_to_light_eye = normalize(light_position_eye - position_eye);
+  float dot_prod = max(dot(direction_to_light_eye, normal_eye), 0.0);
+
+  // diffuse intensity
+  vec3 Id = Ld * color * dot_prod;
+
+  vec3 direction_to_light2_eye = normalize(light2_position_eye - position_eye);
+  float dot_prod2 = max(dot(direction_to_light2_eye, normal_eye), 0.0);
+
+  // diffuse intensity
+  vec3 Id2 = Ld * color * dot_prod2;
+
+  vec3 surface_to_viewer_eye = normalize(-position_eye);
+
+  vec3 reflection_eye = reflect(-direction_to_light_eye, normal_eye);
+  float dot_prod_specular = max(dot(reflection_eye, surface_to_viewer_eye), 0.0);
+  float specular_factor = pow(dot_prod_specular, specular_exponent);
+
+  vec3 reflection_eye2 = reflect(-direction_to_light2_eye, normal_eye);
+  float dot_prod_specular2 = max(dot(reflection_eye2, surface_to_viewer_eye), 0.0);
+  float specular_factor2 = pow(dot_prod_specular2, specular_exponent);
+
+  // specular intensity
+  vec3 Is = Ls * Ks * specular_factor;
+  vec3 Is2 = Ls * Ks * specular_factor2;
+
+  outColor = vec4((Is + Id + Ia + Is2 + Id2 + Ia2)/2, 1.0);
+  */
+  outColor = vec4(color, 1.0);
+}
Index: shaders/ship.vert
===================================================================
--- shaders/ship.vert	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
+++ shaders/ship.vert	(revision 1908591f828b8f96e74a01dcce09fc9b37f711d4)
@@ -0,0 +1,30 @@
+#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout (binding = 0) uniform UniformBufferObject {
+   mat4 model;
+   mat4 view;
+   mat4 proj;
+} ubo;
+
+layout(location = 0) in vec3 vertex_position;
+layout(location = 1) in vec3 vertex_color;
+
+//out vec3 position_eye, normal_eye, color, light_position_eye, light2_position_eye;
+layout(location = 0) out vec3 position_eye;
+layout(location = 1) out vec3 color;
+
+// fixed point light position
+//vec3 light_position_world = vec3(0.0, 0.0, 2.0);
+//vec3 light2_position_world = vec3(0.0, 1.5, -0.1);
+
+void main() {
+  // ORIG: position_eye = vec3(view * model_mats[ubo_index] * vec4(vertex_position, 1.0));
+  position_eye = vec3(ubo.view * ubo.model * vec4(vertex_position, 1.0));
+  //normal_eye = normalize(vec3(view * model_mats[ubo_index] * vec4(vertex_normal, 0.0)));
+  color = vertex_color;
+  //light_position_eye = vec3(view * vec4(light_position_world, 1.0));
+  //light2_position_eye = vec3(view * vec4(light2_position_world, 1.0));
+
+  gl_Position = ubo.proj * vec4(position_eye, 1.0);
+}
