diff --git a/Lights.hlsli b/Lights.hlsli
index 3fd4973..8aacb19 100644
--- a/Lights.hlsli
+++ b/Lights.hlsli
@@ -22,4 +22,35 @@ struct Light
 	float3	Padding;
 };
 
+// Gets the specular value for any light
+float calculateSpecular(float3 normal, float3 direction, float3 view, float roughness)
+{
+	return getSpecular(
+		view,
+		getReflection(direction, normal),
+		getSpecularExponent(roughness, MAX_SPECULAR_EXPONENT)
+	);
+}
+
+// Gets the RGB value of a pixel with a directional light
+float3 calculateDirectionalLight(Light light, float3 normal, float3 view, float roughness, float3 surfaceColor, float specularValue)
+{
+	float3 lightDirection = normalize(light.Direction);
+	float diffuse = getDiffuse(normal, -lightDirection);
+	float specular = calculateSpecular(normal, lightDirection, view, roughness) * specularValue;
+
+	return (diffuse * surfaceColor + specular) * light.Intensity * light.Color;
+}
+
+// Gets the RGB value of a pixel with a point light
+float3 calculatePointLight(Light light, float3 normal, float3 view, float3 worldPosition, float roughness, float3 surfaceColor, float specularValue)
+{
+	float3 lightDirection = normalize(light.Position - worldPosition);
+	float attenuation = getAttenuation(light.Position, worldPosition, light.Range);
+	float diffuse = getDiffuse(normal, lightDirection);
+	float specular = calculateSpecular(normal, lightDirection, view, roughness) * specularValue;
+
+	return (diffuse * surfaceColor + specular) * attenuation * light.Intensity * light.Color;
+}
+
 #endif
diff --git a/SimplePixelShader.hlsl b/SimplePixelShader.hlsl
index a7c90d2..5d7e8a2 100644
--- a/SimplePixelShader.hlsl
+++ b/SimplePixelShader.hlsl
@@ -26,37 +26,6 @@ Texture2D Specular : register(t1);
 Texture2D Emissive : register(t2);
 SamplerState BasicSampler : register(s0);
 
-// Gets the specular value for any light
-float calculateSpecular(float3 normal, float3 direction, float3 view, float roughness)
-{
-	return getSpecular(
-		view,
-		getReflection(direction, normal),
-		getSpecularExponent(roughness, MAX_SPECULAR_EXPONENT)
-	);
-}
-
-// Gets the RGB value of a pixel with a directional light
-float3 calculateDirectionalLight(Light light, float3 normal, float3 view, float roughness, float3 surfaceColor, float specularValue)
-{
-	float3 lightDirection = normalize(light.Direction);
-	float diffuse = getDiffuse(normal, -lightDirection);
-	float specular = calculateSpecular(normal, lightDirection, view, roughness) * specularValue;
-
-	return (diffuse * surfaceColor + specular) * light.Intensity * light.Color;
-}
-
-// Gets the RGB value of a pixel with a point light
-float3 calculatePointLight(Light light, float3 normal, float3 view, float3 worldPosition, float roughness, float3 surfaceColor, float specularValue)
-{
-	float3 lightDirection = normalize(light.Position - worldPosition);
-	float attenuation = getAttenuation(light.Position, worldPosition, light.Range);
-	float diffuse = getDiffuse(normal, lightDirection);
-	float specular = calculateSpecular(normal, lightDirection, view, roughness) * specularValue;
-
-	return (diffuse * surfaceColor + specular) * attenuation * light.Intensity * light.Color;
-}
-
 // shader entry point
 float4 main(VertexToPixel input) : SV_TARGET
 {