diff --git a/LearnOpenGL/LearnOpenGL.vcxproj b/LearnOpenGL/LearnOpenGL.vcxproj
index 132c65d2db104a015d4274d26e605a1709dc6fe7..902ff56c83b88c29e311b4c1447af207aa817c5f 100644
--- a/LearnOpenGL/LearnOpenGL.vcxproj
+++ b/LearnOpenGL/LearnOpenGL.vcxproj
@@ -123,6 +123,7 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="FileSystem.cpp" />
+    <ClCompile Include="Light.cpp" />
     <ClCompile Include="Logger.cpp" />
     <ClCompile Include="ResourceLoader.cpp" />
     <ClCompile Include="OpenGLWrapper.cpp" />
@@ -132,9 +133,11 @@
   <ItemGroup>
     <ClInclude Include="Camera.h" />
     <ClInclude Include="FileSystem.h" />
+    <ClInclude Include="Light.h" />
     <ClInclude Include="Logger.h" />
     <ClInclude Include="ResourceLoader.h" />
     <ClInclude Include="OpenGLWrapper.h" />
+    <ClInclude Include="Scene.h" />
     <ClInclude Include="ShaderType.h" />
     <ClInclude Include="Transform.h" />
   </ItemGroup>
diff --git a/LearnOpenGL/LearnOpenGL.vcxproj.filters b/LearnOpenGL/LearnOpenGL.vcxproj.filters
index 6ce7b3628dafb3e50cccf2004f73706bde59b2a1..f4a72bb06c40dd289e89c4fa5d56cf80f67c3bc9 100644
--- a/LearnOpenGL/LearnOpenGL.vcxproj.filters
+++ b/LearnOpenGL/LearnOpenGL.vcxproj.filters
@@ -33,6 +33,9 @@
     <ClCompile Include="Transform.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Light.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="ShaderType.h">
@@ -56,5 +59,11 @@
     <ClInclude Include="Transform.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Scene.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Light.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/LearnOpenGL/Light.cpp b/LearnOpenGL/Light.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..60c89048e853178896eca7eb9cb4a044d25e97c2
--- /dev/null
+++ b/LearnOpenGL/Light.cpp
@@ -0,0 +1,18 @@
+#include "Light.h"
+
+Light::Light(glm::vec3 _ambient, glm::vec3 _diffuse, glm::vec3 _specular)
+{
+	ambient = _ambient;
+	diffuse = _diffuse;
+	specular = _specular;
+}
+
+Transform *Light::get_transform()
+{
+	return &transform;
+}
+
+glm::vec3 DirectionalLight::get_light_direction()
+{
+	return get_transform()->get_front();
+}
\ No newline at end of file
diff --git a/LearnOpenGL/Light.h b/LearnOpenGL/Light.h
new file mode 100644
index 0000000000000000000000000000000000000000..0a0da49f483fccb92bac3a622dbf95124d54b5cc
--- /dev/null
+++ b/LearnOpenGL/Light.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include <GL/glew.h>
+
+#include <glm/glm.hpp>
+#include <glm/gtc/matrix_transform.hpp>
+#include <glm/gtc/type_ptr.hpp>
+
+#include "Transform.h"
+
+class Light
+{
+private:
+	Transform transform;
+
+public:
+	Light(glm::vec3 _ambient, glm::vec3 _diffuse, glm::vec3 _specular);
+
+	Transform *get_transform();
+
+	glm::vec3 ambient;
+	glm::vec3 diffuse;
+	glm::vec3 specular;
+};
+
+class DirectionalLight : Light
+{
+public:
+	glm::vec3 get_light_direction();
+};
\ No newline at end of file
diff --git a/LearnOpenGL/Scene.h b/LearnOpenGL/Scene.h
new file mode 100644
index 0000000000000000000000000000000000000000..e44f64aec12865a03335ba58ad10cc137497021f
--- /dev/null
+++ b/LearnOpenGL/Scene.h
@@ -0,0 +1,5 @@
+#pragma once
+
+class Scene
+{
+};
\ No newline at end of file