Browse Source

Animated point lights & fixed shader cleanup

Point lights rotate around the center point light.

Shader modules for the mesh weren't destroyed, fixed this.
Jef Belmans 2 years ago
parent
commit
d0cbcda38b

+ 3 - 45
.idea/workspace.xml

@@ -32,44 +32,11 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="e2ea9cb6-a6b7-419f-9266-e5263673b6e6" name="Changes" comment="Fixed MaterialUBO memory alignment. All variables are now correctly aligned and read in the shader.">
-      <change afterPath="$PROJECT_DIR$/coral_renderer/point_light_system.cpp" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/coral_renderer/point_light_system.h" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/shaders/compiled/point_light.frag.spv" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/shaders/point_light.frag" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/shaders/point_light.vert" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/debug/CMakeFiles/clion-Debug-log.txt" beforeDir="false" afterPath="$PROJECT_DIR$/build/debug/CMakeFiles/clion-Debug-log.txt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/debug/build.ninja" beforeDir="false" afterPath="$PROJECT_DIR$/build/debug/build.ninja" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/.ninja_deps" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/.ninja_deps" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/.ninja_log" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/.ninja_log" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/CMakeFiles/clion-Release-log.txt" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/CMakeFiles/clion-Release-log.txt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/Testing/Temporary/LastTest.log" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/Testing/Temporary/LastTest.log" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/assets/shaders/compiled/simple_shader.frag.spv" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/assets/shaders/compiled/simple_shader.frag.spv" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/assets/shaders/compiled/simple_shader.vert.spv" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/assets/shaders/compiled/simple_shader.vert.spv" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/build/release/build.ninja" beforeDir="false" afterPath="$PROJECT_DIR$/build/release/build.ninja" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/CMakeLists.txt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_frame_info.cpp" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/coral_frame_info.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_frame_info.h" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_gameobject.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_gameobject.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_gameobject.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_gameobject.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/coral_mesh.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_mesh.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_mesh.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_mesh.h" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_pipeline.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_pipeline.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_pipeline.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_pipeline.h" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_texture.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_texture.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/coral_texture.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/coral_texture.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/coral_renderer/first_app.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/first_app.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/first_app.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/first_app.h" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/render_system.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/render_system.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/coral_renderer/render_system.h" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/render_system.h" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/PosNormCol.frag" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/PosNormCol.vert" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/compiled/PosNormCol.frag.spv" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/compiled/PosNormCol.vert.spv" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/compiled/simple_shader.frag.spv" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/compiled/simple_shader.vert.spv" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/compiled/simple_shader.vert.spv" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/simple_shader.frag" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/simple_shader.frag" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/shaders/simple_shader.vert" beforeDir="false" afterPath="$PROJECT_DIR$/shaders/simple_shader.vert" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/coral_renderer/point_light_system.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/coral_renderer/point_light_system.cpp" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -79,7 +46,7 @@
   <component name="ClangdSettings">
     <option name="formatViaClangd" value="false" />
   </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="CMakeBuildProfile:Release" />
+  <component name="ExecutionTargetManager" SELECTED_TARGET="CMakeBuildProfile:Debug" />
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
@@ -237,7 +204,7 @@
       <workItem from="1696518823306" duration="2282000" />
       <workItem from="1696602059143" duration="666000" />
       <workItem from="1696605383562" duration="9264000" />
-      <workItem from="1696621767016" duration="4005000" />
+      <workItem from="1696621767016" duration="4866000" />
     </task>
     <task id="LOCAL-00001" summary="Have I forgotten how to git?">
       <option name="closed" value="true" />
@@ -274,15 +241,6 @@
     <option name="LAST_COMMIT_MESSAGE" value="Fixed MaterialUBO memory alignment. All variables are now correctly aligned and read in the shader." />
   </component>
   <component name="XDebuggerManager">
-    <breakpoint-manager>
-      <breakpoints>
-        <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
-          <url>file://$PROJECT_DIR$/coral_renderer/point_light_system.cpp</url>
-          <line>59</line>
-          <option name="timeStamp" value="2" />
-        </line-breakpoint>
-      </breakpoints>
-    </breakpoint-manager>
     <watches-manager>
       <configuration name="CMakeRunConfiguration">
         <watch expression="glTF_image.height" />

BIN
build/release/.ninja_deps


+ 20 - 0
build/release/.ninja_log

@@ -92,3 +92,23 @@
 1878	2021	7183290849170781	coral_renderer/coral_renderer.exe	4d6a346da4510760
 0	1341	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
 0	1341	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+8	1161	7183294212905021	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	3426bcb39c57484b
