diff --git a/.gitmodules b/.gitmodules index 452ff15..e0a42db 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,27 +1,27 @@ [submodule "third_party/sdl2"] - path = third_party/sdl2 + path = samples/extern/sdl2 url = https://github.com/libsdl-org/SDL.git [submodule "third_party/glm"] - path = third_party/glm + path = samples/extern/glm url = https://github.com/g-truc/glm.git [submodule "third_party/glslang"] - path = third_party/glslang + path = extern/glslang url = https://github.com/KhronosGroup/glslang.git [submodule "third_party/SPIRV-Tools"] - path = third_party/SPIRV-Tools + path = extern/SPIRV-Tools url = https://github.com/KhronosGroup/SPIRV-Tools.git [submodule "third_party/SPIRV-Headers"] - path = third_party/SPIRV-Headers + path = extern/SPIRV-Headers url = https://github.com/KhronosGroup/SPIRV-Headers.git [submodule "third_party/shaderc"] - path = third_party/shaderc + path = extern/shaderc url = https://github.com/google/shaderc.git [submodule "third_party/vma-hpp"] - path = third_party/vma-hpp + path = extern/vma-hpp url = https://github.com/stuart6854/VulkanMemoryAllocator-Hpp.git [submodule "third_party/Vulkan-Headers"] - path = third_party/Vulkan-Headers + path = extern/Vulkan-Headers url = https://github.com/KhronosGroup/Vulkan-Headers.git [submodule "third_party/fmt"] - path = third_party/fmt + path = extern/fmt url = https://github.com/fmtlib/fmt.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 73f3ac2..7527c4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,10 @@ project(VkMana VERSION 0.1.0 LANGUAGES C CXX) option(VKMANA_BUILD_SAMPLES "Build the sample projects" ON) -add_subdirectory(third_party) +add_subdirectory(extern) add_subdirectory(src) if(VKMANA_BUILD_SAMPLES) - add_subdirectory(samples) + add_subdirectory(samples EXCLUDE_FROM_ALL) endif () \ No newline at end of file diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt new file mode 100644 index 0000000..35a9342 --- /dev/null +++ b/extern/CMakeLists.txt @@ -0,0 +1,22 @@ +add_subdirectory(Vulkan-Headers) + +add_subdirectory(SPIRV-Headers) +add_subdirectory(SPIRV-Tools) +add_subdirectory(glslang) + +# vma-hpp +add_subdirectory(vma-hpp) + +# ShaderC +option(SHADERC_SKIP_INSTALL "Skip installation" ON) +option(SHADERC_SKIP_TESTS "Skip building tests" ON) +option(SHADERC_SKIP_EXAMPLES "Skip building examples" ON) +option(SHADERC_SKIP_COPYRIGHT_CHECK "Skip copyright check" ON) +option(SHADERC_ENABLE_SHARED_CRT "Use the shared CRT instead of the static CRT" ON) +add_subdirectory(shaderc) + +# FmtLib +if (NOT TARGET fmt) + option(FMT_INSTALL "Generate the install target." OFF) + add_subdirectory(fmt) +endif () \ No newline at end of file diff --git a/third_party/SPIRV-Headers b/extern/SPIRV-Headers similarity index 100% rename from third_party/SPIRV-Headers rename to extern/SPIRV-Headers diff --git a/third_party/SPIRV-Tools b/extern/SPIRV-Tools similarity index 100% rename from third_party/SPIRV-Tools rename to extern/SPIRV-Tools diff --git a/third_party/Vulkan-Headers b/extern/Vulkan-Headers similarity index 100% rename from third_party/Vulkan-Headers rename to extern/Vulkan-Headers diff --git a/third_party/fmt b/extern/fmt similarity index 100% rename from third_party/fmt rename to extern/fmt diff --git a/third_party/glslang b/extern/glslang similarity index 100% rename from third_party/glslang rename to extern/glslang diff --git a/third_party/shaderc b/extern/shaderc similarity index 100% rename from third_party/shaderc rename to extern/shaderc diff --git a/third_party/vma-hpp b/extern/vma-hpp similarity index 100% rename from third_party/vma-hpp rename to extern/vma-hpp diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 38d165b..722788f 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.10) project(samples LANGUAGES C CXX) +# Dependencies +add_subdirectory(extern) + +# Samples add_subdirectory(hello_triangle) add_subdirectory(model_loading) add_subdirectory(sandbox) diff --git a/samples/extern/CMakeLists.txt b/samples/extern/CMakeLists.txt new file mode 100644 index 0000000..1dae785 --- /dev/null +++ b/samples/extern/CMakeLists.txt @@ -0,0 +1,32 @@ +# sdl2 +option(SDL2_DISABLE_SDL2MAIN ON) +option(SDL2_DISABLE_INSTALL ON) +option(SDL2_DISABLE_UNINSTALL ON) +option(SDL_SHARED OFF) +option(SDL_TEST OFF) +option(SDL_TESTS OFF) +option(SDL_OPENGL OFF) +option(SDL_OPENGLES OFF) +option(SDL_DIRECTX OFF) +option(SDL_METAL OFF) +option(SDL_AUDIO OFF) +option(SDL_HAPTIC OFF) +option(SDL_Hidapi OFF) +option(SDL_Sensor OFF) +option(SDL_Locale OFF) +add_subdirectory(sdl2) +set_property(TARGET SDL2-static PROPERTY FOLDER "ThirdParty") + +# GLM +if (NOT TARGET glm) + add_subdirectory(glm) +endif () + +#stb +add_subdirectory(stb) + +# tinygltf +add_subdirectory(tinygltf) + +# tinyobjloader +add_subdirectory(tinyobjloader) \ No newline at end of file diff --git a/third_party/glm b/samples/extern/glm similarity index 100% rename from third_party/glm rename to samples/extern/glm diff --git a/third_party/sdl2 b/samples/extern/sdl2 similarity index 100% rename from third_party/sdl2 rename to samples/extern/sdl2 diff --git a/third_party/stb/CMakeLists.txt b/samples/extern/stb/CMakeLists.txt similarity index 100% rename from third_party/stb/CMakeLists.txt rename to samples/extern/stb/CMakeLists.txt diff --git a/third_party/stb/stb_image.h b/samples/extern/stb/stb_image.h similarity index 100% rename from third_party/stb/stb_image.h rename to samples/extern/stb/stb_image.h diff --git a/third_party/tinygltf/CMakeLists.txt b/samples/extern/tinygltf/CMakeLists.txt similarity index 100% rename from third_party/tinygltf/CMakeLists.txt rename to samples/extern/tinygltf/CMakeLists.txt diff --git a/third_party/tinygltf/json.hpp b/samples/extern/tinygltf/json.hpp similarity index 100% rename from third_party/tinygltf/json.hpp rename to samples/extern/tinygltf/json.hpp diff --git a/third_party/tinygltf/tiny_gltf.h b/samples/extern/tinygltf/tiny_gltf.h similarity index 100% rename from third_party/tinygltf/tiny_gltf.h rename to samples/extern/tinygltf/tiny_gltf.h diff --git a/third_party/tinyobjloader/CMakeLists.txt b/samples/extern/tinyobjloader/CMakeLists.txt similarity index 100% rename from third_party/tinyobjloader/CMakeLists.txt rename to samples/extern/tinyobjloader/CMakeLists.txt diff --git a/third_party/tinyobjloader/tiny_obj_loader.h b/samples/extern/tinyobjloader/tiny_obj_loader.h similarity index 100% rename from third_party/tinyobjloader/tiny_obj_loader.h rename to samples/extern/tinyobjloader/tiny_obj_loader.h diff --git a/samples/sandbox/CMakeLists.txt b/samples/sandbox/CMakeLists.txt index 4ddf7f3..7093fdf 100644 --- a/samples/sandbox/CMakeLists.txt +++ b/samples/sandbox/CMakeLists.txt @@ -7,6 +7,6 @@ add_executable(sample_sandbox src/ModelLoader.hpp ) -target_link_libraries(sample_sandbox PRIVATE VkMana glm tinygltf tinyobjloader stb) +target_link_libraries(sample_sandbox PRIVATE VkMana glm SDL2-static stb tinygltf tinyobjloader) target_compile_features(sample_sandbox PRIVATE cxx_std_20) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e6107bc..a78d116 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,11 +14,11 @@ add_library(VkMana target_include_directories(VkMana PRIVATE "./") target_include_directories(VkMana SYSTEM INTERFACE "./") -target_link_libraries(VkMana PRIVATE shaderc shaderc_util PUBLIC fmt::fmt Vulkan::Headers VulkanMemoryAllocator-Hpp SDL2-static) +target_link_libraries(VkMana PRIVATE shaderc shaderc_util PUBLIC fmt::fmt Vulkan::Headers VulkanMemoryAllocator-Hpp) target_compile_features(VkMana PUBLIC cxx_std_20) target_compile_options(VkMana PRIVATE $<$>:-Werror -pedantic-errors -Wall -Wno-unused -Wno-sign-compare> - $<$:/WX /W4 /external:anglebrackets /external:W0> + $<$:/WX /W4 /external:anglebrackets /external:W0 /wd4100> ) \ No newline at end of file diff --git a/src/VkMana/Context.cpp b/src/VkMana/Context.cpp index eb0341f..782f9f5 100644 --- a/src/VkMana/Context.cpp +++ b/src/VkMana/Context.cpp @@ -510,7 +510,7 @@ namespace VkMana auto mipWidth = int32_t(info.Width); auto mipHeight = int32_t(info.Height); - for (uint32_t i = 1u; i < info.MipLevels; ++i) + for (auto i = 1u; i < uint32_t(info.MipLevels); ++i) { // Transition src mip to TransferSrc ImageTransitionInfo srcTransition{ diff --git a/src/VkMana/Image.hpp b/src/VkMana/Image.hpp index 68c4c2a..ba0b3c6 100644 --- a/src/VkMana/Image.hpp +++ b/src/VkMana/Image.hpp @@ -50,7 +50,7 @@ namespace VkMana return ImageCreateInfo{ .Width = width, .Height = height, - .MipLevels = -1, + .MipLevels = mipLevels, .Format = vk::Format::eR8G8B8A8Unorm, .Usage = vk::ImageUsageFlagBits::eSampled | vk::ImageUsageFlagBits::eTransferDst | vk::ImageUsageFlagBits::eTransferSrc, .Flags = ImageCreateFlags_GenMipMaps, diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt deleted file mode 100644 index ab85fdb..0000000 --- a/third_party/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -add_subdirectory(Vulkan-Headers) - -add_subdirectory(SPIRV-Headers) -add_subdirectory(SPIRV-Tools) -add_subdirectory(glslang) - -# vma-hpp -add_subdirectory(vma-hpp) - -# ShaderC -option(SHADERC_SKIP_INSTALL "Skip installation" ON) -option(SHADERC_SKIP_TESTS "Skip building tests" ON) -option(SHADERC_SKIP_EXAMPLES "Skip building examples" ON) -option(SHADERC_SKIP_COPYRIGHT_CHECK "Skip copyright check" ON) -option(SHADERC_ENABLE_SHARED_CRT "Use the shared CRT instead of the static CRT" ON) -add_subdirectory(shaderc) - -# sdl2 -option(SDL2_DISABLE_SDL2MAIN ON) -option(SDL2_DISABLE_INSTALL ON) -option(SDL2_DISABLE_UNINSTALL ON) -option(SDL_SHARED OFF) -option(SDL_TEST OFF) -option(SDL_TESTS OFF) -option(SDL_OPENGL OFF) -option(SDL_OPENGLES OFF) -option(SDL_DIRECTX OFF) -option(SDL_METAL OFF) -option(SDL_AUDIO OFF) -option(SDL_HAPTIC OFF) -option(SDL_Hidapi OFF) -option(SDL_Sensor OFF) -option(SDL_Locale OFF) -add_subdirectory(sdl2) -set_property(TARGET SDL2-static PROPERTY FOLDER "ThirdParty") - -# GLM -add_subdirectory(glm) - -add_subdirectory(stb) -add_subdirectory(tinygltf) -add_subdirectory(tinyobjloader) - -# FmtLib -option(FMT_INSTALL "Generate the install target." OFF) -add_subdirectory(fmt) \ No newline at end of file