Browse Source

Added basic camera class

Added basic camera class that supports both orthographic and perspective projection.
Jef Belmans 2 years ago
parent
commit
0eacb4d35b

+ 2 - 0
coral_renderer/CMakeLists.txt

@@ -21,6 +21,8 @@ add_executable(coral_renderer
     "coral_renderer.cpp"
     "render_system.h"
     "render_system.cpp"
+    "coral_camera.h"
+    "coral_camera.cpp"
 )
 
 add_dependencies(coral_renderer Shaders)

+ 53 - 0
coral_renderer/coral_camera.cpp

@@ -0,0 +1,53 @@
+#include "coral_camera.h"
+
+#include <gtc/matrix_transform.hpp>
+
+using namespace coral_3d;
+
+void coral_camera::set_ortographic_projection(float left, float right, float top, float bottom, float near, float far)
+{
+	projection_matrix_ = glm::orthoLH(left, right, bottom, top, near, far);
+}
+
+void coral_camera::set_perspective_projection(float fovy, float aspect, float near, float far) 
+{
+	projection_matrix_ = glm::perspectiveLH(fovy, aspect, near, far);
+}
+
+void coral_camera::set_view_direction(glm::vec3 position, glm::vec3 direction, glm::vec3 up)
+{
+	direction.x *= -1.f;
+	view_matrix_ = glm::lookAtLH(position, direction, up);
+}
+
+void coral_camera::set_view_target(glm::vec3 position, glm::vec3 target, glm::vec3 up)
+{
+	target.x *= -1.f;
+	view_matrix_ = glm::lookAtLH(position, target, up);
+}
+
+void coral_camera::set_view_yxz(glm::vec3 position, glm::vec3 rotation)
+{
+	const float c3 = glm::cos(rotation.z);
+	const float s3 = glm::sin(rotation.z);
+	const float c2 = glm::cos(rotation.x);
+	const float s2 = glm::sin(rotation.x);
+	const float c1 = glm::cos(rotation.y);
+	const float s1 = glm::sin(rotation.y);
+	const glm::vec3 u{(c1* c3 + s1 * s2 * s3), (c2* s3), (c1* s2* s3 - c3 * s1)};
+	const glm::vec3 v{(c3* s1* s2 - c1 * s3), (c2* c3), (c1* c3* s2 + s1 * s3)};
+	const glm::vec3 w{(c2* s1), (-s2), (c1* c2)};
+	view_matrix_ = glm::mat4{ 1.f };
+	view_matrix_[0][0] = u.x;
+	view_matrix_[1][0] = u.y;
+	view_matrix_[2][0] = u.z;
+	view_matrix_[0][1] = v.x;
+	view_matrix_[1][1] = v.y;
+	view_matrix_[2][1] = v.z;
+	view_matrix_[0][2] = w.x;
+	view_matrix_[1][2] = w.y;
+	view_matrix_[2][2] = w.z;
+	view_matrix_[3][0] = -glm::dot(u, position);
+	view_matrix_[3][1] = -glm::dot(v, position);
+	view_matrix_[3][2] = -glm::dot(w, position);
+}

+ 28 - 0
coral_renderer/coral_camera.h

@@ -0,0 +1,28 @@
+#pragma once
+
+// LIBS
+#define GLM_FORCE_RADIANS
+#define GLM_FORCE_DEPTH_ZERO_TO_ONE
+#include <glm.hpp>
+
+namespace coral_3d
+{
+	class coral_camera final
+	{
+	public:
+		void set_ortographic_projection(
+		float left, float right, float top, float bottom, float near, float far);
+		void set_perspective_projection(float fovy, float aspect, float near, float far);
+
+		void set_view_direction(glm::vec3 position, glm::vec3 direction, glm::vec3 up = glm::vec3{ 0.f, -1.f, 0.f });
+		void set_view_target(glm::vec3 position, glm::vec3 target, glm::vec3 up = glm::vec3{ 0.f, -1.f, 0.f });
+		void set_view_yxz(glm::vec3 position, glm::vec3 rotation);
+
+		const glm::mat4& get_projection() const { return projection_matrix_; }
+		const glm::mat4& get_view() const { return view_matrix_; }
+
+	private:
+		glm::mat4 projection_matrix_{ 1.f };
+		glm::mat4 view_matrix_{1.f};
+	};
+}

+ 36 - 9
coral_renderer/coral_gameobject.h

@@ -2,6 +2,9 @@
 
 #include "coral_mesh.h"
 
+// LIBS
+#include<gtc/matrix_transform.hpp>
+
 // STD
 #include <memory>
 
