diff --git a/CMakeLists.txt b/CMakeLists.txt index 96e3f67..e4bbf72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,14 +30,16 @@ function(add_shaders TARGET) endfunction() add_executable(vk_expe + src/core/math.cpp + src/core/utils.cpp + src/core/Logger.cpp + src/vk/Context.cpp src/vk/Swapchain.cpp src/vk/Memory.cpp src/vk/Buffer.cpp src/main.cpp - src/utils.cpp src/Simplex.cpp - src/Logger.cpp src/Planet.cpp src/VkExpe.cpp src/VulkanTutorial.cpp diff --git a/src/Planet.cpp b/src/Planet.cpp index a7b803d..37fb79e 100644 --- a/src/Planet.cpp +++ b/src/Planet.cpp @@ -1,6 +1,7 @@ #include -#include + +#include #include #include diff --git a/src/Planet.h b/src/Planet.h index 12aaf28..1a7b96b 100644 --- a/src/Planet.h +++ b/src/Planet.h @@ -1,6 +1,7 @@ #pragma once -#include +#include +#include #include #include diff --git a/src/Simplex.h b/src/Simplex.h index f1e7b91..4501bc2 100644 --- a/src/Simplex.h +++ b/src/Simplex.h @@ -1,6 +1,7 @@ #pragma once -#include +#include +#include class Simplex { diff --git a/src/VkExpe.cpp b/src/VkExpe.cpp index 08b0948..448fdef 100644 --- a/src/VkExpe.cpp +++ b/src/VkExpe.cpp @@ -1,7 +1,7 @@ #include -#include -#include +#include +#include #include #include diff --git a/src/VkExpe.h b/src/VkExpe.h index be26486..e36371b 100644 --- a/src/VkExpe.h +++ b/src/VkExpe.h @@ -1,8 +1,9 @@ #pragma once -#include #include +#include + #include #include diff --git a/src/VulkanTutorial.cpp b/src/VulkanTutorial.cpp index d4bb49a..0438ac0 100644 --- a/src/VulkanTutorial.cpp +++ b/src/VulkanTutorial.cpp @@ -1,9 +1,10 @@ #include -#include -#include #include +#include +#include + #include #include diff --git a/src/VulkanTutorial.h b/src/VulkanTutorial.h index 900476d..fc86fe6 100644 --- a/src/VulkanTutorial.h +++ b/src/VulkanTutorial.h @@ -1,14 +1,17 @@ #pragma once -#include - #include #include #include +#include + #include + #include + #include + #include #include diff --git a/src/core.h b/src/core/ArrayView.h similarity index 58% rename from src/core.h rename to src/core/ArrayView.h index 892daeb..9ee4b30 100644 --- a/src/core.h +++ b/src/core/ArrayView.h @@ -1,51 +1,7 @@ #pragma once -#include - -#include - - -using Byte = unsigned char; -using Index = uint32_t; - -using Real = float; - -using Vector2 = Eigen::Matrix; -using Vector3 = Eigen::Matrix; -using Vector4 = Eigen::Matrix; - -using Matrix2 = Eigen::Matrix; -using Matrix3 = Eigen::Matrix; -using Matrix4 = Eigen::Matrix; - -using Transform = Eigen::Transform; -using AngleAxis = Eigen::AngleAxis; -using Quaternion = Eigen::Quaternion; - -using Triangle = Eigen::Array; - - -template -auto lerp( - Scalar factor, - const Eigen::MatrixBase& m0, - const Eigen::MatrixBase& m1 -) -> std::enable_if_t< - Derived0::RowsAtCompileTime == Derived1::RowsAtCompileTime && - Derived0::ColsAtCompileTime == Derived1::ColsAtCompileTime, - Eigen::Matrix< - std::common_type_t< - Scalar, - typename Derived0::Scalar, - typename Derived1::Scalar - >, - Derived0::RowsAtCompileTime, - Derived0::ColsAtCompileTime - > -> { - return (Scalar(1) - factor) * m0 + factor * m1; -} +#include template diff --git a/src/Logger.cpp b/src/core/Logger.cpp similarity index 95% rename from src/Logger.cpp rename to src/core/Logger.cpp index 7d76816..230e85a 100644 --- a/src/Logger.cpp +++ b/src/core/Logger.cpp @@ -1,4 +1,4 @@ -#include +#include #include diff --git a/src/Logger.h b/src/core/Logger.h similarity index 100% rename from src/Logger.h rename to src/core/Logger.h diff --git a/src/utils.cpp b/src/core/math.cpp similarity index 68% rename from src/utils.cpp rename to src/core/math.cpp index bfa7670..7e23ff9 100644 --- a/src/utils.cpp +++ b/src/core/math.cpp @@ -1,28 +1,5 @@ -#include +#include -#include -#include - - -Uuid make_uuid(uint8_t const* bytes) { - Uuid uuid; - std::memcpy(uuid.data(), bytes, UUID_SIZE); - return uuid; -} - -std::vector read_binary_file(const char* path) { - std::ifstream istream(path, std::ios_base::ate | std::ios_base::binary); - if(!istream.is_open()) - throw std::runtime_error(cat("failed to open '", path, "'")); - - std::vector buffer(size_t(istream.tellg())); - - istream.seekg(0); - istream.read(buffer.data(), buffer.size()); - istream.close(); - - return buffer; -} Eigen::Matrix4f projection_matrix(float x_min, float x_max, float y_min, float y_max, float z_min, float z_max) { auto const cx = x_max + x_min; diff --git a/src/core/math.h b/src/core/math.h new file mode 100644 index 0000000..ae9efce --- /dev/null +++ b/src/core/math.h @@ -0,0 +1,54 @@ +#pragma once + + +#include + +#include + +#include + + +using Real = float; + +using Vector2 = Eigen::Matrix; +using Vector3 = Eigen::Matrix; +using Vector4 = Eigen::Matrix; + +using Matrix2 = Eigen::Matrix; +using Matrix3 = Eigen::Matrix; +using Matrix4 = Eigen::Matrix; + +using Transform = Eigen::Transform; +using AngleAxis = Eigen::AngleAxis; +using Quaternion = Eigen::Quaternion; + +using Triangle = Eigen::Array; + + +template +auto lerp( + Scalar factor, + const Eigen::MatrixBase& m0, + const Eigen::MatrixBase& m1 +) -> std::enable_if_t< + Derived0::RowsAtCompileTime == Derived1::RowsAtCompileTime && + Derived0::ColsAtCompileTime == Derived1::ColsAtCompileTime, + Eigen::Matrix< + std::common_type_t< + Scalar, + typename Derived0::Scalar, + typename Derived1::Scalar + >, + Derived0::RowsAtCompileTime, + Derived0::ColsAtCompileTime + > +> { + return (Scalar(1) - factor) * m0 + factor * m1; +} + +Eigen::Matrix4f projection_matrix(float x_min, float x_max, float y_min, float y_max, float z_min, float z_max); +Eigen::Matrix4f look_at_matrix( + const Eigen::Vector3f& cam_pos, + const Eigen::Vector3f& look_at, + const Eigen::Vector3f& up +); diff --git a/src/core/types.h b/src/core/types.h new file mode 100644 index 0000000..f26c2a8 --- /dev/null +++ b/src/core/types.h @@ -0,0 +1,10 @@ +#pragma once + + +#include + +#include + + +using Byte = unsigned char; +using Index = uint32_t; diff --git a/src/core/utils.cpp b/src/core/utils.cpp new file mode 100644 index 0000000..c1d5a66 --- /dev/null +++ b/src/core/utils.cpp @@ -0,0 +1,26 @@ +#include + +#include +#include + + +Uuid make_uuid(uint8_t const* bytes) { + Uuid uuid; + std::memcpy(uuid.data(), bytes, UUID_SIZE); + return uuid; +} + +std::vector read_binary_file(const char* path) { + std::ifstream istream(path, std::ios_base::ate | std::ios_base::binary); + if(!istream.is_open()) + throw std::runtime_error(cat("failed to open '", path, "'")); + + std::vector buffer(size_t(istream.tellg())); + + istream.seekg(0); + istream.read(buffer.data(), buffer.size()); + istream.close(); + + return buffer; +} + diff --git a/src/utils.h b/src/core/utils.h similarity index 83% rename from src/utils.h rename to src/core/utils.h index 4c00743..8b56d2b 100644 --- a/src/utils.h +++ b/src/core/utils.h @@ -1,7 +1,5 @@ #pragma once -#include - #include #include #include @@ -33,6 +31,7 @@ Guard make_guard(T&& teardown) { return Guard(std::move(teardown)); } + template std::string cat(Args&&... args) { std::ostringstream ostream; @@ -40,8 +39,10 @@ std::string cat(Args&&... args) { return ostream.str(); } + std::vector read_binary_file(const char* path); + template class Array { public: @@ -76,10 +77,3 @@ private: size_t m_size = 0; T* m_data = nullptr; }; - -Eigen::Matrix4f projection_matrix(float x_min, float x_max, float y_min, float y_max, float z_min, float z_max); -Eigen::Matrix4f look_at_matrix( - const Eigen::Vector3f& cam_pos, - const Eigen::Vector3f& look_at, - const Eigen::Vector3f& up -); diff --git a/src/main.cpp b/src/main.cpp index 2a541b1..f29c4e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ -#include #include +#include + int main(int argc, char** argv) { VkExpe vk_expe(argc, argv); diff --git a/src/vk/Buffer.cpp b/src/vk/Buffer.cpp index bd72ba9..df291d7 100644 --- a/src/vk/Buffer.cpp +++ b/src/vk/Buffer.cpp @@ -1,6 +1,7 @@ #include #include -#include + +#include #include #include diff --git a/src/vk/Buffer.h b/src/vk/Buffer.h index e6f8e88..5782ea7 100644 --- a/src/vk/Buffer.h +++ b/src/vk/Buffer.h @@ -1,10 +1,10 @@ #pragma once -#include - #include #include +#include + #include #include diff --git a/src/vk/Context.cpp b/src/vk/Context.cpp index 660cc77..c475162 100644 --- a/src/vk/Context.cpp +++ b/src/vk/Context.cpp @@ -1,8 +1,8 @@ #include #include -#include -#include +#include +#include #include diff --git a/src/vk/Context.h b/src/vk/Context.h index b9762f3..63c4faf 100644 --- a/src/vk/Context.h +++ b/src/vk/Context.h @@ -1,10 +1,12 @@ #pragma once -#include -#include #include +#include +#include + #include + #include #include diff --git a/src/vk/Swapchain.cpp b/src/vk/Swapchain.cpp index e4e8be5..da07eba 100644 --- a/src/vk/Swapchain.cpp +++ b/src/vk/Swapchain.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include diff --git a/src/vk/Swapchain.h b/src/vk/Swapchain.h index d3bf520..736de04 100644 --- a/src/vk/Swapchain.h +++ b/src/vk/Swapchain.h @@ -1,9 +1,11 @@ #pragma once #include -#include + +#include #include + #include #include