+11	1225	7183294213546818	coral_renderer/CMakeFiles/coral_renderer.dir/point_light_system.cpp.obj	9032090700129b1a
+4	1925	7183294220542984	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	db0c627bbb247e94
+1925	2069	7183294221940517	coral_renderer/coral_renderer.exe	4d6a346da4510760
+0	1410	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+0	1410	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+5	1896	7183295480048156	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	db0c627bbb247e94
+1896	2040	7183295481435195	coral_renderer/coral_renderer.exe	4d6a346da4510760
+1	1376	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+1	1376	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+5	1877	7183295820094448	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	db0c627bbb247e94
+1877	2018	7183295821462508	coral_renderer/coral_renderer.exe	4d6a346da4510760
+0	1418	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+0	1418	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+4	1988	7183296086591942	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	db0c627bbb247e94
+1988	2134	7183296088005525	coral_renderer/coral_renderer.exe	4d6a346da4510760
+0	1387	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+0	1387	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+0	1430	0	coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866
+0	1430	0	E:/Game Development/Visual Studio Solutions/Coral3D/build/release/coral_renderer/CMakeFiles/copy_assets	66424d61a55ca866

+ 2 - 2
build/release/Testing/Temporary/LastTest.log

@@ -1,3 +1,3 @@
-Start testing: Oct 06 22:58 Romance Daylight Time
+Start testing: Oct 06 23:11 Romance Daylight Time
 ----------------------------------------------------------
-End testing: Oct 06 22:58 Romance Daylight Time
+End testing: Oct 06 23:11 Romance Daylight Time

+ 1 - 1
coral_renderer/coral_frame_info.h

@@ -35,7 +35,7 @@ namespace coral_3d
 	struct FrameInfo
 	{
 		int frame_index{};
-		float frame_tine{};
+		float frame_time{};
 		VkCommandBuffer command_buffer{};
 		coral_camera& camera;
 		VkDescriptorSet global_descriptor_set;

+ 3 - 0
coral_renderer/coral_mesh.cpp

@@ -675,4 +675,7 @@ void coral_mesh::create_pipelines(
             != VK_SUCCESS)
             throw std::runtime_error("ERROR! coral_pipeline::create_graphics_pipeline() >> Failed to create graphics pipeline!");
     }
+
+    vkDestroyShaderModule(device_.device(), frag_shader_module, nullptr);
+    vkDestroyShaderModule(device_.device(), vert_shader_module, nullptr);
 }

+ 16 - 4
coral_renderer/first_app.cpp

@@ -143,11 +143,23 @@ void first_app::load_gameobjects(coral_descriptor_set_layout& material_set_layou
     gameobjects_.emplace(sponza_scene->get_id(), sponza_scene);
 
     // LIGHTS
-    auto point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f));
-    point_light->transform_.translation = glm::vec3(0.f, 1.f, -0.35f);
+    auto point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f, 0.1f, {1.f, 0.2f, 0.2f}));
+    point_light->transform_.translation = glm::vec3(-4.f, 1.f, 0.f);
     gameobjects_.emplace(point_light->get_id(), point_light);
 
-    point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f, 0.1f, {1.f, 0.2f, 0.14f}));
-    point_light->transform_.translation = glm::vec3(5.f, 1.f, -0.35f);
+    point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f, 0.1f, {0.2f, 1.f, 0.2f}));
+    point_light->transform_.translation = glm::vec3(-2.f, 1.f, 0.f);
+    gameobjects_.emplace(point_light->get_id(), point_light);
+
+    point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f));
+    point_light->transform_.translation = glm::vec3(0.f, 1.f, 0.f);
+    gameobjects_.emplace(point_light->get_id(), point_light);
+
+    point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f, 0.1f, {0.2f, 0.2f, 1.f}));
+    point_light->transform_.translation = glm::vec3(2.f, 1.f, 0.f);
+    gameobjects_.emplace(point_light->get_id(), point_light);
+
+    point_light = std::make_shared<coral_gameobject>(coral_gameobject::create_point_light(1.f, 0.1f, {1.f, 0.2f, 1.f}));
+    point_light->transform_.translation = glm::vec3(4.f, 1.f, 0.f);
     gameobjects_.emplace(point_light->get_id(), point_light);
 }

+ 3 - 0
coral_renderer/point_light_system.cpp

@@ -23,12 +23,15 @@ point_light_system::~point_light_system()
 
 void point_light_system::update(FrameInfo &frame_info, GlobalUBO &ubo)
 {
+    auto rotation = glm::rotate(glm::mat4(1.f), frame_info.frame_time, {0.f, -1.f, 0.f});
     int light_index{0};
     for(auto& kv: frame_info.gameobjects)
     {
         auto& obj = kv.second;
         if(obj->point_light_ == nullptr) continue;
 
+        obj->transform_.translation = glm::vec3(rotation * glm::vec4(obj->transform_.translation, 1.f));
+
         // Copy light to UBO
         ubo.point_lights[light_index].position = glm::vec4(obj->transform_.translation, obj->transform_.scale.x);
         ubo.point_lights[light_index].color = obj->point_light_->color;