@@ -9,19 +12,43 @@ namespace coral_3d
 {
 	struct TransformComponent
 	{
-		glm::vec3 translation{0.0f, 0.0f, 0.0f};
+		glm::vec3 translation{};
 		glm::vec3 scale{1.f, 1.f, 1.f};
+		glm::vec3 rotation{};
 
-		glm::mat3 mat3()
-		{ 
-			glm::mat3 scale_mat
+		// Matrix corrsponds to Translate * Ry * Rx * Rz * Scale
+		// Rotations correspond to Tait-bryan angles of Y(1), X(2), Z(3)
+		// https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix
+		glm::mat4 mat4()
+		{
+			const float c3 = glm::cos(rotation.z);
+			const float s3 = glm::sin(rotation.z);
+			const float c2 = glm::cos(rotation.x);
+			const float s2 = glm::sin(rotation.x);
+			const float c1 = glm::cos(rotation.y);
+			const float s1 = glm::sin(rotation.y);
+			return glm::mat4
 			{
-				{scale.x, 0.f, 0.f},
-				{0.f, scale.y, 0.f},
-				{0.f, 0.f, scale.z}
+				{
+					scale.x* (c1* c3 + s1 * s2 * s3),
+					scale.x* (c2* s3),
+					scale.x* (c1* s2* s3 - c3 * s1),
+					0.0f,
+				},
+				{
+					scale.y * (c3 * s1 * s2 - c1 * s3),
+					scale.y * (c2 * c3),
+					scale.y * (c1 * c3 * s2 + s1 * s3),
+					0.0f,
+				},
+				{
+					scale.z * (c2 * s1),
+					scale.z * (-s2),
+					scale.z * (c1 * c2),
+					0.0f,
+				},
+				{ translation.x, translation.y, translation.z, 1.0f }
 			};
-
-			return scale_mat;
 		}
 	};
 

+ 1 - 1
coral_renderer/coral_mesh.cpp

@@ -25,7 +25,7 @@ VertexInputDescription Vertex::get_vert_desc()
     VkVertexInputAttributeDescription position_attrib{};
     position_attrib.binding = 0;
     position_attrib.location = 0;
-    position_attrib.format = VK_FORMAT_R32G32_SFLOAT;
+    position_attrib.format = VK_FORMAT_R32G32B32_SFLOAT;
     position_attrib.offset = offsetof(Vertex, position);
 
     //// Normal will be stored at Location 1

+ 1 - 1
coral_renderer/coral_renderer.cpp

@@ -90,7 +90,7 @@ void coral_renderer::begin_swapchain_render_pass(VkCommandBuffer command_buffer)
 	render_pass_info.renderArea.extent = swapchain_->get_swapchain_extent();
 
 	std::array<VkClearValue, 2> clear_values{};
-	clear_values[0].color = { 0.1f, 0.1f, 0.1f, 1.0f };
+	clear_values[0].color = { 0.02f, 0.02f, 0.02f, 1.0f };
 	clear_values[1].depthStencil = { 1.0f, 0 };
 	render_pass_info.clearValueCount = static_cast<uint32_t>(clear_values.size());
 	render_pass_info.pClearValues = clear_values.data();

+ 1 - 0
coral_renderer/coral_renderer.h

@@ -21,6 +21,7 @@ namespace coral_3d
 		coral_renderer& operator=(const coral_renderer&) = delete;
 
 		VkRenderPass get_swapchain_render_pass() const { return swapchain_->get_render_pass(); }
+		float get_aspect_ratio() const { return swapchain_->extent_aspect_ratio(); }
 		bool is_frame_in_progress() const { return is_frame_started_; }
 		
 		VkCommandBuffer get_current_command_buffer() const

+ 75 - 15
coral_renderer/first_app.cpp

@@ -1,6 +1,7 @@
 #include "first_app.h"
 
 #include "render_system.h"
+#include "coral_camera.h"
 
 // STD
 #include <stdexcept>
@@ -22,15 +23,22 @@ first_app::~first_app()
 void first_app::run()
 {
 	render_system render_system{ device_, renderer_.get_swapchain_render_pass() };
+    coral_camera camera{};
+   
+    // camera.set_view_direction(glm::vec3{0.f}, glm::vec3{0.5f, 0.f, 1.f});
 
 	while (!window_.should_close())
 	{
 		glfwPollEvents();
 
+        float aspect{ renderer_.get_aspect_ratio() };
+        // camera.set_ortographic_projection(-aspect, aspect, -1, 1, -1, 1);
+        camera.set_perspective_projection(glm::radians(60.f), aspect, 0.1f, 10.f);
+
 		if (auto command_buffer = renderer_.begin_frame())
 		{
 			renderer_.begin_swapchain_render_pass(command_buffer);
-			render_system.render_gameobjects(command_buffer, gameobjects_);
+			render_system.render_gameobjects(command_buffer, gameobjects_, camera);
 			renderer_.end_swapchain_render_pass(command_buffer);
 			renderer_.end_frame();
 		}
@@ -39,20 +47,72 @@ void first_app::run()
 	vkDeviceWaitIdle(device_.device());
 }
 
+std::unique_ptr<coral_mesh> create_cube_model(coral_device& device, glm::vec3 offset) {
+    std::vector<Vertex> vertices
+    {
+        // left face (white)
+        {{-.5f, -.5f, -.5f}, { .9f, .9f, .9f }},
+        { {-.5f, .5f, .5f}, {.9f, .9f, .9f} },
+        { {-.5f, -.5f, .5f}, {.9f, .9f, .9f} },
+        { {-.5f, -.5f, -.5f}, {.9f, .9f, .9f} },
+        { {-.5f, .5f, -.5f}, {.9f, .9f, .9f} },
+        { {-.5f, .5f, .5f}, {.9f, .9f, .9f} },
+
+            // right face (yellow)
+        { {.5f, -.5f, -.5f}, {.8f, .8f, .1f} },
+        { {.5f, .5f, .5f}, {.8f, .8f, .1f} },
+        { {.5f, -.5f, .5f}, {.8f, .8f, .1f} },
+        { {.5f, -.5f, -.5f}, {.8f, .8f, .1f} },
+        { {.5f, .5f, -.5f}, {.8f, .8f, .1f} },
+        { {.5f, .5f, .5f}, {.8f, .8f, .1f} },
+
+            // top face (orange, remember y axis points down)
+        { {-.5f, -.5f, -.5f}, {.9f, .6f, .1f} },
+        { {.5f, -.5f, .5f}, {.9f, .6f, .1f} },
+        { {-.5f, -.5f, .5f}, {.9f, .6f, .1f} },
+        { {-.5f, -.5f, -.5f}, {.9f, .6f, .1f} },
+        { {.5f, -.5f, -.5f}, {.9f, .6f, .1f} },
+        { {.5f, -.5f, .5f}, {.9f, .6f, .1f} },
+
+            // bottom face (red)
+        { {-.5f, .5f, -.5f}, {.8f, .1f, .1f} },
+        { {.5f, .5f, .5f}, {.8f, .1f, .1f} },
+        { {-.5f, .5f, .5f}, {.8f, .1f, .1f} },
+        { {-.5f, .5f, -.5f}, {.8f, .1f, .1f} },
+        { {.5f, .5f, -.5f}, {.8f, .1f, .1f} },
+        { {.5f, .5f, .5f}, {.8f, .1f, .1f} },
+
+            // nose face (blue)
+        { {-.5f, -.5f, 0.5f}, {.1f, .1f, .8f} },
+        { {.5f, .5f, 0.5f}, {.1f, .1f, .8f} },
+        { {-.5f, .5f, 0.5f}, {.1f, .1f, .8f} },
+        { {-.5f, -.5f, 0.5f}, {.1f, .1f, .8f} },
+        { {.5f, -.5f, 0.5f}, {.1f, .1f, .8f} },
+        { {.5f, .5f, 0.5f}, {.1f, .1f, .8f} },
+
+            // tail face (green)
+        { {-.5f, -.5f, -0.5f}, {.1f, .8f, .1f} },
+        { {.5f, .5f, -0.5f}, {.1f, .8f, .1f} },
+        { {-.5f, .5f, -0.5f}, {.1f, .8f, .1f} },
+        { {-.5f, -.5f, -0.5f}, {.1f, .8f, .1f} },
+        { {.5f, -.5f, -0.5f}, {.1f, .8f, .1f} },
+        { {.5f, .5f, -0.5f}, {.1f, .8f, .1f} },
+
+    };
+    for (auto& v : vertices)
+        v.position += offset;
+
+    return std::make_unique<coral_mesh>(device, vertices);
+}
+
 void first_app::load_gameobjects()
 {
-	std::vector<Vertex> vertices
-	{
-		{{0.0f, -0.5f, 0.0f}, { 1.0f, 0.0f, 0.0f }},
-		{{-0.5f, 0.5f, 0.0f}, { 0.0f, 1.0f, 0.0f }},
-		{{0.5f,  0.5f, 0.0f}, { 0.0f, 0.0f, 1.0f }},
-	};
-
-	auto mesh{ std::make_shared<coral_mesh>(device_, vertices) };
-	auto triangle = coral_gameobject::create_gameobject();
-	triangle.mesh_ = mesh;
-	triangle.color_ = { 0.1f, 0.8f, 0.1f };
-	triangle.transform_.translation.x = -.2f;
-
-	gameobjects_.emplace_back(std::move(triangle));
+    std::shared_ptr<coral_mesh> mesh {create_cube_model(device_, { 0.f, 0.f, 0.f })};
+
+    auto cube{ coral_gameobject::create_gameobject() };
+    cube.mesh_ = mesh;
+    cube.transform_.translation = { 0.f, 0.f, 2.5f };
+    cube.transform_.scale = { 0.5f, 0.5f, 0.5f };
+
+    gameobjects_.emplace_back(std::move(cube));
 }

+ 8 - 5
coral_renderer/render_system.cpp

@@ -7,8 +7,7 @@ using namespace coral_3d;
 
 struct PushConstant
 {
-	alignas(16) glm::mat3 transform;
-	alignas(16) glm::vec3 offset;
+	glm::mat4 transform;
 	alignas(16) glm::vec3 color;
 };
 
@@ -24,16 +23,20 @@ render_system::~render_system()
 	vkDestroyPipelineLayout(device_.device(), pipeline_layout_, nullptr);
 }
 
-void render_system::render_gameobjects(VkCommandBuffer command_buffer, std::vector<coral_gameobject>& gameobjects)
+void render_system::render_gameobjects(VkCommandBuffer command_buffer, std::vector<coral_gameobject>& gameobjects, const coral_camera& camera)
 {
 	pipeline_->bind(command_buffer);
 
+	auto view_projection{ camera.get_projection() * camera.get_view() };
+
 	for (auto& obj : gameobjects)
 	{
+		obj.transform_.rotation.y = glm::mod(obj.transform_.rotation.y + 0.001f, glm::two_pi<float>());
+		obj.transform_.rotation.x = glm::mod(obj.transform_.rotation.x + 0.0005f, glm::two_pi<float>());
+
 		PushConstant push{};
-		push.offset = obj.transform_.translation;
 		push.color = obj.color_;
-		push.transform = obj.transform_.mat3();
+		push.transform = view_projection * obj.transform_.mat4();
 
 		vkCmdPushConstants(
 			command_buffer,

+ 5 - 1
coral_renderer/render_system.h

@@ -1,5 +1,6 @@
 #pragma once
 
+#include "coral_camera.h"
 #include "coral_device.h"
 #include "coral_pipeline.h"
 #include "coral_gameobject.h"
@@ -19,7 +20,10 @@ namespace coral_3d
 		render_system(const render_system&) = delete;
 		render_system& operator=(const render_system&) = delete;
 
-		void render_gameobjects(VkCommandBuffer command_buffer, std::vector<coral_gameobject>& gameobjects);
+		void render_gameobjects(
+			VkCommandBuffer command_buffer,
+			std::vector<coral_gameobject>& gameobjects,
+			const coral_camera& camera);
 
 	private:
 		void create_pipeline_layout();

+ 2 - 2
out/build/x64-Release/.cmake/api/v1/reply/codemodel-v2-74daa3b1014395a5e6a4.json → out/build/x64-Release/.cmake/api/v1/reply/codemodel-v2-19a43a6c5baff96e8ec6.json

@@ -139,14 +139,14 @@
 				{
 					"directoryIndex" : 1,
 					"id" : "Shaders::@189d46817749ee15bd40",
-					"jsonFile" : "target-Shaders-Release-13841c2b337be2ce961a.json",
+					"jsonFile" : "target-Shaders-Release-24a7ff2a37f176f95f3d.json",
 					"name" : "Shaders",
 					"projectIndex" : 0
 				},
 				{
 					"directoryIndex" : 1,
 					"id" : "coral_renderer::@189d46817749ee15bd40",
-					"jsonFile" : "target-coral_renderer-Release-4c330dfb115919c6410b.json",
+					"jsonFile" : "target-coral_renderer-Release-5b8532511eb50feed1d2.json",
 					"name" : "coral_renderer",
 					"projectIndex" : 0
 				},

+ 2 - 2
out/build/x64-Release/.cmake/api/v1/reply/index-2023-07-04T21-27-50-0673.json → out/build/x64-Release/.cmake/api/v1/reply/index-2023-07-04T23-06-34-0513.json

@@ -26,7 +26,7 @@
 	"objects" : 
 	[
 		{
-			"jsonFile" : "codemodel-v2-74daa3b1014395a5e6a4.json",
+			"jsonFile" : "codemodel-v2-19a43a6c5baff96e8ec6.json",
 			"kind" : "codemodel",
 			"version" : 
 			{
@@ -108,7 +108,7 @@
 						}
 					},
 					{
-						"jsonFile" : "codemodel-v2-74daa3b1014395a5e6a4.json",
+						"jsonFile" : "codemodel-v2-19a43a6c5baff96e8ec6.json",
 						"kind" : "codemodel",
 						"version" : 
 						{

+ 1 - 1
out/build/x64-Release/.cmake/api/v1/reply/target-Shaders-Release-13841c2b337be2ce961a.json → out/build/x64-Release/.cmake/api/v1/reply/target-Shaders-Release-24a7ff2a37f176f95f3d.json

@@ -18,7 +18,7 @@
 			{
 				"command" : 0,
 				"file" : 0,
-				"line" : 63,
+				"line" : 65,
 				"parent" : 0
 			}
 		]

+ 22 - 8
out/build/x64-Release/.cmake/api/v1/reply/target-coral_renderer-Release-4c330dfb115919c6410b.json → out/build/x64-Release/.cmake/api/v1/reply/target-coral_renderer-Release-5b8532511eb50feed1d2.json

@@ -46,7 +46,7 @@
 			{
 				"command" : 2,
 				"file" : 0,
-				"line" : 26,
+				"line" : 28,
 				"parent" : 0
 			},
 			{
@@ -131,23 +131,24 @@
 				15,
 				17,
 				19,
-				21
+				21,
+				23
 			]
 		}
 	],
 	"dependencies" : 
 	[
 		{
-			"backtrace" : 3,
-			"id" : "tinyobjloader::@037116246cbfaaeb5504"
+			"backtrace" : 4,
+			"id" : "Shaders::@189d46817749ee15bd40"
 		},
 		{
 			"backtrace" : 3,
 			"id" : "vkbootstrap::@037116246cbfaaeb5504"
 		},
 		{
-			"backtrace" : 4,
-			"id" : "Shaders::@189d46817749ee15bd40"
+			"backtrace" : 3,
+			"id" : "tinyobjloader::@037116246cbfaaeb5504"
 		},
 		{
 			"backtrace" : 3,
@@ -222,7 +223,8 @@
 				15,
 				17,
 				19,
-				21
+				21,
+				23
 			]
 		},
 		{
@@ -239,7 +241,8 @@
 				14,
 				16,
 				18,
-				20
+				20,
+				22
 			]
 		}
 	],
@@ -365,6 +368,17 @@
 			"compileGroupIndex" : 0,
 			"path" : "coral_renderer/render_system.cpp",
 			"sourceGroupIndex" : 0
+		},
+		{
+			"backtrace" : 1,
+			"path" : "coral_renderer/coral_camera.h",
+			"sourceGroupIndex" : 1
+		},
+		{
+			"backtrace" : 1,
+			"compileGroupIndex" : 0,
+			"path" : "coral_renderer/coral_camera.cpp",
+			"sourceGroupIndex" : 0
 		}
 	],
 	"type" : "EXECUTABLE"

BIN
out/build/x64-Release/.ninja_deps


+ 114 - 43
out/build/x64-Release/.ninja_log

@@ -1,51 +1,122 @@
 # ninja log v5
-51	585	7101968576661529	third_party/GLFW/src/CMakeFiles/glfw.dir/monitor.c.obj	a2d560a1e4312b87
+50	681	7102126824095224	third_party/GLFW/src/CMakeFiles/glfw.dir/monitor.c.obj	a2d560a1e4312b87
 10	1624	7100852052033876	vk_renderer/CMakeFiles/vulkan_renderer.dir/main.cpp.obj	e44a32bfa2e07c95
-74	623	7101968577321719	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	f8a96148e57fbac5
-277	795	7101968579178741	third_party/GLFW/src/CMakeFiles/glfw.dir/egl_context.c.obj	abcd2eacde575f89
-57	562	7101968576651531	third_party/GLFW/src/CMakeFiles/glfw.dir/vulkan.c.obj	50112318efae01fe
-62	593	7101968576961605	third_party/GLFW/src/CMakeFiles/glfw.dir/window.c.obj	b267b6f52b0557e
-283	786	7101968579148730	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	2663e4857ff8180d
-1106	1400	7101970343569400	coral_renderer/coral_renderer.exe	f655b1ed9e317b83
-127	1291	7101970205084471	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
-89	552	7101968576481500	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_thread.c.obj	6c2cec83621ddafc
-68	578	7101968576821574	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_init.c.obj	68f7b915a77efee8
-84	602	7101968577041632	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	884400c2fc506c25
-35	613	7101968577406807	third_party/GLFW/src/CMakeFiles/glfw.dir/context.c.obj	c45289d746a8bc32
-40	630	7101968577466864	third_party/GLFW/src/CMakeFiles/glfw.dir/init.c.obj	59423db8be81fe6
-78	631	7101968577466864	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	99a9a2c52140eb32
-271	828	7101968579598803	third_party/GLFW/src/CMakeFiles/glfw.dir/wgl_context.c.obj	532aed61a4fce8b6
+70	683	7102126824315270	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_joystick.c.obj	f8a96148e57fbac5
+217	682	7102126824245267	third_party/GLFW/src/CMakeFiles/glfw.dir/egl_context.c.obj	abcd2eacde575f89
+56	671	7102126824055225	third_party/GLFW/src/CMakeFiles/glfw.dir/vulkan.c.obj	50112318efae01fe
+61	677	7102126824085220	third_party/GLFW/src/CMakeFiles/glfw.dir/window.c.obj	b267b6f52b0557e
+223	680	7102126823755150	third_party/GLFW/src/CMakeFiles/glfw.dir/osmesa_context.c.obj	2663e4857ff8180d
+1065	1476	7102130779433506	coral_renderer/coral_renderer.exe	b68df8e0d5188ad5
+5	1064	7102130775801368	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+83	679	7102126824075226	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_thread.c.obj	6c2cec83621ddafc
+65	682	7102126824185240	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_init.c.obj	68f7b915a77efee8
+78	663	7102126823735145	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_time.c.obj	884400c2fc506c25
+35	675	7102126824185240	third_party/GLFW/src/CMakeFiles/glfw.dir/context.c.obj	c45289d746a8bc32
+40	683	7102126823985216	third_party/GLFW/src/CMakeFiles/glfw.dir/init.c.obj	59423db8be81fe6
+73	667	7102126823785162	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_monitor.c.obj	99a9a2c52140eb32
+211	684	7102126824265268	third_party/GLFW/src/CMakeFiles/glfw.dir/wgl_context.c.obj	532aed61a4fce8b6
 30	3108	7100852066890285	vk_renderer/CMakeFiles/vulkan_renderer.dir/vk_texture.cpp.obj	97e74f432a0b38ea
-46	632	7101968577606898	third_party/GLFW/src/CMakeFiles/glfw.dir/input.c.obj	f38aba24622454d4
-828	897	7101968580226664	third_party/GLFW/src/glfw3.lib	90fe5d3bf3988c3
+45	705	7102126824555345	third_party/GLFW/src/CMakeFiles/glfw.dir/input.c.obj	f38aba24622454d4
+26	63	7102127251307962	third_party/GLFW/src/glfw3.lib	90fe5d3bf3988c3
 18	258	7100852038349954	vk_renderer/CMakeFiles/vulkan_renderer.dir/vk_initializers.cpp.obj	1a23cbea97f95bc8
-95	724	7101968578387270	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_window.c.obj	527eb72162ba2c60
-10	270	7101968573756798	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.frag.spv	448936cb354b7e2
-593	1306	7101968584350051	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	aa9d2c8a14870cfd
-26	2891	7101968600170036	third_party/CMakeFiles/vkbootstrap.dir/vkbootstrap/VkBootstrap.cpp.obj	862a6e5bff7e48ac
-2891	2959	7101968600887036	third_party/vkbootstrap.lib	b339a5cc36d209fb
-30	3346	7101968604738411	third_party/CMakeFiles/tinyobjloader.dir/tinyobjloader/tiny_obj_loader.cc.obj	7e86ec27a38d2d6c
-3347	3385	7101968605171370	third_party/tinyobjloader.lib	c2812261322ebfda
-14	277	7101968573896827	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	565da56699a6ae9f
-10	25	0	clean	21a4d0550fd2b6b1
-578	2574	7101968596984859	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	547825035d4ce491
+88	720	7102126824706498	third_party/GLFW/src/CMakeFiles/glfw.dir/win32_window.c.obj	527eb72162ba2c60
+9	211	7102126819428892	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.frag.spv	448936cb354b7e2
+146	891	7102127259543638	coral_renderer/CMakeFiles/coral_renderer.dir/vk_initializers.cpp.obj	aa9d2c8a14870cfd
+27	1784	7102126835298870	third_party/CMakeFiles/vkbootstrap.dir/vkbootstrap/VkBootstrap.cpp.obj	862a6e5bff7e48ac
+18	56	7102127251209904	third_party/vkbootstrap.lib	b339a5cc36d209fb
+30	2098	7102126838439613	third_party/CMakeFiles/tinyobjloader.dir/tinyobjloader/tiny_obj_loader.cc.obj	7e86ec27a38d2d6c
+22	59	7102127251255541	third_party/tinyobjloader.lib	c2812261322ebfda
+14	217	7102126819558950	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/PosNormCol.vert.spv	565da56699a6ae9f
+7	18	0	clean	21a4d0550fd2b6b1
+137	1761	7102127268251923	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	547825035d4ce491
 22	1341	7100852049212694	vk_renderer/CMakeFiles/vulkan_renderer.dir/vk_pipeline.cpp.obj	f2ccefde0539b7f9
 26	1697	7100852052759820	vk_renderer/CMakeFiles/vulkan_renderer.dir/vk_mesh.cpp.obj	19e27ee69060c408
 14	4028	7100852076065734	vk_renderer/CMakeFiles/vulkan_renderer.dir/vk_engine.cpp.obj	2c2e8f4c68659d3e
 4028	4204	7100852077869201	vk_renderer/vulkan_renderer.exe	4a4de8c4dd150dc4
-17	1105	7101970341163279	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
-553	1352	7101968584818420	coral_renderer/CMakeFiles/coral_renderer.dir/coral_window.cpp.obj	8f70bdc66a8c898
-5	127	7101970193471740	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	8117d59f521bfb38
-18	283	7101968573906826	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c6f90537dba2deae
-602	2249	7101968593776873	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
-585	3500	7101968606280340	coral_renderer/CMakeFiles/coral_renderer.dir/coral_device.cpp.obj	54ea3dd64d178489
-613	2801	7101968599296036	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	c9cebafec58901df
-624	1989	7101968591065934	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	64827c5e097e7ac3
-14	131	7102092808514442	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	8117d59f521bfb38
-148	860	7102092815804843	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
-153	1083	7102092818017321	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	cb6eac27cd1d72a5
-135	1161	7102092818794205	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
-144	1208	7102092819273977	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
-131	1391	7102092821088656	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
-140	1424	7102092821428842	coral_renderer/CMakeFiles/coral_renderer.dir/coral_pipeline.cpp.obj	547825035d4ce491
-1425	1872	7102092825435598	coral_renderer/coral_renderer.exe	b68df8e0d5188ad5
+10	1025	7102130775411365	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+129	917	7102127259801014	coral_renderer/CMakeFiles/coral_renderer.dir/coral_window.cpp.obj	8f70bdc66a8c898
+13	125	7102127251911242	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.vert.spv	8117d59f521bfb38
+18	222	7102126819684034	C:/Game Development/Visual Studio Solutions/Coral3D/shaders/compiled/simple_shader.frag.spv	c6f90537dba2deae
+149	1517	7102127265790692	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
+142	2441	7102127275039223	coral_renderer/CMakeFiles/coral_renderer.dir/coral_device.cpp.obj	54ea3dd64d178489
+153	1767	7102127268302053	coral_renderer/CMakeFiles/coral_renderer.dir/coral_mesh.cpp.obj	c9cebafec58901df
+14	859	7102130773755583	coral_renderer/CMakeFiles/coral_renderer.dir/coral_gameobject.cpp.obj	64827c5e097e7ac3
+161	1127	7102127261896277	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+19	918	7102130774326921	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	cb6eac27cd1d72a5
+21	716	7102158197610752	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+16	997	7102158200409331	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	cb6eac27cd1d72a5
+11	1118	7102158201623766	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1118	1542	7102158205342350	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+42	689	7102159563830917	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+38	983	7102159566746622	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+19	1041	7102159567340627	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+1041	1550	7102159571493579	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	1122	7102159856360521	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1123	1436	7102159858999859	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	1132	7102160047528474	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1133	1531	7102160050810655	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	1176	7102160572369223	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1177	1477	7102160574872449	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	593	7102160848037118	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+593	908	7102160850663057	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	1130	7102161085103394	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1130	1479	7102161087733749	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+5	690	7102163400875373	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+691	983	7102163403287899	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+29	715	7102163692831877	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+24	1014	7102163695787932	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
+19	1070	7102163696356324	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+14	1110	7102163696771467	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+1110	1404	7102163699227671	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+25	693	7102163905992083	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+20	991	7102163908972175	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
+16	1048	7102163909552318	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+12	1101	7102163910085113	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+1101	1399	7102163912564723	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+17	673	7102164148306816	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+13	986	7102164151422559	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
+9	1043	7102164152006662	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+4	1095	7102164152527956	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+1095	1379	7102164154909120	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+37	810	7102178414626905	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+28	841	7102178414927755	coral_renderer/CMakeFiles/coral_renderer.dir/coral_renderer.cpp.obj	417b97074434047c
+33	1181	7102178418279031	coral_renderer/CMakeFiles/coral_renderer.dir/render_system.cpp.obj	cb6eac27cd1d72a5
+24	1260	7102178419107237	coral_renderer/CMakeFiles/coral_renderer.dir/coral_swapchain.cpp.obj	73d0ad4b7fd6b8be
+19	1306	7102178419591441	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+14	1359	7102178420128290	coral_renderer/CMakeFiles/coral_renderer.dir/main.cpp.obj	b04a92f83a26ca98
+1359	1850	7102178424176908	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+4	457	7102178755614565	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+457	752	7102178758052375	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	477	7102178900545684	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+478	805	7102178903273885	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	475	7102179063238432	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+475	757	7102179065595779	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	461	7102179176417957	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+461	778	7102179178978719	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	597	7102179520465100	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+598	896	7102179522930281	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	1009	7102179848739884	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1010	1305	7102179851227247	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	955	7102180076079940	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+955	1248	7102180078505835	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+18	472	7102180284045865	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+13	911	7102180288424061	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+911	1189	7102180290755580	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	476	7102180372900088	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+477	831	7102180375789652	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	475	7102180485499742	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+475	792	7102180488132104	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	460	7102180792875741	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+461	757	7102180795299500	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+12	980	7102181003136919	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+13	923	7102181202687497	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+13	454	7102181286013450	coral_renderer/CMakeFiles/coral_renderer.dir/coral_camera.cpp.obj	eca59a616825941f
+454	760	7102181288398842	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	991	7102181869073383	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+992	1289	7102181871537925	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+14	1167	7102182195903293	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1167	1501	7102182198658847	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+13	1019	7102182396648902	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1020	1473	7102182400651387	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8
+15	1103	7102182625353140	coral_renderer/CMakeFiles/coral_renderer.dir/first_app.cpp.obj	f6aa697f38bcc8c1
+1104	1423	7102182628008324	coral_renderer/coral_renderer.exe	d416f8fc23a46fc8

+ 2 - 2
out/build/x64-Release/Testing/Temporary/LastTest.log

@@ -1,3 +1,3 @@
-Start testing: Jul 04 23:27 Romance Daylight Time
+Start testing: Jul 05 01:06 Romance Daylight Time
 ----------------------------------------------------------
-End testing: Jul 04 23:27 Romance Daylight Time
+End testing: Jul 05 01:06 Romance Daylight Time

+ 9 - 1
out/build/x64-Release/build.ninja

@@ -195,6 +195,14 @@ build coral_renderer\CMakeFiles\coral_renderer.dir\render_system.cpp.obj: CXX_CO
   TARGET_COMPILE_PDB = coral_renderer\CMakeFiles\coral_renderer.dir\
   TARGET_PDB = coral_renderer\coral_renderer.pdb
 
+build coral_renderer\CMakeFiles\coral_renderer.dir\coral_camera.cpp.obj: CXX_COMPILER__coral_renderer_unscanned_Release C$:\Game$ Development\Visual$ Studio$ Solutions\Coral3D\coral_renderer\coral_camera.cpp || cmake_object_order_depends_target_coral_renderer
+  FLAGS = /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++latest -MD /W4 /WX /w
+  INCLUDES = -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\GLFW\include" -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\glm" -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\vkbootstrap" -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\tinyobjloader" -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\vma" -I"C:\Game Development\Visual Studio Solutions\Coral3D\third_party\stb_image" -external:IC:\VulkanSDK\1.3.250.0\Include -external:W0
+  OBJECT_DIR = coral_renderer\CMakeFiles\coral_renderer.dir
+  OBJECT_FILE_DIR = coral_renderer\CMakeFiles\coral_renderer.dir
+  TARGET_COMPILE_PDB = coral_renderer\CMakeFiles\coral_renderer.dir\
+  TARGET_PDB = coral_renderer\coral_renderer.pdb
+
 
 # =============================================================================
 # Link build statements for EXECUTABLE target coral_renderer
@@ -203,7 +211,7 @@ build coral_renderer\CMakeFiles\coral_renderer.dir\render_system.cpp.obj: CXX_CO
 #############################################
 # Link the executable coral_renderer\coral_renderer.exe
 
-build coral_renderer\coral_renderer.exe: CXX_EXECUTABLE_LINKER__coral_renderer_Release coral_renderer\CMakeFiles\coral_renderer.dir\main.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_window.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\first_app.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_pipeline.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_device.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\vk_initializers.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_swapchain.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_mesh.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_gameobject.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_renderer.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\render_system.cpp.obj | C$:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib third_party\GLFW\src\glfw3.lib third_party\vkbootstrap.lib third_party\tinyobjloader.lib C$:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib || coral_renderer\Shaders third_party\GLFW\src\glfw3.lib third_party\tinyobjloader.lib third_party\vkbootstrap.lib
+build coral_renderer\coral_renderer.exe: CXX_EXECUTABLE_LINKER__coral_renderer_Release coral_renderer\CMakeFiles\coral_renderer.dir\main.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_window.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\first_app.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_pipeline.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_device.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\vk_initializers.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_swapchain.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_mesh.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_gameobject.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_renderer.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\render_system.cpp.obj coral_renderer\CMakeFiles\coral_renderer.dir\coral_camera.cpp.obj | C$:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib third_party\GLFW\src\glfw3.lib third_party\vkbootstrap.lib third_party\tinyobjloader.lib C$:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib || coral_renderer\Shaders third_party\GLFW\src\glfw3.lib third_party\tinyobjloader.lib third_party\vkbootstrap.lib
   FLAGS = /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -MD
   LINK_FLAGS = /machine:x64 /INCREMENTAL:NO /subsystem:console
   LINK_LIBRARIES = C:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib  third_party\GLFW\src\glfw3.lib  third_party\vkbootstrap.lib  third_party\tinyobjloader.lib  C:\VulkanSDK\1.3.250.0\Lib\vulkan-1.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib

BIN
out/build/x64-Release/coral_renderer/shaders/simple_shader.frag.spv


BIN
out/build/x64-Release/coral_renderer/shaders/simple_shader.vert.spv


BIN
shaders/compiled/simple_shader.frag.spv


BIN
shaders/compiled/simple_shader.vert.spv


+ 5 - 3
shaders/simple_shader.frag

@@ -1,15 +1,17 @@
 #version 450
 
+layout (location = 0) in vec3 fragColor;
+
 layout (location = 0) out vec4 outColor;
 
 layout (push_constant) uniform Push
 {
-	mat3 transform;
-	vec3 offset;
+	mat4 transform;
 	vec3 color;
 } push;
 
+
 void main()
 {
-  outColor = vec4(push.color, 1.0f);
+	outColor = vec4(fragColor, 1.0f);
 }

+ 5 - 3
shaders/simple_shader.vert

@@ -3,14 +3,16 @@
 layout (location = 0) in vec3 position;
 layout (location = 1) in vec3 color;
 
+layout (location = 0) out vec3 fragColor;
+
 layout (push_constant) uniform Push
 {
-	mat3 transform;
-	vec3 offset;
+	mat4 transform;
 	vec3 color;
 } push;
 
 void main() 
 {
-	gl_Position = vec4(position + push.offset, 1.0f);
+	gl_Position = push.transform * vec4(position, 1.0f);
+	fragColor = color;
 }