From 6a5f5d0e7051f87a1bc42853be563cf7f8d55569 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Tue, 7 Sep 2021 19:37:24 +0200
Subject: [PATCH] [#94] Funky lights

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 projects/saf_r/src/main.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp
index 387db3fa..0d9e5c10 100644
--- a/projects/saf_r/src/main.cpp
+++ b/projects/saf_r/src/main.cpp
@@ -189,7 +189,7 @@ int main(int argc, const char** argv) {
 		std::cout << "Error. Could not create graphics pipeline. Exiting." << std::endl;
 		return EXIT_FAILURE;
 	}
-
+	
 	auto start = std::chrono::system_clock::now();
 
 	const vkcv::Mesh renderMesh({}, safrIndexBuffer.getVulkanHandle(), 3);
@@ -206,6 +206,8 @@ int main(int argc, const char** argv) {
 	cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, 0.0f));
 	cameraManager.getCamera(camIndex1).setCenter(glm::vec3(0.0f, 0.0f, -1.0f));
 
+	float time = 0;
+	
 	while (window.isWindowOpen())
 	{
 		vkcv::Window::pollEvents();
@@ -218,6 +220,13 @@ int main(int argc, const char** argv) {
 		auto end = std::chrono::system_clock::now();
 		auto deltatime = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
 		start = end;
+		
+		time += 0.000001f * static_cast<float>(deltatime.count());
+		
+		lights[0].position.x += std::cos(time * 3.0f) * 2.5f;
+		lights[1].position.z += std::cos(time * 2.5f) * 3.0f;
+		lights[2].position.y += std::cos(time * 1.5f) * 4.0f;
+		lightsBuffer.fill(lights);
 
 		cameraManager.update(0.000001 * static_cast<double>(deltatime.count()));
 		glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
@@ -233,8 +242,8 @@ int main(int argc, const char** argv) {
 
         core.prepareImageForStorage (cmdStream, swapchainInput);
 
-		uint32_t computeDispatchCount[3] = {static_cast<uint32_t> (std::ceil( windowWidth/16.f)),
-                                            static_cast<uint32_t> (std::ceil(windowHeight/16.f)),
+		uint32_t computeDispatchCount[3] = {static_cast<uint32_t> (std::ceil( swapchainWidth/16.f)),
+                                            static_cast<uint32_t> (std::ceil(swapchainHeight/16.f)),
                                             1 }; // Anzahl workgroups
 		core.recordComputeDispatchToCmdStream(cmdStream,
 			computePipeline,
-- 
GitLab