diff --git a/.clang-format b/.clang-format index b03980c..834cc68 100644 --- a/.clang-format +++ b/.clang-format @@ -1,9 +1,26 @@ -StatementMacros: ['UPROPERTY', 'UFUNCTION', 'UCLASS', 'USTRUCT', 'UENUM', 'UINTERFACE', 'GENERATED_BODY'] +StatementMacros: + [ + "UPROPERTY", + "UFUNCTION", + "UCLASS", + "USTRUCT", + "UENUM", + "UINTERFACE", + "GENERATED_BODY", + ] Language: Cpp BasedOnStyle: LLVM AccessModifierOffset: -4 -AlignAfterOpenBracket: DontAlign + +AlignAfterOpenBracket: BlockIndent +# BreakAfterOpenBracketBracedList: true +# BreakAfterOpenBracketFunction: true +# BreakAfterOpenBracketIf: true +# BreakBeforeCloseBracketBracedList: true +# BreakBeforeCloseBracketFunction: true +# BreakBeforeCloseBracketIf: true + AlignConsecutiveDeclarations: true AlignEscapedNewlines: Left AlignOperands: DontAlign @@ -35,7 +52,6 @@ BreakInheritanceList: AfterColon BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeComma BreakStringLiterals: false -ColumnLimit: 0 ConstructorInitializerAllOnOneLineOrOnePerLine: true Cpp11BracedListStyle: false EmptyLineBeforeAccessModifier: LogicalBlock @@ -49,3 +65,10 @@ SortIncludes: false SpaceBeforeCaseColon: false TabWidth: 4 UseTab: Always + +ColumnLimit: 100 +BinPackArguments: false +BinPackParameters: false +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +ExperimentalAutoDetectBinPacking: false diff --git a/CMakeLists.txt b/CMakeLists.txt index 295348f..fd34ec1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE lib lib/stb + lib/tinyobjloader ${IMGUI_DIR} ${IMGUI_DIR}/backends src diff --git a/Shaders/frag.spv b/Shaders/frag.spv index da37f7e..f6337ac 100644 Binary files a/Shaders/frag.spv and b/Shaders/frag.spv differ diff --git a/Shaders/shader.frag b/Shaders/shader.frag index 13009da..9212366 100644 --- a/Shaders/shader.frag +++ b/Shaders/shader.frag @@ -1,9 +1,13 @@ #version 450 layout(location = 0) in vec3 fragColor; +layout(location = 1) in vec2 fragTextureCoordinates; layout(location = 0) out vec4 outColor; +layout(binding = 1) uniform sampler2D textureSampler; + void main() { - outColor = vec4(fragColor, 1.0); -} \ No newline at end of file + outColor = texture(textureSampler, fragTextureCoordinates); +} + diff --git a/Shaders/shader.vert b/Shaders/shader.vert index 7ce15ef..3170771 100644 --- a/Shaders/shader.vert +++ b/Shaders/shader.vert @@ -6,12 +6,15 @@ layout(binding = 0) uniform UniformBufferObject { mat4 proj; } ubo; -layout(location = 0) in vec2 inPosition; +layout(location = 0) in vec3 inPosition; layout(location = 1) in vec3 inColor; +layout(location = 2) in vec2 inTextureCoordinates; layout(location = 0) out vec3 fragColor; +layout(location = 1) out vec2 fragTextureCoordinates; void main() { - gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition, 0.0, 1.0); + gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition, 1.0); fragColor = inColor; + fragTextureCoordinates = inTextureCoordinates; } diff --git a/Shaders/vert.spv b/Shaders/vert.spv index 00c2804..ed0dc98 100644 Binary files a/Shaders/vert.spv and b/Shaders/vert.spv differ diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml index a69fbfc..aa40752 100644 --- a/build/CMakeFiles/CMakeConfigureLog.yaml +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -1196,8 +1196,8 @@ events: checks: - "Detecting C compiler ABI info" directories: - source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA" - binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA" + source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ" + binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ" cmakeVariables: CMAKE_C_FLAGS: "" CMAKE_C_FLAGS_DEBUG: "-g" @@ -1206,13 +1206,13 @@ events: variable: "CMAKE_C_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' + Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f22b1/fast - /usr/bin/make -f CMakeFiles/cmTC_f22b1.dir/build.make CMakeFiles/cmTC_f22b1.dir/build - make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' - Building C object CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o - /usr/bin/cc -v -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_eb7a5/fast + /usr/bin/make -f CMakeFiles/cmTC_eb7a5.dir/build.make CMakeFiles/cmTC_eb7a5.dir/build + make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' + Building C object CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -v -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c Using built-in specs. COLLECT_GCC=/usr/bin/cc Target: x86_64-pc-linux-gnu @@ -1220,8 +1220,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.2.1 20260209 (GCC) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f22b1.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccUBJkg7.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_eb7a5.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/cc5eJlFE.s GNU C23 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu) compiled by GNU C version 15.2.1 20260209, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP @@ -1235,14 +1235,14 @@ events: /usr/include End of search list. Compiler executable checksum: 4a3176b8a5098bb872007d0a1d5e5fb3 - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/' - as -v --64 -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o /tmp/ccUBJkg7.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/' + as -v --64 -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o /tmp/cc5eJlFE.s GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.' - Linking C executable cmTC_f22b1 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f22b1.dir/link.txt --verbose=1 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.' + Linking C executable cmTC_eb7a5 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eb7a5.dir/link.txt --verbose=1 Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper @@ -1253,14 +1253,14 @@ events: gcc version 15.2.1 20260209 (GCC) COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o collect2 version 15.2.1 20260209 - /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o GNU ld (GNU Binutils) 2.46 - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.' - /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -o cmTC_f22b1 - make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.' + /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -o cmTC_eb7a5 + make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' exitCode: 0 - @@ -1295,13 +1295,13 @@ events: Parsed C implicit link information: link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA'] + ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f22b1/fast] - ignore line: [/usr/bin/make -f CMakeFiles/cmTC_f22b1.dir/build.make CMakeFiles/cmTC_f22b1.dir/build] - ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA'] - ignore line: [Building C object CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o] - ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_eb7a5/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_eb7a5.dir/build.make CMakeFiles/cmTC_eb7a5.dir/build] + ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ'] + ignore line: [Building C object CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [Target: x86_64-pc-linux-gnu] @@ -1309,8 +1309,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 15.2.1 20260209 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f22b1.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccUBJkg7.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_eb7a5.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/cc5eJlFE.s] ignore line: [GNU C23 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu)] ignore line: [ compiled by GNU C version 15.2.1 20260209 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] ignore line: [] @@ -1324,14 +1324,14 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 4a3176b8a5098bb872007d0a1d5e5fb3] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o /tmp/ccUBJkg7.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o /tmp/cc5eJlFE.s] ignore line: [GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.'] - ignore line: [Linking C executable cmTC_f22b1] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f22b1.dir/link.txt --verbose=1] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_eb7a5] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eb7a5.dir/link.txt --verbose=1] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] @@ -1342,13 +1342,13 @@ events: ignore line: [gcc version 15.2.1 20260209 (GCC) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.'] - link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cciDPlOs.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccdcg62N.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -1363,7 +1363,7 @@ events: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_f22b1] ==> ignore + arg [cmTC_eb7a5] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] @@ -1375,7 +1375,7 @@ events: arg [-L/lib] ==> dir [/lib] arg [-L/usr/lib] ==> dir [/usr/lib] arg [-v] ==> ignore - arg [CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -1390,7 +1390,7 @@ events: arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ignore line: [collect2 version 15.2.1 20260209] - ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] linker tool for 'C': /usr/bin/ld collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] @@ -1427,8 +1427,8 @@ events: checks: - "Detecting CXX compiler ABI info" directories: - source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA" - binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA" + source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz" + binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -1438,13 +1438,13 @@ events: variable: "CMAKE_CXX_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' + Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_62d97/fast - /usr/bin/make -f CMakeFiles/cmTC_62d97.dir/build.make CMakeFiles/cmTC_62d97.dir/build - make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' - Building CXX object CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -v -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f63bc/fast + /usr/bin/make -f CMakeFiles/cmTC_f63bc.dir/build.make CMakeFiles/cmTC_f63bc.dir/build + make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' + Building CXX object CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -v -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ Target: x86_64-pc-linux-gnu @@ -1452,8 +1452,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.2.1 20260209 (GCC) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_62d97.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccSB0kAz.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_f63bc.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/cchk7ZQV.s GNU C++17 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu) compiled by GNU C version 15.2.1 20260209, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP @@ -1470,14 +1470,14 @@ events: /usr/include End of search list. Compiler executable checksum: 5e3969de92aa3c12a625237f01b15b2f - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/' - as -v --64 -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSB0kAz.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/' + as -v --64 -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o /tmp/cchk7ZQV.s GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.' - Linking CXX executable cmTC_62d97 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_62d97.dir/link.txt --verbose=1 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.' + Linking CXX executable cmTC_f63bc + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f63bc.dir/link.txt --verbose=1 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper @@ -1488,14 +1488,14 @@ events: gcc version 15.2.1 20260209 (GCC) COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o collect2 version 15.2.1 20260209 - /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o GNU ld (GNU Binutils) 2.46 - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.' - /usr/bin/c++ -v -Wl,-v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_62d97 - make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.' + /usr/bin/c++ -v -Wl,-v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_f63bc + make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' exitCode: 0 - @@ -1536,13 +1536,13 @@ events: Parsed CXX implicit link information: link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA'] + ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_62d97/fast] - ignore line: [/usr/bin/make -f CMakeFiles/cmTC_62d97.dir/build.make CMakeFiles/cmTC_62d97.dir/build] - ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA'] - ignore line: [Building CXX object CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f63bc/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_f63bc.dir/build.make CMakeFiles/cmTC_f63bc.dir/build] + ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz'] + ignore line: [Building CXX object CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [Target: x86_64-pc-linux-gnu] @@ -1550,8 +1550,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 15.2.1 20260209 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_62d97.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccSB0kAz.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_f63bc.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/cchk7ZQV.s] ignore line: [GNU C++17 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu)] ignore line: [ compiled by GNU C version 15.2.1 20260209 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] ignore line: [] @@ -1568,14 +1568,14 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 5e3969de92aa3c12a625237f01b15b2f] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSB0kAz.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o /tmp/cchk7ZQV.s] ignore line: [GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_62d97] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_62d97.dir/link.txt --verbose=1] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_f63bc] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f63bc.dir/link.txt --verbose=1] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] @@ -1586,13 +1586,13 @@ events: ignore line: [gcc version 15.2.1 20260209 (GCC) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.'] - link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc9yM9j7.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccilJvOl.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -1607,7 +1607,7 @@ events: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_62d97] ==> ignore + arg [cmTC_f63bc] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] @@ -1619,7 +1619,7 @@ events: arg [-L/lib] ==> dir [/lib] arg [-L/usr/lib] ==> dir [/usr/lib] arg [-v] ==> ignore - arg [CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -1630,7 +1630,7 @@ events: arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ignore line: [collect2 version 15.2.1 20260209] - ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] linker tool for 'CXX': /usr/bin/ld collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] diff --git a/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake b/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake index 59b2aa9..49a7dc1 100644 --- a/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake +++ b/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake @@ -17,7 +17,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_widgets.cpp" "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/main.cpp" "CMakeFiles/LearningVulkan.dir/src/main.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o.d" - "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d" + "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d" @@ -26,7 +26,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanRenderPass.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d" - "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d" + "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o.d" "" "LearningVulkan" "gcc" "CMakeFiles/LearningVulkan.dir/link.d" diff --git a/build/CMakeFiles/LearningVulkan.dir/build.make b/build/CMakeFiles/LearningVulkan.dir/build.make index e0f6456..cfeec64 100644 --- a/build/CMakeFiles/LearningVulkan.dir/build.make +++ b/build/CMakeFiles/LearningVulkan.dir/build.make @@ -100,19 +100,19 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s" /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp -o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp @@ -226,19 +226,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s" /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp @@ -370,7 +370,7 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.s: cmake_ LearningVulkan_OBJECTS = \ "CMakeFiles/LearningVulkan.dir/src/main.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" \ -"CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" \ +"CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o" \ @@ -379,7 +379,7 @@ LearningVulkan_OBJECTS = \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" \ -"CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" \ +"CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" \ "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o" \ @@ -395,7 +395,7 @@ LearningVulkan_EXTERNAL_OBJECTS = LearningVulkan: CMakeFiles/LearningVulkan.dir/src/main.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o -LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o +LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o @@ -404,7 +404,7 @@ LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager. LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o -LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o +LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o diff --git a/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake b/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake index 615776a..0417e53 100644 --- a/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake +++ b/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake @@ -18,8 +18,8 @@ file(REMOVE_RECURSE "CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o.d" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" @@ -36,8 +36,8 @@ file(REMOVE_RECURSE "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" diff --git a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal index ade10e7..47ef933 100644 --- a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal +++ b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal @@ -1373,18 +1373,10 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -1402,18 +1394,24 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/assert.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-fast.h /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/iscanonical.h /usr/include/bits/libc-header-start.h /usr/include/bits/libm-simd-decl-stubs.h @@ -1427,6 +1425,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -1442,6 +1441,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -1475,6 +1475,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -1482,11 +1483,19 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -1526,6 +1535,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -1534,12 +1544,17 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -1550,6 +1565,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -1560,6 +1576,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/unordered_map.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h @@ -1589,18 +1606,23 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span @@ -1782,6 +1804,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -1801,8 +1824,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -2084,15 +2110,14 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -2541,18 +2566,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -2569,18 +2594,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/assert.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h + /usr/include/bits/dl_find_object.h + /usr/include/bits/dlfcn.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-fast.h /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/iscanonical.h /usr/include/bits/libc-header-start.h /usr/include/bits/libm-simd-decl-stubs.h @@ -2594,6 +2627,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -2609,6 +2643,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -2642,13 +2677,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h /usr/include/bits/wctype-wchar.h /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h + /usr/include/c++/15.2.1/algorithm /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h @@ -2656,6 +2694,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/alloc_traits.h /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h /usr/include/c++/15.2.1/bits/basic_ios.h /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h @@ -2709,18 +2750,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/ptr_traits.h /usr/include/c++/15.2.1/bits/quoted_string.h /usr/include/c++/15.2.1/bits/range_access.h + /usr/include/c++/15.2.1/bits/ranges_algo.h /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/bits/sstream.tcc /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -2731,6 +2776,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -2763,6 +2810,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/cstdio /usr/include/c++/15.2.1/cstdlib + /usr/include/c++/15.2.1/cstring /usr/include/c++/15.2.1/ctime /usr/include/c++/15.2.1/cwchar /usr/include/c++/15.2.1/cwctype @@ -2785,10 +2833,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/istream /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/ostream + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/ratio /usr/include/c++/15.2.1/source_location @@ -2816,7 +2868,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map + /usr/include/c++/15.2.1/utility /usr/include/c++/15.2.1/vector + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h @@ -2831,6 +2885,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h /usr/include/ctype.h + /usr/include/dlfcn.h /usr/include/endian.h /usr/include/errno.h /usr/include/features-time64.h @@ -2985,6 +3040,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -3004,8 +3060,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -3020,7 +3079,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/vk_video/vulkan_video_codecs_common.h /usr/include/vulkan/vk_platform.h /usr/include/vulkan/vulkan.h + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_core.h + /usr/include/vulkan/vulkan_enums.hpp + /usr/include/vulkan/vulkan_funcs.hpp + /usr/include/vulkan/vulkan_handles.hpp + /usr/include/vulkan/vulkan_hpp_macros.hpp + /usr/include/vulkan/vulkan_structs.hpp + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/wchar.h /usr/include/wctype.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h @@ -3288,17 +3354,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h /usr/include/GL/gl.h /usr/include/GL/glext.h @@ -3316,31 +3373,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h - /usr/include/assert.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h - /usr/include/bits/flt-eval-method.h - /usr/include/bits/fp-fast.h - /usr/include/bits/fp-logb.h - /usr/include/bits/iscanonical.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/libc-header-start.h - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/local_lim.h /usr/include/bits/locale.h /usr/include/bits/long-double.h - /usr/include/bits/math-vector.h - /usr/include/bits/mathcalls-helper-functions.h - /usr/include/bits/mathcalls-macros.h - /usr/include/bits/mathcalls-narrow.h - /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -3356,6 +3409,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -3389,6 +3443,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -3396,11 +3451,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -3419,8 +3482,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/functexcept.h /usr/include/c++/15.2.1/bits/functional_hash.h /usr/include/c++/15.2.1/bits/hash_bytes.h - /usr/include/c++/15.2.1/bits/hashtable.h - /usr/include/c++/15.2.1/bits/hashtable_policy.h /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/bits/ios_base.h /usr/include/c++/15.2.1/bits/iterator_concepts.h @@ -3440,6 +3501,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -3448,12 +3510,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h - /usr/include/c++/15.2.1/bits/specfun.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/std_abs.h - /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -3467,6 +3532,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/stl_multimap.h /usr/include/c++/15.2.1/bits/stl_multiset.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_set.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_tree.h @@ -3479,20 +3545,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h - /usr/include/c++/15.2.1/bits/unordered_map.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/bits/version.h - /usr/include/c++/15.2.1/cassert /usr/include/c++/15.2.1/cctype /usr/include/c++/15.2.1/cerrno - /usr/include/c++/15.2.1/cfloat /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/climits /usr/include/c++/15.2.1/clocale - /usr/include/c++/15.2.1/cmath /usr/include/c++/15.2.1/compare /usr/include/c++/15.2.1/concepts /usr/include/c++/15.2.1/cstddef @@ -3508,19 +3571,23 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format - /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale /usr/include/c++/15.2.1/map + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/set /usr/include/c++/15.2.1/source_location @@ -3530,22 +3597,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view /usr/include/c++/15.2.1/system_error - /usr/include/c++/15.2.1/tr1/bessel_function.tcc - /usr/include/c++/15.2.1/tr1/beta_function.tcc - /usr/include/c++/15.2.1/tr1/ell_integral.tcc - /usr/include/c++/15.2.1/tr1/exp_integral.tcc - /usr/include/c++/15.2.1/tr1/gamma.tcc - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc - /usr/include/c++/15.2.1/tr1/legendre_function.tcc - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc - /usr/include/c++/15.2.1/tr1/special_function_util.h /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo - /usr/include/c++/15.2.1/unordered_map /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h @@ -3565,144 +3619,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/errno.h /usr/include/features-time64.h /usr/include/features.h - /usr/include/glm/common.hpp - /usr/include/glm/detail/_fixes.hpp - /usr/include/glm/detail/_vectorize.hpp - /usr/include/glm/detail/compute_common.hpp - /usr/include/glm/detail/compute_vector_decl.hpp - /usr/include/glm/detail/compute_vector_relational.hpp - /usr/include/glm/detail/func_common.inl - /usr/include/glm/detail/func_exponential.inl - /usr/include/glm/detail/func_geometric.inl - /usr/include/glm/detail/func_integer.inl - /usr/include/glm/detail/func_matrix.inl - /usr/include/glm/detail/func_packing.inl - /usr/include/glm/detail/func_trigonometric.inl - /usr/include/glm/detail/func_vector_relational.inl - /usr/include/glm/detail/qualifier.hpp - /usr/include/glm/detail/setup.hpp - /usr/include/glm/detail/type_half.hpp - /usr/include/glm/detail/type_half.inl - /usr/include/glm/detail/type_mat2x2.hpp - /usr/include/glm/detail/type_mat2x2.inl - /usr/include/glm/detail/type_mat2x3.hpp - /usr/include/glm/detail/type_mat2x3.inl - /usr/include/glm/detail/type_mat2x4.hpp - /usr/include/glm/detail/type_mat2x4.inl - /usr/include/glm/detail/type_mat3x2.hpp - /usr/include/glm/detail/type_mat3x2.inl - /usr/include/glm/detail/type_mat3x3.hpp - /usr/include/glm/detail/type_mat3x3.inl - /usr/include/glm/detail/type_mat3x4.hpp - /usr/include/glm/detail/type_mat3x4.inl - /usr/include/glm/detail/type_mat4x2.hpp - /usr/include/glm/detail/type_mat4x2.inl - /usr/include/glm/detail/type_mat4x3.hpp - /usr/include/glm/detail/type_mat4x3.inl - /usr/include/glm/detail/type_mat4x4.hpp - /usr/include/glm/detail/type_mat4x4.inl - /usr/include/glm/detail/type_vec1.hpp - /usr/include/glm/detail/type_vec1.inl - /usr/include/glm/detail/type_vec2.hpp - /usr/include/glm/detail/type_vec2.inl - /usr/include/glm/detail/type_vec3.hpp - /usr/include/glm/detail/type_vec3.inl - /usr/include/glm/detail/type_vec4.hpp - /usr/include/glm/detail/type_vec4.inl - /usr/include/glm/exponential.hpp - /usr/include/glm/ext/matrix_double2x2.hpp - /usr/include/glm/ext/matrix_double2x2_precision.hpp - /usr/include/glm/ext/matrix_double2x3.hpp - /usr/include/glm/ext/matrix_double2x3_precision.hpp - /usr/include/glm/ext/matrix_double2x4.hpp - /usr/include/glm/ext/matrix_double2x4_precision.hpp - /usr/include/glm/ext/matrix_double3x2.hpp - /usr/include/glm/ext/matrix_double3x2_precision.hpp - /usr/include/glm/ext/matrix_double3x3.hpp - /usr/include/glm/ext/matrix_double3x3_precision.hpp - /usr/include/glm/ext/matrix_double3x4.hpp - /usr/include/glm/ext/matrix_double3x4_precision.hpp - /usr/include/glm/ext/matrix_double4x2.hpp - /usr/include/glm/ext/matrix_double4x2_precision.hpp - /usr/include/glm/ext/matrix_double4x3.hpp - /usr/include/glm/ext/matrix_double4x3_precision.hpp - /usr/include/glm/ext/matrix_double4x4.hpp - /usr/include/glm/ext/matrix_double4x4_precision.hpp - /usr/include/glm/ext/matrix_float2x2.hpp - /usr/include/glm/ext/matrix_float2x2_precision.hpp - /usr/include/glm/ext/matrix_float2x3.hpp - /usr/include/glm/ext/matrix_float2x3_precision.hpp - /usr/include/glm/ext/matrix_float2x4.hpp - /usr/include/glm/ext/matrix_float2x4_precision.hpp - /usr/include/glm/ext/matrix_float3x2.hpp - /usr/include/glm/ext/matrix_float3x2_precision.hpp - /usr/include/glm/ext/matrix_float3x3.hpp - /usr/include/glm/ext/matrix_float3x3_precision.hpp - /usr/include/glm/ext/matrix_float3x4.hpp - /usr/include/glm/ext/matrix_float3x4_precision.hpp - /usr/include/glm/ext/matrix_float4x2.hpp - /usr/include/glm/ext/matrix_float4x2_precision.hpp - /usr/include/glm/ext/matrix_float4x3.hpp - /usr/include/glm/ext/matrix_float4x3_precision.hpp - /usr/include/glm/ext/matrix_float4x4.hpp - /usr/include/glm/ext/matrix_float4x4_precision.hpp - /usr/include/glm/ext/scalar_int_sized.hpp - /usr/include/glm/ext/scalar_uint_sized.hpp - /usr/include/glm/ext/vector_bool2.hpp - /usr/include/glm/ext/vector_bool2_precision.hpp - /usr/include/glm/ext/vector_bool3.hpp - /usr/include/glm/ext/vector_bool3_precision.hpp - /usr/include/glm/ext/vector_bool4.hpp - /usr/include/glm/ext/vector_bool4_precision.hpp - /usr/include/glm/ext/vector_double2.hpp - /usr/include/glm/ext/vector_double2_precision.hpp - /usr/include/glm/ext/vector_double3.hpp - /usr/include/glm/ext/vector_double3_precision.hpp - /usr/include/glm/ext/vector_double4.hpp - /usr/include/glm/ext/vector_double4_precision.hpp - /usr/include/glm/ext/vector_float2.hpp - /usr/include/glm/ext/vector_float2_precision.hpp - /usr/include/glm/ext/vector_float3.hpp - /usr/include/glm/ext/vector_float3_precision.hpp - /usr/include/glm/ext/vector_float4.hpp - /usr/include/glm/ext/vector_float4_precision.hpp - /usr/include/glm/ext/vector_int2.hpp - /usr/include/glm/ext/vector_int2_sized.hpp - /usr/include/glm/ext/vector_int3.hpp - /usr/include/glm/ext/vector_int3_sized.hpp - /usr/include/glm/ext/vector_int4.hpp - /usr/include/glm/ext/vector_int4_sized.hpp - /usr/include/glm/ext/vector_uint2.hpp - /usr/include/glm/ext/vector_uint2_sized.hpp - /usr/include/glm/ext/vector_uint3.hpp - /usr/include/glm/ext/vector_uint3_sized.hpp - /usr/include/glm/ext/vector_uint4.hpp - /usr/include/glm/ext/vector_uint4_sized.hpp - /usr/include/glm/fwd.hpp - /usr/include/glm/geometric.hpp - /usr/include/glm/glm.hpp - /usr/include/glm/integer.hpp - /usr/include/glm/mat2x2.hpp - /usr/include/glm/mat2x3.hpp - /usr/include/glm/mat2x4.hpp - /usr/include/glm/mat3x2.hpp - /usr/include/glm/mat3x3.hpp - /usr/include/glm/mat3x4.hpp - /usr/include/glm/mat4x2.hpp - /usr/include/glm/mat4x3.hpp - /usr/include/glm/mat4x4.hpp - /usr/include/glm/matrix.hpp - /usr/include/glm/packing.hpp - /usr/include/glm/simd/platform.h - /usr/include/glm/trigonometric.hpp - /usr/include/glm/vec2.hpp - /usr/include/glm/vec3.hpp - /usr/include/glm/vec4.hpp - /usr/include/glm/vector_relational.hpp /usr/include/gnu/stubs-64.h /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -3710,7 +3631,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/linux/stddef.h /usr/include/linux/types.h /usr/include/locale.h - /usr/include/math.h /usr/include/pthread.h /usr/include/sched.h /usr/include/stdc-predef.h @@ -3720,8 +3640,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -3739,7 +3662,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/vulkan/vulkan_core.h /usr/include/wchar.h /usr/include/wctype.h - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h @@ -4009,17 +3931,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h /usr/include/GL/gl.h /usr/include/GL/glext.h @@ -4037,31 +3951,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h - /usr/include/assert.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h - /usr/include/bits/flt-eval-method.h - /usr/include/bits/fp-fast.h - /usr/include/bits/fp-logb.h - /usr/include/bits/iscanonical.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/libc-header-start.h - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/local_lim.h /usr/include/bits/locale.h /usr/include/bits/long-double.h - /usr/include/bits/math-vector.h - /usr/include/bits/mathcalls-helper-functions.h - /usr/include/bits/mathcalls-macros.h - /usr/include/bits/mathcalls-narrow.h - /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -4077,6 +3987,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -4110,6 +4021,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -4117,11 +4029,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -4132,7 +4052,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/cxxabi_forced.h /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h /usr/include/c++/15.2.1/bits/enable_special_members.h - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/bits/exception.h /usr/include/c++/15.2.1/bits/exception_defines.h /usr/include/c++/15.2.1/bits/exception_ptr.h @@ -4140,8 +4059,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/functexcept.h /usr/include/c++/15.2.1/bits/functional_hash.h /usr/include/c++/15.2.1/bits/hash_bytes.h - /usr/include/c++/15.2.1/bits/hashtable.h - /usr/include/c++/15.2.1/bits/hashtable_policy.h /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/bits/ios_base.h /usr/include/c++/15.2.1/bits/iterator_concepts.h @@ -4160,7 +4077,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/move.h /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h - /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -4169,12 +4086,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h - /usr/include/c++/15.2.1/bits/specfun.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/std_abs.h - /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -4185,6 +4105,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -4195,20 +4116,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h - /usr/include/c++/15.2.1/bits/unordered_map.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/bits/version.h - /usr/include/c++/15.2.1/cassert /usr/include/c++/15.2.1/cctype /usr/include/c++/15.2.1/cerrno - /usr/include/c++/15.2.1/cfloat /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/climits /usr/include/c++/15.2.1/clocale - /usr/include/c++/15.2.1/cmath /usr/include/c++/15.2.1/compare /usr/include/c++/15.2.1/concepts /usr/include/c++/15.2.1/cstddef @@ -4225,18 +4143,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format - /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span @@ -4245,22 +4167,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view /usr/include/c++/15.2.1/system_error - /usr/include/c++/15.2.1/tr1/bessel_function.tcc - /usr/include/c++/15.2.1/tr1/beta_function.tcc - /usr/include/c++/15.2.1/tr1/ell_integral.tcc - /usr/include/c++/15.2.1/tr1/exp_integral.tcc - /usr/include/c++/15.2.1/tr1/gamma.tcc - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc - /usr/include/c++/15.2.1/tr1/legendre_function.tcc - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc - /usr/include/c++/15.2.1/tr1/special_function_util.h /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo - /usr/include/c++/15.2.1/unordered_map /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h @@ -4280,144 +4189,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/errno.h /usr/include/features-time64.h /usr/include/features.h - /usr/include/glm/common.hpp - /usr/include/glm/detail/_fixes.hpp - /usr/include/glm/detail/_vectorize.hpp - /usr/include/glm/detail/compute_common.hpp - /usr/include/glm/detail/compute_vector_decl.hpp - /usr/include/glm/detail/compute_vector_relational.hpp - /usr/include/glm/detail/func_common.inl - /usr/include/glm/detail/func_exponential.inl - /usr/include/glm/detail/func_geometric.inl - /usr/include/glm/detail/func_integer.inl - /usr/include/glm/detail/func_matrix.inl - /usr/include/glm/detail/func_packing.inl - /usr/include/glm/detail/func_trigonometric.inl - /usr/include/glm/detail/func_vector_relational.inl - /usr/include/glm/detail/qualifier.hpp - /usr/include/glm/detail/setup.hpp - /usr/include/glm/detail/type_half.hpp - /usr/include/glm/detail/type_half.inl - /usr/include/glm/detail/type_mat2x2.hpp - /usr/include/glm/detail/type_mat2x2.inl - /usr/include/glm/detail/type_mat2x3.hpp - /usr/include/glm/detail/type_mat2x3.inl - /usr/include/glm/detail/type_mat2x4.hpp - /usr/include/glm/detail/type_mat2x4.inl - /usr/include/glm/detail/type_mat3x2.hpp - /usr/include/glm/detail/type_mat3x2.inl - /usr/include/glm/detail/type_mat3x3.hpp - /usr/include/glm/detail/type_mat3x3.inl - /usr/include/glm/detail/type_mat3x4.hpp - /usr/include/glm/detail/type_mat3x4.inl - /usr/include/glm/detail/type_mat4x2.hpp - /usr/include/glm/detail/type_mat4x2.inl - /usr/include/glm/detail/type_mat4x3.hpp - /usr/include/glm/detail/type_mat4x3.inl - /usr/include/glm/detail/type_mat4x4.hpp - /usr/include/glm/detail/type_mat4x4.inl - /usr/include/glm/detail/type_vec1.hpp - /usr/include/glm/detail/type_vec1.inl - /usr/include/glm/detail/type_vec2.hpp - /usr/include/glm/detail/type_vec2.inl - /usr/include/glm/detail/type_vec3.hpp - /usr/include/glm/detail/type_vec3.inl - /usr/include/glm/detail/type_vec4.hpp - /usr/include/glm/detail/type_vec4.inl - /usr/include/glm/exponential.hpp - /usr/include/glm/ext/matrix_double2x2.hpp - /usr/include/glm/ext/matrix_double2x2_precision.hpp - /usr/include/glm/ext/matrix_double2x3.hpp - /usr/include/glm/ext/matrix_double2x3_precision.hpp - /usr/include/glm/ext/matrix_double2x4.hpp - /usr/include/glm/ext/matrix_double2x4_precision.hpp - /usr/include/glm/ext/matrix_double3x2.hpp - /usr/include/glm/ext/matrix_double3x2_precision.hpp - /usr/include/glm/ext/matrix_double3x3.hpp - /usr/include/glm/ext/matrix_double3x3_precision.hpp - /usr/include/glm/ext/matrix_double3x4.hpp - /usr/include/glm/ext/matrix_double3x4_precision.hpp - /usr/include/glm/ext/matrix_double4x2.hpp - /usr/include/glm/ext/matrix_double4x2_precision.hpp - /usr/include/glm/ext/matrix_double4x3.hpp - /usr/include/glm/ext/matrix_double4x3_precision.hpp - /usr/include/glm/ext/matrix_double4x4.hpp - /usr/include/glm/ext/matrix_double4x4_precision.hpp - /usr/include/glm/ext/matrix_float2x2.hpp - /usr/include/glm/ext/matrix_float2x2_precision.hpp - /usr/include/glm/ext/matrix_float2x3.hpp - /usr/include/glm/ext/matrix_float2x3_precision.hpp - /usr/include/glm/ext/matrix_float2x4.hpp - /usr/include/glm/ext/matrix_float2x4_precision.hpp - /usr/include/glm/ext/matrix_float3x2.hpp - /usr/include/glm/ext/matrix_float3x2_precision.hpp - /usr/include/glm/ext/matrix_float3x3.hpp - /usr/include/glm/ext/matrix_float3x3_precision.hpp - /usr/include/glm/ext/matrix_float3x4.hpp - /usr/include/glm/ext/matrix_float3x4_precision.hpp - /usr/include/glm/ext/matrix_float4x2.hpp - /usr/include/glm/ext/matrix_float4x2_precision.hpp - /usr/include/glm/ext/matrix_float4x3.hpp - /usr/include/glm/ext/matrix_float4x3_precision.hpp - /usr/include/glm/ext/matrix_float4x4.hpp - /usr/include/glm/ext/matrix_float4x4_precision.hpp - /usr/include/glm/ext/scalar_int_sized.hpp - /usr/include/glm/ext/scalar_uint_sized.hpp - /usr/include/glm/ext/vector_bool2.hpp - /usr/include/glm/ext/vector_bool2_precision.hpp - /usr/include/glm/ext/vector_bool3.hpp - /usr/include/glm/ext/vector_bool3_precision.hpp - /usr/include/glm/ext/vector_bool4.hpp - /usr/include/glm/ext/vector_bool4_precision.hpp - /usr/include/glm/ext/vector_double2.hpp - /usr/include/glm/ext/vector_double2_precision.hpp - /usr/include/glm/ext/vector_double3.hpp - /usr/include/glm/ext/vector_double3_precision.hpp - /usr/include/glm/ext/vector_double4.hpp - /usr/include/glm/ext/vector_double4_precision.hpp - /usr/include/glm/ext/vector_float2.hpp - /usr/include/glm/ext/vector_float2_precision.hpp - /usr/include/glm/ext/vector_float3.hpp - /usr/include/glm/ext/vector_float3_precision.hpp - /usr/include/glm/ext/vector_float4.hpp - /usr/include/glm/ext/vector_float4_precision.hpp - /usr/include/glm/ext/vector_int2.hpp - /usr/include/glm/ext/vector_int2_sized.hpp - /usr/include/glm/ext/vector_int3.hpp - /usr/include/glm/ext/vector_int3_sized.hpp - /usr/include/glm/ext/vector_int4.hpp - /usr/include/glm/ext/vector_int4_sized.hpp - /usr/include/glm/ext/vector_uint2.hpp - /usr/include/glm/ext/vector_uint2_sized.hpp - /usr/include/glm/ext/vector_uint3.hpp - /usr/include/glm/ext/vector_uint3_sized.hpp - /usr/include/glm/ext/vector_uint4.hpp - /usr/include/glm/ext/vector_uint4_sized.hpp - /usr/include/glm/fwd.hpp - /usr/include/glm/geometric.hpp - /usr/include/glm/glm.hpp - /usr/include/glm/integer.hpp - /usr/include/glm/mat2x2.hpp - /usr/include/glm/mat2x3.hpp - /usr/include/glm/mat2x4.hpp - /usr/include/glm/mat3x2.hpp - /usr/include/glm/mat3x3.hpp - /usr/include/glm/mat3x4.hpp - /usr/include/glm/mat4x2.hpp - /usr/include/glm/mat4x3.hpp - /usr/include/glm/mat4x4.hpp - /usr/include/glm/matrix.hpp - /usr/include/glm/packing.hpp - /usr/include/glm/simd/platform.h - /usr/include/glm/trigonometric.hpp - /usr/include/glm/vec2.hpp - /usr/include/glm/vec3.hpp - /usr/include/glm/vec4.hpp - /usr/include/glm/vector_relational.hpp /usr/include/gnu/stubs-64.h /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -4425,7 +4201,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/linux/stddef.h /usr/include/linux/types.h /usr/include/locale.h - /usr/include/math.h /usr/include/pthread.h /usr/include/sched.h /usr/include/stdc-predef.h @@ -4437,8 +4212,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -4456,7 +4234,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/vulkan/vulkan_core.h /usr/include/wchar.h /usr/include/wctype.h - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h @@ -4465,10 +4242,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/FileReader.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -5441,11 +5218,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -5466,6 +5246,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h /usr/include/bits/cpu-set.h + /usr/include/bits/dl_find_object.h + /usr/include/bits/dlfcn.h /usr/include/bits/endian.h /usr/include/bits/endianness.h /usr/include/bits/errno.h @@ -5541,6 +5323,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/bits/wctype-wchar.h /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h + /usr/include/c++/15.2.1/algorithm /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit @@ -5591,6 +5374,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/bits/predefined_ops.h /usr/include/c++/15.2.1/bits/ptr_traits.h /usr/include/c++/15.2.1/bits/range_access.h + /usr/include/c++/15.2.1/bits/ranges_algo.h /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h @@ -5610,6 +5394,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -5662,10 +5447,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/stdexcept + /usr/include/c++/15.2.1/stdlib.h /usr/include/c++/15.2.1/streambuf /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view @@ -5686,7 +5474,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map + /usr/include/c++/15.2.1/utility /usr/include/c++/15.2.1/vector + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h @@ -5701,6 +5491,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h /usr/include/ctype.h + /usr/include/dlfcn.h /usr/include/endian.h /usr/include/errno.h /usr/include/features-time64.h @@ -5878,7 +5669,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/vk_video/vulkan_video_codecs_common.h /usr/include/vulkan/vk_platform.h /usr/include/vulkan/vulkan.h + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_core.h + /usr/include/vulkan/vulkan_enums.hpp + /usr/include/vulkan/vulkan_funcs.hpp + /usr/include/vulkan/vulkan_handles.hpp + /usr/include/vulkan/vulkan_hpp_macros.hpp + /usr/include/vulkan/vulkan_structs.hpp + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/wchar.h /usr/include/wctype.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h @@ -6318,7 +6116,7 @@ LearningVulkan /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o @@ -6327,7 +6125,7 @@ LearningVulkan /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o diff --git a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make index 10e21ff..41b6a44 100644 --- a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make +++ b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make @@ -1365,18 +1365,10 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -1394,18 +1386,24 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/assert.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ /usr/include/bits/flt-eval-method.h \ /usr/include/bits/fp-fast.h \ /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/iscanonical.h \ /usr/include/bits/libc-header-start.h \ /usr/include/bits/libm-simd-decl-stubs.h \ @@ -1419,6 +1417,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -1434,6 +1433,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -1467,6 +1467,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -1474,11 +1475,19 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -1518,6 +1527,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -1526,12 +1536,17 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -1542,6 +1557,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -1552,6 +1568,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ @@ -1581,18 +1598,23 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ @@ -1774,6 +1796,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -1793,8 +1816,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -2075,14 +2101,13 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o: /home/Jordan/ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp \ +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -2530,18 +2555,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -2558,18 +2583,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/assert.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ + /usr/include/bits/dl_find_object.h \ + /usr/include/bits/dlfcn.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ /usr/include/bits/flt-eval-method.h \ /usr/include/bits/fp-fast.h \ /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/iscanonical.h \ /usr/include/bits/libc-header-start.h \ /usr/include/bits/libm-simd-decl-stubs.h \ @@ -2583,6 +2616,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -2598,6 +2632,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -2631,13 +2666,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ + /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ @@ -2645,6 +2683,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ @@ -2698,18 +2739,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/quoted_string.h \ /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/bits/sstream.tcc \ /usr/include/c++/15.2.1/bits/std_abs.h \ /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -2720,6 +2765,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/stl_relops.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -2752,6 +2799,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/cstdio \ /usr/include/c++/15.2.1/cstdlib \ + /usr/include/c++/15.2.1/cstring \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/cwchar \ /usr/include/c++/15.2.1/cwctype \ @@ -2774,10 +2822,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/istream \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ /usr/include/c++/15.2.1/ostream \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/ratio \ /usr/include/c++/15.2.1/source_location \ @@ -2805,7 +2857,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/utility \ /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/version \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -2820,6 +2874,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/ctype.h \ + /usr/include/dlfcn.h \ /usr/include/endian.h \ /usr/include/errno.h \ /usr/include/features-time64.h \ @@ -2974,6 +3029,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -2993,8 +3049,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -3009,7 +3068,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vulkan/vk_platform.h \ /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan.hpp \ /usr/include/vulkan/vulkan_core.h \ + /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/vulkan/vulkan_structs.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp \ /usr/include/wchar.h \ /usr/include/wctype.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -3275,17 +3341,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o: /home/Jordan /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ @@ -3303,31 +3360,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ - /usr/include/assert.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ - /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-fast.h \ - /usr/include/bits/fp-logb.h \ - /usr/include/bits/iscanonical.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/libc-header-start.h \ - /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/local_lim.h \ /usr/include/bits/locale.h \ /usr/include/bits/long-double.h \ - /usr/include/bits/math-vector.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -3343,6 +3396,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -3376,6 +3430,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -3383,11 +3438,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -3406,8 +3469,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/functional_hash.h \ /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ @@ -3427,6 +3488,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -3435,12 +3497,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -3454,6 +3519,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/stl_multimap.h \ /usr/include/c++/15.2.1/bits/stl_multiset.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_set.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_tree.h \ @@ -3466,20 +3532,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/bits/utility.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/cassert \ /usr/include/c++/15.2.1/cctype \ /usr/include/c++/15.2.1/cerrno \ - /usr/include/c++/15.2.1/cfloat \ /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/climits \ /usr/include/c++/15.2.1/clocale \ - /usr/include/c++/15.2.1/cmath \ /usr/include/c++/15.2.1/compare \ /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/cstddef \ @@ -3495,19 +3558,23 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/map \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/set \ /usr/include/c++/15.2.1/source_location \ @@ -3517,22 +3584,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/system_error \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tuple \ /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ @@ -3552,144 +3606,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/errno.h \ /usr/include/features-time64.h \ /usr/include/features.h \ - /usr/include/glm/common.hpp \ - /usr/include/glm/detail/_fixes.hpp \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp \ - /usr/include/glm/fwd.hpp \ - /usr/include/glm/geometric.hpp \ - /usr/include/glm/glm.hpp \ - /usr/include/glm/integer.hpp \ - /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/mat2x3.hpp \ - /usr/include/glm/mat2x4.hpp \ - /usr/include/glm/mat3x2.hpp \ - /usr/include/glm/mat3x3.hpp \ - /usr/include/glm/mat3x4.hpp \ - /usr/include/glm/mat4x2.hpp \ - /usr/include/glm/mat4x3.hpp \ - /usr/include/glm/mat4x4.hpp \ - /usr/include/glm/matrix.hpp \ - /usr/include/glm/packing.hpp \ - /usr/include/glm/simd/platform.h \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/vec2.hpp \ - /usr/include/glm/vec3.hpp \ - /usr/include/glm/vec4.hpp \ - /usr/include/glm/vector_relational.hpp \ /usr/include/gnu/stubs-64.h \ /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -3697,7 +3618,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/linux/stddef.h \ /usr/include/linux/types.h \ /usr/include/locale.h \ - /usr/include/math.h \ /usr/include/pthread.h \ /usr/include/sched.h \ /usr/include/stdc-predef.h \ @@ -3707,8 +3627,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -3726,7 +3649,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/vulkan/vulkan_core.h \ /usr/include/wchar.h \ /usr/include/wctype.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ @@ -3994,17 +3916,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /home/Jordan /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ @@ -4022,31 +3936,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ - /usr/include/assert.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ - /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-fast.h \ - /usr/include/bits/fp-logb.h \ - /usr/include/bits/iscanonical.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/libc-header-start.h \ - /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/local_lim.h \ /usr/include/bits/locale.h \ /usr/include/bits/long-double.h \ - /usr/include/bits/math-vector.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -4062,6 +3972,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -4095,6 +4006,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -4102,11 +4014,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -4117,7 +4037,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ /usr/include/c++/15.2.1/bits/exception.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ /usr/include/c++/15.2.1/bits/exception_ptr.h \ @@ -4125,8 +4044,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/functional_hash.h \ /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ @@ -4145,7 +4062,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/move.h \ /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -4154,12 +4071,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -4170,6 +4090,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -4180,20 +4101,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/bits/utility.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/cassert \ /usr/include/c++/15.2.1/cctype \ /usr/include/c++/15.2.1/cerrno \ - /usr/include/c++/15.2.1/cfloat \ /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/climits \ /usr/include/c++/15.2.1/clocale \ - /usr/include/c++/15.2.1/cmath \ /usr/include/c++/15.2.1/compare \ /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/cstddef \ @@ -4210,18 +4128,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ @@ -4230,22 +4152,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/system_error \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tuple \ /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ @@ -4265,144 +4174,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/errno.h \ /usr/include/features-time64.h \ /usr/include/features.h \ - /usr/include/glm/common.hpp \ - /usr/include/glm/detail/_fixes.hpp \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp \ - /usr/include/glm/fwd.hpp \ - /usr/include/glm/geometric.hpp \ - /usr/include/glm/glm.hpp \ - /usr/include/glm/integer.hpp \ - /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/mat2x3.hpp \ - /usr/include/glm/mat2x4.hpp \ - /usr/include/glm/mat3x2.hpp \ - /usr/include/glm/mat3x3.hpp \ - /usr/include/glm/mat3x4.hpp \ - /usr/include/glm/mat4x2.hpp \ - /usr/include/glm/mat4x3.hpp \ - /usr/include/glm/mat4x4.hpp \ - /usr/include/glm/matrix.hpp \ - /usr/include/glm/packing.hpp \ - /usr/include/glm/simd/platform.h \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/vec2.hpp \ - /usr/include/glm/vec3.hpp \ - /usr/include/glm/vec4.hpp \ - /usr/include/glm/vector_relational.hpp \ /usr/include/gnu/stubs-64.h \ /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -4410,7 +4186,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/linux/stddef.h \ /usr/include/linux/types.h \ /usr/include/locale.h \ - /usr/include/math.h \ /usr/include/pthread.h \ /usr/include/sched.h \ /usr/include/stdc-predef.h \ @@ -4422,8 +4197,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -4441,7 +4219,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/vulkan/vulkan_core.h \ /usr/include/wchar.h \ /usr/include/wctype.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ @@ -4449,10 +4226,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/FileReader.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -5423,10 +5200,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /home/Jordan/Pr /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp \ + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -5447,6 +5227,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ /usr/include/bits/cpu-set.h \ + /usr/include/bits/dl_find_object.h \ + /usr/include/bits/dlfcn.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ /usr/include/bits/errno.h \ @@ -5522,6 +5304,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/bits/wctype-wchar.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ + /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/array \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ @@ -5572,6 +5355,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/bits/predefined_ops.h \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ @@ -5591,6 +5375,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_relops.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -5643,10 +5428,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ /usr/include/c++/15.2.1/stdexcept \ + /usr/include/c++/15.2.1/stdlib.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ @@ -5667,7 +5455,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/utility \ /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/version \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -5682,6 +5472,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/ctype.h \ + /usr/include/dlfcn.h \ /usr/include/endian.h \ /usr/include/errno.h \ /usr/include/features-time64.h \ @@ -5859,7 +5650,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vulkan/vk_platform.h \ /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan.hpp \ /usr/include/vulkan/vulkan_core.h \ + /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/vulkan/vulkan_structs.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp \ /usr/include/wchar.h \ /usr/include/wctype.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -6296,7 +6094,7 @@ LearningVulkan: /usr/lib/Scrt1.o \ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o \ CMakeFiles/LearningVulkan.dir/src/main.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o \ @@ -6305,7 +6103,7 @@ LearningVulkan: /usr/lib/Scrt1.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o @@ -6316,7 +6114,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o: @@ -6352,8 +6150,6 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o: /usr/lib/libgcc_s.so.1: -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: - /usr/lib/libdl.a: /usr/lib/libXi.so: @@ -6362,15 +6158,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp: - -/usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h: - -/usr/include/c++/15.2.1/pstl/execution_defs.h: - -/usr/include/c++/15.2.1/bits/ranges_algo.h: - -/usr/include/c++/15.2.1/algorithm: +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp: @@ -6382,10 +6170,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp: -CMakeFiles/LearningVulkan.dir/src/main.cpp.o: - -/usr/include/c++/15.2.1/cstring: - /usr/include/c++/15.2.1/bits/stl_tree.h: /usr/include/c++/15.2.1/bits/stl_set.h: @@ -6400,6 +6184,12 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp: +/usr/include/vulkan/vulkan_to_string.hpp: + +/usr/include/vulkan/vulkan_enums.hpp: + +/usr/include/vulkan/vulkan.hpp: + /usr/include/glm/gtc/matrix_transform.inl: /usr/include/glm/gtc/matrix_transform.hpp: @@ -6408,29 +6198,33 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /usr/include/glm/ext/scalar_constants.hpp: -/usr/include/glm/ext/matrix_transform.inl: - /usr/include/glm/ext/matrix_transform.hpp: +/usr/include/vulkan/vulkan_handles.hpp: + /usr/include/glm/ext/matrix_projection.inl: /usr/include/glm/ext/matrix_projection.hpp: /usr/include/glm/ext/matrix_clip_space.inl: +/usr/include/c++/15.2.1/version: + +/usr/include/c++/15.2.1/utility: + /usr/include/c++/15.2.1/sstream: +/usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h: + /usr/include/c++/15.2.1/ostream: /usr/include/c++/15.2.1/istream: -/usr/include/c++/15.2.1/ios: +CMakeFiles/LearningVulkan.dir/src/main.cpp.o: -/usr/include/c++/15.2.1/bits/unique_ptr.h: +/usr/include/c++/15.2.1/cstring: -/usr/include/c++/15.2.1/bits/shared_ptr_base.h: - -/usr/include/c++/15.2.1/bits/shared_ptr.h: +/usr/include/c++/15.2.1/bits/ranges_algo.h: /usr/include/c++/15.2.1/bits/parse_numbers.h: @@ -6438,11 +6232,21 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /usr/include/c++/15.2.1/bits/chrono_io.h: -/usr/include/c++/15.2.1/bits/basic_ios.tcc: +/usr/include/c++/15.2.1/algorithm: -/usr/include/c++/15.2.1/bits/allocated_ptr.h: +/usr/include/bits/dl_find_object.h: -/usr/include/c++/15.2.1/bits/align.h: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h: /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h: @@ -6450,7 +6254,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp: +/usr/include/glm/ext/matrix_transform.inl: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp: /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp: @@ -6462,6 +6270,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/time.h: +/usr/include/syscall.h: + +/usr/include/sys/syscall.h: + /usr/include/sched.h: /usr/include/locale.h: @@ -6486,10 +6298,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/mat3x4.hpp: -/usr/lib/libvulkan.so: - -/usr/include/glm/mat2x3.hpp: - /usr/include/c++/15.2.1/ratio: /usr/include/glm/mat2x2.hpp: @@ -6534,8 +6342,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/vector_double2_precision.hpp: -/usr/include/glm/ext/vector_double2.hpp: - /usr/include/glm/ext/vector_bool4_precision.hpp: /usr/include/glm/ext/vector_bool3_precision.hpp: @@ -6544,6 +6350,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/vector_bool2.hpp: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp: + /usr/include/glm/ext/scalar_int_sized.hpp: /usr/include/glm/ext/matrix_float4x3.hpp: @@ -6572,10 +6380,40 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/matrix_double4x3_precision.hpp: +/usr/include/glm/ext/matrix_double4x2.hpp: + +/usr/include/glm/ext/matrix_double3x3_precision.hpp: + +/usr/include/glm/ext/matrix_double3x2_precision.hpp: + +/usr/include/glm/ext/matrix_double3x2.hpp: + +/usr/include/c++/15.2.1/set: + +/usr/include/glm/ext/matrix_double2x3_precision.hpp: + +/usr/include/glm/ext/matrix_double2x2_precision.hpp: + +/usr/include/glm/ext/matrix_double2x2.hpp: + +/usr/include/glm/mat3x3.hpp: + +/usr/include/glm/exponential.hpp: + +/usr/include/glm/detail/type_vec4.inl: + +/usr/include/glm/simd/platform.h: + +/usr/include/glm/detail/type_vec4.hpp: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vpopcntdqintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vp2intersectvlintrin.h: +/usr/include/glm/ext/matrix_double2x3.hpp: + +/usr/include/sys/ucontext.h: + CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/include/stdc-predef.h: @@ -6608,20 +6446,12 @@ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512satcvtintrin.h: -/usr/include/c++/15.2.1/bits/ostream.h: - -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512minmaxintrin.h: - /usr/include/c++/15.2.1/bits/fstream.tcc: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512mediaintrin.h: /usr/include/c++/15.2.1/tr1/bessel_function.tcc: -/usr/include/sys/ucontext.h: - -/usr/include/glm/ext/matrix_double2x3.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxfp8intrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxfp16intrin.h: @@ -6630,6 +6460,8 @@ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2minmaxintrin.h: +/usr/include/c++/15.2.1/ios: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxcomplexintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/xsaveoptintrin.h: @@ -6672,6 +6504,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/types/sig_atomic_t.h: +/usr/include/asm/unistd_64.h: + /usr/include/c++/15.2.1/tr1/poly_hermite.tcc: /usr/include/bits/types/timer_t.h: @@ -6684,6 +6518,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/tr1/gamma.tcc: +/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h: + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanFramebuffers.cpp: /usr/include/c++/15.2.1/concepts: @@ -6692,8 +6528,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cerrno: -/usr/include/glm/ext/matrix_double4x2.hpp: - /usr/include/glm/ext/matrix_float4x3_precision.hpp: /usr/include/endian.h: @@ -6756,6 +6590,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/basic_file.h: +/usr/include/bits/dlfcn.h: + /usr/include/glm/detail/_vectorize.hpp: /usr/include/c++/15.2.1/bits/stl_algobase.h: @@ -6768,8 +6604,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/types/siginfo_t.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h: - /usr/include/X11/extensions/randr.h: /usr/include/bits/types/__sigval_t.h: @@ -6794,6 +6628,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cwchar: +/usr/include/glm/ext/matrix_double3x4.hpp: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/adxintrin.h: + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h: /usr/include/c++/15.2.1/bits/uses_allocator.h: @@ -6850,24 +6688,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/type_traits: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h: - /usr/include/c++/15.2.1/debug/debug.h: -/usr/include/vk_video/vulkan_video_codec_h264std.h: +/usr/include/c++/15.2.1/bits/align.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fmaintrin.h: +/usr/include/vk_video/vulkan_video_codec_h264std.h: /usr/include/bits/floatn.h: /usr/include/bits/types/cookie_io_functions_t.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h: - /usr/include/glm/detail/compute_vector_decl.hpp: /usr/include/bits/stdint-uintn.h: @@ -6882,8 +6712,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/stdio_lim.h: -/usr/include/glm/ext/matrix_double2x2_precision.hpp: - /usr/include/sys/types.h: /usr/include/glm/ext/matrix_double4x3.hpp: @@ -6894,8 +6722,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/ctype.h: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp: + /usr/include/c++/15.2.1/map: +/usr/include/vulkan/vulkan_hpp_macros.hpp: + /usr/include/c++/15.2.1/new: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: @@ -6906,7 +6738,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2mediaintrin.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h: +/usr/include/c++/15.2.1/bits/shared_ptr_base.h: /usr/include/bits/stdio.h: @@ -6928,8 +6760,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/confname.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h: - /usr/include/bits/xopen_lim.h: /usr/include/c++/15.2.1/ext/numeric_traits.h: @@ -7006,6 +6836,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/byteswap.h: +/usr/include/vulkan/vulkan_structs.hpp: + /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxtileintrin.h: @@ -7028,6 +6860,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cassert: +/usr/include/glm/ext/matrix_double2x4.hpp: + +/usr/include/bits/math-vector.h: + /usr/include/bits/uio_lim.h: /usr/include/glm/ext/vector_uint4_sized.hpp: @@ -7044,6 +6880,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/X11/extensions/Xrender.h: +/usr/include/c++/15.2.1/bits/allocated_ptr.h: + /usr/include/vk_video/vulkan_video_codec_av1std.h: /usr/include/bits/sigstack.h: @@ -7092,6 +6930,12 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o: /usr/include/bits/uintn-identity.h: +/usr/include/c++/15.2.1/iostream: + +/usr/include/glm/ext/matrix_double2x4_precision.hpp: + +/usr/include/features-time64.h: + /usr/include/bits/pthreadtypes-arch.h: /usr/include/gnu/stubs.h: @@ -7210,6 +7054,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2copyintrin.h: +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: + /usr/include/c++/15.2.1/iomanip: /usr/include/bits/locale.h: @@ -7222,10 +7068,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/mwaitxintrin.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/adxintrin.h: - -/usr/include/glm/ext/matrix_double3x4.hpp: - /usr/include/bits/mathcalls.h: /usr/include/bits/types/stack_t.h: @@ -7258,6 +7100,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/glm/detail/type_mat4x2.hpp: +/usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h: + /usr/include/glm/detail/type_mat4x2.inl: /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc: @@ -7298,18 +7142,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fxsrintrin.h: -/usr/include/c++/15.2.1/iostream: - -/usr/include/features-time64.h: - -/usr/include/glm/ext/matrix_double2x4_precision.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/hresetintrin.h: /usr/include/c++/15.2.1/bits/alloc_traits.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/ia32intrin.h: +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fmaintrin.h: + +/usr/include/c++/15.2.1/bits/atomic_wait.h: + /usr/include/glm/mat4x4.hpp: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/immintrin.h: @@ -7336,8 +7178,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/movrsintrin.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h: - /usr/include/c++/15.2.1/bits/basic_ios.h: /usr/include/asm/bitsperlong.h: @@ -7358,20 +7198,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/c++/15.2.1/bits/ostream.tcc: -/usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h: - /usr/include/glm/ext/matrix_double3x4_precision.hpp: +/usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/rtmintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/serializeintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/sgxintrin.h: -/usr/include/glm/ext/matrix_double2x2.hpp: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/sha512intrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxbf16intrin.h: @@ -7380,14 +7216,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h: -/usr/include/glm/ext/matrix_double3x2.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/tbmintrin.h: /usr/include/c++/15.2.1/bits/codecvt.h: /usr/include/glm/detail/type_half.inl: +/usr/include/vulkan/vulkan_funcs.hpp: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/tmmintrin.h: /usr/include/X11/Xdefs.h: @@ -7448,18 +7284,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_tables.cpp: -/usr/include/bits/math-vector.h: - -/usr/include/glm/ext/matrix_double2x4.hpp: - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.cpp: /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imstb_textedit.h: /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h: - /usr/include/bits/struct_rwlock.h: /usr/include/bits/sched.h: @@ -7484,6 +7314,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/c++/15.2.1/bits/stl_heap.h: +/usr/include/dlfcn.h: + /usr/include/glm/ext/vector_float4_precision.hpp: /usr/include/c++/15.2.1/exception: @@ -7506,10 +7338,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/asm/types.h: +/usr/lib/libvulkan.so: + +/usr/include/glm/mat2x3.hpp: + +/usr/include/asm/unistd.h: + /usr/include/bits/errno.h: /usr/include/bits/setjmp.h: +/usr/include/bits/syscall.h: + /usr/include/bits/timex.h: /usr/include/c++/15.2.1/ctime: @@ -7524,12 +7364,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/bits/wctype-wchar.h: +/usr/include/c++/15.2.1/backward/auto_ptr.h: + /usr/include/c++/15.2.1/backward/binders.h: /usr/include/c++/15.2.1/ext/concurrence.h: /usr/include/c++/15.2.1/cctype: +/usr/include/c++/15.2.1/bits/atomic_base.h: + +/usr/include/c++/15.2.1/bits/basic_ios.tcc: + /usr/lib/libc.so: /usr/include/glm/mat2x4.hpp: @@ -7584,12 +7430,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/hashtable.h: -/usr/include/glm/ext/matrix_double3x3_precision.hpp: - /usr/include/c++/15.2.1/bits/hashtable_policy.h: /usr/include/c++/15.2.1/bits/locale_classes.tcc: +/usr/include/c++/15.2.1/bits/shared_ptr_atomic.h: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/pmmintrin.h: /usr/include/c++/15.2.1/bits/locale_conv.h: @@ -7606,26 +7452,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/memory_resource.h: -/usr/include/c++/15.2.1/bits/algorithmfwd.h: - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h: +/usr/include/c++/15.2.1/bits/algorithmfwd.h: + /usr/include/c++/15.2.1/bits/memoryfwd.h: /usr/include/c++/15.2.1/bits/monostate.h: /usr/include/c++/15.2.1/bits/nested_exception.h: -/usr/include/glm/mat3x3.hpp: - -/usr/include/glm/exponential.hpp: - /usr/include/glm/mat4x2.hpp: /usr/include/bits/siginfo-consts.h: /usr/include/c++/15.2.1/bits/new_allocator.h: +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512minmaxintrin.h: + +/usr/include/c++/15.2.1/bits/ostream.h: + /usr/include/c++/15.2.1/bits/range_access.h: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h: @@ -7640,10 +7486,20 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/refwrap.h: +/usr/include/c++/15.2.1/bits/shared_ptr.h: + /usr/include/glm/ext/vector_int3.hpp: /usr/include/c++/15.2.1/bits/std_function.h: +/usr/include/glm/ext/vector_double2.hpp: + +/usr/include/c++/15.2.1/bits/std_mutex.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp: + +/usr/include/glm/detail/_fixes.hpp: + /usr/include/glm/ext/vector_int2.hpp: /usr/include/c++/15.2.1/bits/stl_algo.h: @@ -7660,6 +7516,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/stl_function.h: +/usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h: + /usr/include/c++/15.2.1/bits/sstream.tcc: /usr/include/glm/ext/matrix_float3x3.hpp: @@ -7668,6 +7526,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/unicode-data.h: +/usr/include/c++/15.2.1/bits/unique_ptr.h: + /usr/include/vk_video/vulkan_video_codec_h264std_encode.h: /usr/include/c++/15.2.1/cstddef: @@ -7686,16 +7546,24 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/linux/types.h: +/usr/include/c++/15.2.1/bits/ranges_uninitialized.h: + /usr/include/c++/15.2.1/ext/string_conversions.h: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h: /usr/include/c++/15.2.1/format: +/usr/include/c++/15.2.1/memory: + /usr/include/c++/15.2.1/charconv: /usr/include/c++/15.2.1/optional: +/usr/include/c++/15.2.1/pstl/execution_defs.h: + +/usr/include/c++/15.2.1/pstl/glue_memory_defs.h: + /usr/include/c++/15.2.1/source_location: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vbmiintrin.h: @@ -7722,10 +7590,6 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp: - -/usr/include/glm/detail/_fixes.hpp: - /usr/include/X11/keysymdef.h: /usr/include/glm/detail/func_common.inl: @@ -7746,6 +7610,8 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/glm/detail/func_trigonometric.inl: +/usr/include/c++/15.2.1/bits/stl_relops.h: + /usr/include/glm/detail/qualifier.hpp: /usr/include/linux/posix_types.h: @@ -7791,15 +7657,3 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/glm/detail/type_vec2.inl: /usr/include/glm/detail/type_vec3.inl: - -/usr/include/glm/simd/platform.h: - -/usr/include/glm/detail/type_vec4.hpp: - -/usr/include/glm/detail/type_vec4.inl: - -/usr/include/c++/15.2.1/set: - -/usr/include/glm/ext/matrix_double2x3_precision.hpp: - -/usr/include/glm/ext/matrix_double3x2_precision.hpp: diff --git a/build/CMakeFiles/LearningVulkan.dir/flags.make b/build/CMakeFiles/LearningVulkan.dir/flags.make index e5a0b15..1f72f03 100644 --- a/build/CMakeFiles/LearningVulkan.dir/flags.make +++ b/build/CMakeFiles/LearningVulkan.dir/flags.make @@ -4,7 +4,7 @@ # compile CXX with /usr/bin/c++ CXX_DEFINES = -CXX_INCLUDES = -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public +CXX_INCLUDES = -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public CXX_FLAGS = -std=c++20 -Wall -Wextra -O2 diff --git a/build/CMakeFiles/LearningVulkan.dir/link.d b/build/CMakeFiles/LearningVulkan.dir/link.d index feb1b0c..9bee5cd 100644 --- a/build/CMakeFiles/LearningVulkan.dir/link.d +++ b/build/CMakeFiles/LearningVulkan.dir/link.d @@ -4,7 +4,7 @@ LearningVulkan: \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ CMakeFiles/LearningVulkan.dir/src/main.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o \ @@ -13,7 +13,7 @@ LearningVulkan: \ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o \ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o \ @@ -74,7 +74,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: @@ -92,7 +92,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: diff --git a/build/CMakeFiles/LearningVulkan.dir/link.txt b/build/CMakeFiles/LearningVulkan.dir/link.txt index 2a82490..35a2af1 100644 --- a/build/CMakeFiles/LearningVulkan.dir/link.txt +++ b/build/CMakeFiles/LearningVulkan.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -Wl,--dependency-file=CMakeFiles/LearningVulkan.dir/link.d CMakeFiles/LearningVulkan.dir/src/main.cpp.o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -o LearningVulkan -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi +/usr/bin/c++ -Wl,--dependency-file=CMakeFiles/LearningVulkan.dir/link.d CMakeFiles/LearningVulkan.dir/src/main.cpp.o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -o LearningVulkan -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi diff --git a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o index 7697d18..4d46e61 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d index 95be242..e0663c6 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d @@ -35,6 +35,63 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/vk_video/vulkan_video_codec_vp9std.h \ /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ + /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception.h \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/exception_defines.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/hash_bytes.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/move.h \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ + /usr/include/c++/15.2.1/bits/iterator_concepts.h \ + /usr/include/c++/15.2.1/concepts \ + /usr/include/c++/15.2.1/bits/ptr_traits.h \ + /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/15.2.1/bits/concept_check.h \ + /usr/include/c++/15.2.1/debug/assertions.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/functexcept.h \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h \ + /usr/include/c++/15.2.1/debug/debug.h \ + /usr/include/c++/15.2.1/bits/predefined_ops.h \ + /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/15.2.1/bits/new_allocator.h \ + /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ + /usr/include/c++/15.2.1/ext/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/bits/ranges_base.h \ + /usr/include/c++/15.2.1/bits/max_size_type.h \ + /usr/include/c++/15.2.1/numbers \ + /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/stl_function.h \ + /usr/include/c++/15.2.1/backward/binders.h \ + /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/c++/15.2.1/bits/memory_resource.h \ + /usr/include/c++/15.2.1/cstddef \ + /usr/include/c++/15.2.1/bits/uses_allocator.h \ + /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ + /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -46,36 +103,14 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ /usr/include/vulkan/vulkan.h /usr/include/vulkan/vulkan_core.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/char_traits.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ /usr/include/wchar.h /usr/include/bits/floatn.h \ /usr/include/bits/floatn-common.h /usr/include/bits/types/wint_t.h \ /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/bits/version.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_construct.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ @@ -83,29 +118,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/bits/endian.h /usr/include/bits/endianness.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h \ - /usr/include/c++/15.2.1/ext/type_traits.h \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/utility.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/initializer_list \ /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ @@ -135,11 +149,6 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/cstddef \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ @@ -170,11 +179,6 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ @@ -186,10 +190,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h \ - /usr/include/c++/15.2.1/optional \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ + /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ @@ -201,13 +203,48 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/bits/unicode-data.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h \ /usr/include/GLFW/glfw3native.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ + /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ + /usr/include/glm/simd/platform.h /usr/include/glm/glm.hpp \ + /usr/include/glm/detail/_fixes.hpp /usr/include/c++/15.2.1/cmath \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ /usr/include/bits/mathcalls-helper-functions.h \ @@ -225,17 +262,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cfloat \ + /usr/include/glm/vec2.hpp /usr/include/glm/ext/vector_bool2.hpp \ /usr/include/glm/detail/type_vec2.hpp \ /usr/include/glm/detail/type_vec2.inl \ /usr/include/glm/detail/compute_vector_relational.hpp \ @@ -260,13 +288,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/hashtable.h \ /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/c++/15.2.1/bits/erase_if.h \ /usr/include/glm/detail/_vectorize.hpp \ /usr/include/glm/ext/vector_bool3_precision.hpp \ /usr/include/glm/ext/vector_float3.hpp \ @@ -358,11 +381,4 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ /usr/include/glm/detail/type_half.hpp \ /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h + /usr/include/glm/detail/func_integer.inl diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o deleted file mode 100644 index 527acaf..0000000 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o and /dev/null differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d deleted file mode 100644 index 4d3926e..0000000 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d +++ /dev/null @@ -1,357 +0,0 @@ -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: \ - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp \ - /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ - /usr/include/features.h /usr/include/features-time64.h \ - /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ - /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ - /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/string.h /usr/include/strings.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h /usr/include/bits/types/wint_t.h \ - /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o index ef6af46..0c568fb 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d index da31f55..8ef4dc7 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d @@ -1,13 +1,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp \ /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/features.h /usr/include/features-time64.h \ @@ -16,60 +11,251 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdint-least.h /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/exception.h \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ + /usr/include/c++/15.2.1/bits/move.h /usr/include/c++/15.2.1/type_traits \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ + /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/concept_check.h \ /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h \ /usr/include/c++/15.2.1/debug/debug.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ + /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/ext/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/uses_allocator.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/tuple \ + /usr/include/c++/15.2.1/bits/invoke.h \ + /usr/include/c++/15.2.1/bits/ranges_util.h \ + /usr/include/c++/15.2.1/bits/ranges_base.h \ + /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/bits/max_size_type.h \ + /usr/include/c++/15.2.1/numbers \ + /usr/include/c++/15.2.1/bits/stl_function.h \ + /usr/include/c++/15.2.1/backward/binders.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/hash_bytes.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd \ + /usr/include/c++/15.2.1/bits/stringfwd.h \ + /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ + /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ + /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ + /usr/include/c++/15.2.1/bits/ostream_insert.h \ + /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ + /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/basic_string.h \ + /usr/include/c++/15.2.1/string_view \ + /usr/include/c++/15.2.1/bits/string_view.tcc \ + /usr/include/c++/15.2.1/ext/string_conversions.h \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ + /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ + /usr/include/c++/15.2.1/bits/charconv.h \ + /usr/include/c++/15.2.1/bits/basic_string.tcc \ + /usr/include/c++/15.2.1/bits/memory_resource.h \ + /usr/include/c++/15.2.1/cstddef \ + /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ + /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/locale_facets.h \ + /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ + /usr/include/bits/wctype-wchar.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ + /usr/include/vk_video/vulkan_video_codec_h264std.h \ + /usr/include/vk_video/vulkan_video_codecs_common.h \ + /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_h264std.h \ + /usr/include/vk_video/vulkan_video_codec_h265std.h \ + /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_h265std.h \ + /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_av1std.h \ + /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_av1std.h \ + /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ + /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/algorithm \ + /usr/include/c++/15.2.1/bits/stl_algo.h \ + /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/stl_heap.h \ + /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/cassert \ + /usr/include/assert.h /usr/include/string.h /usr/include/strings.h \ + /usr/include/c++/15.2.1/utility \ + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/span \ + /usr/include/dlfcn.h /usr/include/bits/dlfcn.h \ + /usr/include/bits/dl_find_object.h /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/limits \ + /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ + /usr/include/c++/15.2.1/ctime \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ + /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/formatfwd.h \ + /usr/include/c++/15.2.1/bits/unicode.h \ + /usr/include/c++/15.2.1/bits/unicode-data.h \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_structs.hpp /usr/include/c++/15.2.1/cstring \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ + /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/glm/simd/platform.h \ + /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ + /usr/include/c++/15.2.1/cmath /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/tr1/gamma.tcc \ /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ @@ -82,24 +268,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cfloat \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ + /usr/include/glm/vec2.hpp /usr/include/glm/ext/vector_bool2.hpp \ /usr/include/glm/detail/type_vec2.hpp \ /usr/include/glm/detail/type_vec2.inl \ /usr/include/glm/detail/compute_vector_relational.hpp \ @@ -119,41 +290,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/detail/type_vec3.inl \ /usr/include/glm/detail/compute_vector_decl.hpp \ /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/hashtable.h \ /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ /usr/include/glm/detail/_vectorize.hpp \ /usr/include/glm/ext/vector_bool3_precision.hpp \ /usr/include/glm/ext/vector_float3.hpp \ @@ -246,126 +389,28 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/detail/type_half.hpp \ /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ - /usr/include/c++/15.2.1/stdlib.h \ + /usr/include/c++/15.2.1/chrono /usr/include/c++/15.2.1/bits/chrono.h \ + /usr/include/c++/15.2.1/ratio \ + /usr/include/c++/15.2.1/bits/parse_numbers.h \ + /usr/include/c++/15.2.1/sstream /usr/include/c++/15.2.1/istream \ + /usr/include/c++/15.2.1/ostream /usr/include/c++/15.2.1/bits/ostream.tcc \ + /usr/include/c++/15.2.1/bits/istream.tcc \ + /usr/include/c++/15.2.1/bits/sstream.tcc \ + /usr/include/c++/15.2.1/bits/chrono_io.h /usr/include/c++/15.2.1/iomanip \ + /usr/include/c++/15.2.1/bits/quoted_string.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ - /usr/include/string.h /usr/include/strings.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ + /usr/include/c++/15.2.1/stdlib.h \ /usr/include/glm/ext/matrix_clip_space.hpp \ /usr/include/glm/ext/scalar_constants.hpp \ /usr/include/glm/ext/scalar_constants.inl \ @@ -376,21 +421,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/gtc/matrix_transform.hpp \ /usr/include/glm/ext/matrix_projection.hpp \ /usr/include/glm/ext/matrix_projection.inl \ - /usr/include/glm/gtc/matrix_transform.inl /usr/include/c++/15.2.1/chrono \ - /usr/include/c++/15.2.1/bits/chrono.h /usr/include/c++/15.2.1/ratio \ - /usr/include/c++/15.2.1/bits/parse_numbers.h \ - /usr/include/c++/15.2.1/sstream /usr/include/c++/15.2.1/istream \ - /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/bits/basic_ios.h \ - /usr/include/c++/15.2.1/bits/basic_ios.tcc \ - /usr/include/c++/15.2.1/ostream /usr/include/c++/15.2.1/bits/ostream.h \ - /usr/include/c++/15.2.1/bits/ostream.tcc \ - /usr/include/c++/15.2.1/bits/istream.tcc \ - /usr/include/c++/15.2.1/bits/sstream.tcc \ - /usr/include/c++/15.2.1/bits/shared_ptr.h \ - /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ - /usr/include/c++/15.2.1/bits/allocated_ptr.h \ - /usr/include/c++/15.2.1/bits/unique_ptr.h \ - /usr/include/c++/15.2.1/ext/concurrence.h \ - /usr/include/c++/15.2.1/bits/align.h \ - /usr/include/c++/15.2.1/bits/chrono_io.h /usr/include/c++/15.2.1/iomanip \ - /usr/include/c++/15.2.1/bits/quoted_string.h + /usr/include/glm/gtc/matrix_transform.inl \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o index fe09910..faef169 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o index 727c25e..3db49aa 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d index 22144c8..ba5916c 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d @@ -101,205 +101,72 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/set /usr/include/c++/15.2.1/bits/stl_set.h \ /usr/include/c++/15.2.1/bits/stl_multiset.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ - /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ - /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ - /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h /usr/include/bits/waitflags.h \ - /usr/include/bits/waitstatus.h /usr/include/bits/types/locale_t.h \ - /usr/include/bits/types/__locale_t.h /usr/include/sys/types.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ - /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ - /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/glm/simd/platform.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/array /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ /usr/include/bits/types/__fpos64_t.h \ /usr/include/bits/types/struct_FILE.h \ @@ -311,40 +178,51 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/locale_facets.h \ /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ @@ -354,11 +232,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o index 461bf7d..da9a6d1 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o index 0f19988..678f1bf 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d index ba9843d..077cad4 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d @@ -1,7 +1,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp \ /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -89,213 +89,76 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /usr/include/vk_video/vulkan_video_codec_vp9std.h /usr/include/GL/gl.h \ /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ - /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ - /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ - /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h /usr/include/bits/waitflags.h \ - /usr/include/bits/waitstatus.h /usr/include/bits/types/locale_t.h \ - /usr/include/bits/types/__locale_t.h /usr/include/sys/types.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ - /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ - /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/glm/simd/platform.h \ - /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/c++/15.2.1/optional \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ /usr/include/bits/types/__fpos64_t.h \ /usr/include/bits/types/struct_FILE.h \ @@ -307,56 +170,69 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/locale_facets.h \ /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/vulkan/vulkan_core.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/cstring /usr/include/string.h \ /usr/include/strings.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o index 47c9bdd..f374f8b 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d index 0fc6879..127a35e 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d @@ -210,7 +210,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o: \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/unicode-data.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ + /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ + /usr/include/assert.h /usr/include/glm/simd/platform.h \ /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ /usr/include/c++/15.2.1/cmath /usr/include/math.h \ /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ @@ -231,9 +234,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o: \ /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/glm/simd/platform.h \ - /usr/include/c++/15.2.1/climits \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/climits \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ @@ -241,9 +242,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o: \ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ + /usr/include/glm/vec2.hpp /usr/include/glm/ext/vector_bool2.hpp \ /usr/include/glm/detail/type_vec2.hpp \ /usr/include/glm/detail/type_vec2.inl \ /usr/include/glm/detail/compute_vector_relational.hpp \ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o index 1d5b0ea..90c35f7 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d index b5d9530..55066a9 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d @@ -191,4 +191,5 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h + /usr/include/c++/15.2.1/bits/unicode-data.h \ + /usr/include/vulkan/vulkan_core.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o index 57053b6..f3b02b4 100644 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o and b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d index 592e367..ecd834c 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d @@ -2,7 +2,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp \ /usr/include/stdc-predef.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/features.h /usr/include/features-time64.h \ @@ -11,38 +11,35 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdint-least.h /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/bits/hash_bytes.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/type_traits \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/concept_check.h \ /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/ext/type_traits.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/exception.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ /usr/include/c++/15.2.1/debug/debug.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/allocator.h \ @@ -53,27 +50,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/initializer_list \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/max_size_type.h \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/hash_bytes.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/stl_function.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bits/range_access.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/memory_resource.h \ /usr/include/c++/15.2.1/cstddef \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ - /usr/include/bits/types.h /usr/include/bits/typesizes.h \ - /usr/include/bits/time64.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ - /usr/include/bits/stdint-least.h \ /usr/include/vk_video/vulkan_video_codec_h264std.h \ /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ @@ -93,8 +89,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/algorithm \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ @@ -183,6 +178,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ + /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ @@ -194,8 +194,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o deleted file mode 100644 index 3f9c606..0000000 Binary files a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o and /dev/null differ diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d deleted file mode 100644 index 81beb10..0000000 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d +++ /dev/null @@ -1,355 +0,0 @@ -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: \ - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp \ - /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ - /usr/include/features.h /usr/include/features-time64.h \ - /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ - /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ - /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h \ - /usr/include/c++/15.2.1/cstring /usr/include/string.h \ - /usr/include/strings.h diff --git a/build/LearningVulkan b/build/LearningVulkan index 450eddc..910f8b0 100755 Binary files a/build/LearningVulkan and b/build/LearningVulkan differ diff --git a/build/Makefile b/build/Makefile index 827b69e..cbf7bb4 100644 --- a/build/Makefile +++ b/build/Makefile @@ -345,29 +345,29 @@ src/private/GlfwWindowManager.cpp.s: $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s .PHONY : src/private/GlfwWindowManager.cpp.s -src/private/VulkanCommandBuffers.o: src/private/VulkanCommandBuffers.cpp.o -.PHONY : src/private/VulkanCommandBuffers.o +src/private/VulkanBuffers.o: src/private/VulkanBuffers.cpp.o +.PHONY : src/private/VulkanBuffers.o # target to build an object file -src/private/VulkanCommandBuffers.cpp.o: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -.PHONY : src/private/VulkanCommandBuffers.cpp.o +src/private/VulkanBuffers.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o +.PHONY : src/private/VulkanBuffers.cpp.o -src/private/VulkanCommandBuffers.i: src/private/VulkanCommandBuffers.cpp.i -.PHONY : src/private/VulkanCommandBuffers.i +src/private/VulkanBuffers.i: src/private/VulkanBuffers.cpp.i +.PHONY : src/private/VulkanBuffers.i # target to preprocess a source file -src/private/VulkanCommandBuffers.cpp.i: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i -.PHONY : src/private/VulkanCommandBuffers.cpp.i +src/private/VulkanBuffers.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i +.PHONY : src/private/VulkanBuffers.cpp.i -src/private/VulkanCommandBuffers.s: src/private/VulkanCommandBuffers.cpp.s -.PHONY : src/private/VulkanCommandBuffers.s +src/private/VulkanBuffers.s: src/private/VulkanBuffers.cpp.s +.PHONY : src/private/VulkanBuffers.s # target to generate assembly for a file -src/private/VulkanCommandBuffers.cpp.s: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s -.PHONY : src/private/VulkanCommandBuffers.cpp.s +src/private/VulkanBuffers.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s +.PHONY : src/private/VulkanBuffers.cpp.s src/private/VulkanContext.o: src/private/VulkanContext.cpp.o .PHONY : src/private/VulkanContext.o @@ -561,29 +561,29 @@ src/private/VulkanSwapChain.cpp.s: $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s .PHONY : src/private/VulkanSwapChain.cpp.s -src/private/VulkanVertexBuffer.o: src/private/VulkanVertexBuffer.cpp.o -.PHONY : src/private/VulkanVertexBuffer.o +src/private/VulkanTexture.o: src/private/VulkanTexture.cpp.o +.PHONY : src/private/VulkanTexture.o # target to build an object file -src/private/VulkanVertexBuffer.cpp.o: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -.PHONY : src/private/VulkanVertexBuffer.cpp.o +src/private/VulkanTexture.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o +.PHONY : src/private/VulkanTexture.cpp.o -src/private/VulkanVertexBuffer.i: src/private/VulkanVertexBuffer.cpp.i -.PHONY : src/private/VulkanVertexBuffer.i +src/private/VulkanTexture.i: src/private/VulkanTexture.cpp.i +.PHONY : src/private/VulkanTexture.i # target to preprocess a source file -src/private/VulkanVertexBuffer.cpp.i: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i -.PHONY : src/private/VulkanVertexBuffer.cpp.i +src/private/VulkanTexture.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i +.PHONY : src/private/VulkanTexture.cpp.i -src/private/VulkanVertexBuffer.s: src/private/VulkanVertexBuffer.cpp.s -.PHONY : src/private/VulkanVertexBuffer.s +src/private/VulkanTexture.s: src/private/VulkanTexture.cpp.s +.PHONY : src/private/VulkanTexture.s # target to generate assembly for a file -src/private/VulkanVertexBuffer.cpp.s: - $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s -.PHONY : src/private/VulkanVertexBuffer.cpp.s +src/private/VulkanTexture.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/LearningVulkan.dir/build.make CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s +.PHONY : src/private/VulkanTexture.cpp.s src/utilities/Logger.o: src/utilities/Logger.cpp.o .PHONY : src/utilities/Logger.o @@ -669,9 +669,9 @@ help: @echo "... src/private/GlfwWindowManager.o" @echo "... src/private/GlfwWindowManager.i" @echo "... src/private/GlfwWindowManager.s" - @echo "... src/private/VulkanCommandBuffers.o" - @echo "... src/private/VulkanCommandBuffers.i" - @echo "... src/private/VulkanCommandBuffers.s" + @echo "... src/private/VulkanBuffers.o" + @echo "... src/private/VulkanBuffers.i" + @echo "... src/private/VulkanBuffers.s" @echo "... src/private/VulkanContext.o" @echo "... src/private/VulkanContext.i" @echo "... src/private/VulkanContext.s" @@ -696,9 +696,9 @@ help: @echo "... src/private/VulkanSwapChain.o" @echo "... src/private/VulkanSwapChain.i" @echo "... src/private/VulkanSwapChain.s" - @echo "... src/private/VulkanVertexBuffer.o" - @echo "... src/private/VulkanVertexBuffer.i" - @echo "... src/private/VulkanVertexBuffer.s" + @echo "... src/private/VulkanTexture.o" + @echo "... src/private/VulkanTexture.i" + @echo "... src/private/VulkanTexture.s" @echo "... src/utilities/Logger.o" @echo "... src/utilities/Logger.i" @echo "... src/utilities/Logger.s" diff --git a/build/compile_commands.json b/build/compile_commands.json index c63b4b8..7878a3a 100644 --- a/build/compile_commands.json +++ b/build/compile_commands.json @@ -1,127 +1,127 @@ [ { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/main.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/main.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/main.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/main.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/main.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/main.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp", - "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp", - "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp", + "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp", + "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanFramebuffers.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanFramebuffers.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanFramebuffers.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanRenderPass.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanRenderPass.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanRenderPass.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp", - "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp", - "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp", + "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp", + "output": "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp", "output": "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_demo.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_demo.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_demo.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_draw.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_draw.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_draw.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_tables.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_tables.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_tables.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_widgets.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_widgets.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_widgets.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o" }, { "directory": "/home/Jordan/Projects/CPP/LearningVulkan/build", - "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.cpp", + "command": "/usr/bin/c++ -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public -std=c++20 -Wall -Wextra -O2 -o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.cpp", "file": "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.cpp", "output": "CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o" } diff --git a/lib/tinyobjloader/tiny_obj_loader.h b/lib/tinyobjloader/tiny_obj_loader.h new file mode 100644 index 0000000..a4481ca --- /dev/null +++ b/lib/tinyobjloader/tiny_obj_loader.h @@ -0,0 +1,4222 @@ +/* +The MIT License (MIT) + +Copyright (c) 2012-Present, Syoyo Fujita and many contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// +// version 2.0.0 : Add new object oriented API. 1.x API is still provided. +// * Add python binding. +// * Support line primitive. +// * Support points primitive. +// * Support multiple search path for .mtl(v1 API). +// * Support vertex skinning weight `vw`(as an tinyobj +// extension). Note that this differs vertex weight([w] +// component in `v` line) +// * Support escaped whitespece in mtllib +// * Add robust triangulation using Mapbox +// earcut(TINYOBJLOADER_USE_MAPBOX_EARCUT). +// version 1.4.0 : Modifed ParseTextureNameAndOption API +// version 1.3.1 : Make ParseTextureNameAndOption API public +// version 1.3.0 : Separate warning and error message(breaking API of LoadObj) +// version 1.2.3 : Added color space extension('-colorspace') to tex opts. +// version 1.2.2 : Parse multiple group names. +// version 1.2.1 : Added initial support for line('l') primitive(PR #178) +// version 1.2.0 : Hardened implementation(#175) +// version 1.1.1 : Support smoothing groups(#162) +// version 1.1.0 : Support parsing vertex color(#144) +// version 1.0.8 : Fix parsing `g` tag just after `usemtl`(#138) +// version 1.0.7 : Support multiple tex options(#126) +// version 1.0.6 : Add TINYOBJLOADER_USE_DOUBLE option(#124) +// version 1.0.5 : Ignore `Tr` when `d` exists in MTL(#43) +// version 1.0.4 : Support multiple filenames for 'mtllib'(#112) +// version 1.0.3 : Support parsing texture options(#85) +// version 1.0.2 : Improve parsing speed by about a factor of 2 for large +// files(#105) +// version 1.0.1 : Fixes a shape is lost if obj ends with a 'usemtl'(#104) +// version 1.0.0 : Change data structure. Change license from BSD to MIT. +// + +// +// Use this in *one* .cc +// #define TINYOBJLOADER_IMPLEMENTATION +// #include "tiny_obj_loader.h" +// + +#ifndef TINY_OBJ_LOADER_H_ +#define TINY_OBJ_LOADER_H_ + +#include +#include +#include + +namespace tinyobj +{ + +// TODO(syoyo): Better C++11 detection for older compiler +#if __cplusplus > 199711L + #define TINYOBJ_OVERRIDE override +#else + #define TINYOBJ_OVERRIDE +#endif + +#ifdef __clang__ + #pragma clang diagnostic push + #if __has_warning("-Wzero-as-null-pointer-constant") + #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" + #endif + + #pragma clang diagnostic ignored "-Wpadded" + +#endif + + // https://en.wikipedia.org/wiki/Wavefront_.obj_file says ... + // + // -blendu on | off # set horizontal texture blending + // (default on) + // -blendv on | off # set vertical texture blending + // (default on) + // -boost real_value # boost mip-map sharpness + // -mm base_value gain_value # modify texture map values (default + // 0 1) + // # base_value = brightness, + // gain_value = contrast + // -o u [v [w]] # Origin offset (default + // 0 0 0) + // -s u [v [w]] # Scale (default + // 1 1 1) + // -t u [v [w]] # Turbulence (default + // 0 0 0) + // -texres resolution # texture resolution to create + // -clamp on | off # only render texels in the clamped + // 0-1 range (default off) + // # When unclamped, textures are + // repeated across a surface, + // # when clamped, only texels which + // fall within the 0-1 + // # range are rendered. + // -bm mult_value # bump multiplier (for bump maps + // only) + // + // -imfchan r | g | b | m | l | z # specifies which channel of the file + // is used to + // # create a scalar or bump texture. + // r:red, g:green, + // # b:blue, m:matte, l:luminance, + // z:z-depth.. + // # (the default for bump is 'l' and + // for decal is 'm') + // bump -imfchan r bumpmap.tga # says to use the red channel of + // bumpmap.tga as the bumpmap + // + // For reflection maps... + // + // -type sphere # specifies a sphere for a "refl" + // reflection map + // -type cube_top | cube_bottom | # when using a cube map, the texture + // file for each + // cube_front | cube_back | # side of the cube is specified + // separately + // cube_left | cube_right + // + // TinyObjLoader extension. + // + // -colorspace SPACE # Color space of the texture. e.g. + // 'sRGB` or 'linear' + // + +#ifdef TINYOBJLOADER_USE_DOUBLE + // #pragma message "using double" + typedef double real_t; +#else + // #pragma message "using float" + typedef float real_t; +#endif + + typedef enum + { + TEXTURE_TYPE_NONE, // default + TEXTURE_TYPE_SPHERE, + TEXTURE_TYPE_CUBE_TOP, + TEXTURE_TYPE_CUBE_BOTTOM, + TEXTURE_TYPE_CUBE_FRONT, + TEXTURE_TYPE_CUBE_BACK, + TEXTURE_TYPE_CUBE_LEFT, + TEXTURE_TYPE_CUBE_RIGHT + } texture_type_t; + + struct texture_option_t + { + texture_type_t type; // -type (default TEXTURE_TYPE_NONE) + real_t sharpness; // -boost (default 1.0?) + real_t brightness; // base_value in -mm option (default 0) + real_t contrast; // gain_value in -mm option (default 1) + real_t origin_offset[3]; // -o u [v [w]] (default 0 0 0) + real_t scale[3]; // -s u [v [w]] (default 1 1 1) + real_t turbulence[3]; // -t u [v [w]] (default 0 0 0) + int texture_resolution; // -texres resolution (No default value in the spec. + // We'll use -1) + bool clamp; // -clamp (default false) + char imfchan; // -imfchan (the default for bump is 'l' and for decal is 'm') + bool blendu; // -blendu (default on) + bool blendv; // -blendv (default on) + real_t bump_multiplier; // -bm (for bump maps only, default 1.0) + + // extension + std::string colorspace; // Explicitly specify color space of stored texel + // value. Usually `sRGB` or `linear` (default empty). + }; + + struct material_t + { + std::string name; + + real_t ambient[3]; + real_t diffuse[3]; + real_t specular[3]; + real_t transmittance[3]; + real_t emission[3]; + real_t shininess; + real_t ior; // index of refraction + real_t dissolve; // 1 == opaque; 0 == fully transparent + // illumination model (see http://www.fileformat.info/format/material/) + int illum; + + int dummy; // Suppress padding warning. + + std::string ambient_texname; // map_Ka. For ambient or ambient occlusion. + std::string diffuse_texname; // map_Kd + std::string specular_texname; // map_Ks + std::string specular_highlight_texname; // map_Ns + std::string bump_texname; // map_bump, map_Bump, bump + std::string displacement_texname; // disp + std::string alpha_texname; // map_d + std::string reflection_texname; // refl + + texture_option_t ambient_texopt; + texture_option_t diffuse_texopt; + texture_option_t specular_texopt; + texture_option_t specular_highlight_texopt; + texture_option_t bump_texopt; + texture_option_t displacement_texopt; + texture_option_t alpha_texopt; + texture_option_t reflection_texopt; + + // PBR extension + // http://exocortex.com/blog/extending_wavefront_mtl_to_support_pbr + real_t roughness; // [0, 1] default 0 + real_t metallic; // [0, 1] default 0 + real_t sheen; // [0, 1] default 0 + real_t clearcoat_thickness; // [0, 1] default 0 + real_t clearcoat_roughness; // [0, 1] default 0 + real_t anisotropy; // aniso. [0, 1] default 0 + real_t anisotropy_rotation; // anisor. [0, 1] default 0 + real_t pad0; + std::string roughness_texname; // map_Pr + std::string metallic_texname; // map_Pm + std::string sheen_texname; // map_Ps + std::string emissive_texname; // map_Ke + std::string normal_texname; // norm. For normal mapping. + + texture_option_t roughness_texopt; + texture_option_t metallic_texopt; + texture_option_t sheen_texopt; + texture_option_t emissive_texopt; + texture_option_t normal_texopt; + + int pad2; + + std::map unknown_parameter; + +#ifdef TINY_OBJ_LOADER_PYTHON_BINDING + // For pybind11 + std::array GetDiffuse() + { + std::array values; + values[0] = double(diffuse[0]); + values[1] = double(diffuse[1]); + values[2] = double(diffuse[2]); + + return values; + } + + std::array GetSpecular() + { + std::array values; + values[0] = double(specular[0]); + values[1] = double(specular[1]); + values[2] = double(specular[2]); + + return values; + } + + std::array GetTransmittance() + { + std::array values; + values[0] = double(transmittance[0]); + values[1] = double(transmittance[1]); + values[2] = double(transmittance[2]); + + return values; + } + + std::array GetEmission() + { + std::array values; + values[0] = double(emission[0]); + values[1] = double(emission[1]); + values[2] = double(emission[2]); + + return values; + } + + std::array GetAmbient() + { + std::array values; + values[0] = double(ambient[0]); + values[1] = double(ambient[1]); + values[2] = double(ambient[2]); + + return values; + } + + void SetDiffuse(std::array& a) + { + diffuse[0] = real_t(a[0]); + diffuse[1] = real_t(a[1]); + diffuse[2] = real_t(a[2]); + } + + void SetAmbient(std::array& a) + { + ambient[0] = real_t(a[0]); + ambient[1] = real_t(a[1]); + ambient[2] = real_t(a[2]); + } + + void SetSpecular(std::array& a) + { + specular[0] = real_t(a[0]); + specular[1] = real_t(a[1]); + specular[2] = real_t(a[2]); + } + + void SetTransmittance(std::array& a) + { + transmittance[0] = real_t(a[0]); + transmittance[1] = real_t(a[1]); + transmittance[2] = real_t(a[2]); + } + + std::string GetCustomParameter(const std::string& key) + { + std::map::const_iterator it = unknown_parameter.find(key); + + if (it != unknown_parameter.end()) + { + return it->second; + } + return std::string(); + } + +#endif + }; + + struct tag_t + { + std::string name; + + std::vector intValues; + std::vector floatValues; + std::vector stringValues; + }; + + struct joint_and_weight_t + { + int joint_id; + real_t weight; + }; + + struct skin_weight_t + { + int vertex_id; // Corresponding vertex index in `attrib_t::vertices`. + // Compared to `index_t`, this index must be positive and + // start with 0(does not allow relative indexing) + std::vector weightValues; + }; + + // Index struct to support different indices for vtx/normal/texcoord. + // -1 means not used. + struct index_t + { + int vertex_index; + int normal_index; + int texcoord_index; + }; + + struct mesh_t + { + std::vector indices; + std::vector num_face_vertices; // The number of vertices per + // face. 3 = triangle, 4 = quad, ... + std::vector material_ids; // per-face material ID + std::vector smoothing_group_ids; // per-face smoothing group + // ID(0 = off. positive value + // = group id) + std::vector tags; // SubD tag + }; + + // struct path_t { + // std::vector indices; // pairs of indices for lines + //}; + + struct lines_t + { + // Linear flattened indices. + std::vector indices; // indices for vertices(poly lines) + std::vector num_line_vertices; // The number of vertices per line. + }; + + struct points_t + { + std::vector indices; // indices for points + }; + + struct shape_t + { + std::string name; + mesh_t mesh; + lines_t lines; + points_t points; + }; + + // Vertex attributes + struct attrib_t + { + std::vector vertices; // 'v'(xyz) + + // For backward compatibility, we store vertex weight in separate array. + std::vector vertex_weights; // 'v'(w) + std::vector normals; // 'vn' + std::vector texcoords; // 'vt'(uv) + + // For backward compatibility, we store texture coordinate 'w' in separate + // array. + std::vector texcoord_ws; // 'vt'(w) + std::vector colors; // extension: vertex colors + + // + // TinyObj extension. + // + + // NOTE(syoyo): array index is based on the appearance order. + // To get a corresponding skin weight for a specific vertex id `vid`, + // Need to reconstruct a look up table: `skin_weight_t::vertex_id` == `vid` + // (e.g. using std::map, std::unordered_map) + std::vector skin_weights; + + attrib_t() {} + + // + // For pybind11 + // + const std::vector& GetVertices() const { return vertices; } + + const std::vector& GetVertexWeights() const { return vertex_weights; } + }; + + struct callback_t + { + // W is optional and set to 1 if there is no `w` item in `v` line + void (*vertex_cb)(void* user_data, real_t x, real_t y, real_t z, real_t w); + void (*vertex_color_cb)( + void* user_data, + real_t x, + real_t y, + real_t z, + real_t r, + real_t g, + real_t b, + bool has_color + ); + void (*normal_cb)(void* user_data, real_t x, real_t y, real_t z); + + // y and z are optional and set to 0 if there is no `y` and/or `z` item(s) in + // `vt` line. + void (*texcoord_cb)(void* user_data, real_t x, real_t y, real_t z); + + // called per 'f' line. num_indices is the number of face indices(e.g. 3 for + // triangle, 4 for quad) + // 0 will be passed for undefined index in index_t members. + void (*index_cb)(void* user_data, index_t* indices, int num_indices); + // `name` material name, `material_id` = the array index of material_t[]. -1 + // if + // a material not found in .mtl + void (*usemtl_cb)(void* user_data, const char* name, int material_id); + // `materials` = parsed material data. + void (*mtllib_cb)(void* user_data, const material_t* materials, int num_materials); + // There may be multiple group names + void (*group_cb)(void* user_data, const char** names, int num_names); + void (*object_cb)(void* user_data, const char* name); + + callback_t() + : vertex_cb(NULL) + , vertex_color_cb(NULL) + , normal_cb(NULL) + , texcoord_cb(NULL) + , index_cb(NULL) + , usemtl_cb(NULL) + , mtllib_cb(NULL) + , group_cb(NULL) + , object_cb(NULL) + { + } + }; + + class MaterialReader + { + public: + MaterialReader() {} + virtual ~MaterialReader(); + + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) = 0; + }; + + /// + /// Read .mtl from a file. + /// + class MaterialFileReader : public MaterialReader + { + public: + // Path could contain separator(';' in Windows, ':' in Posix) + explicit MaterialFileReader(const std::string& mtl_basedir) : m_mtlBaseDir(mtl_basedir) {} + virtual ~MaterialFileReader() TINYOBJ_OVERRIDE {} + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) TINYOBJ_OVERRIDE; + + private: + std::string m_mtlBaseDir; + }; + + /// + /// Read .mtl from a stream. + /// + class MaterialStreamReader : public MaterialReader + { + public: + explicit MaterialStreamReader(std::istream& inStream) : m_inStream(inStream) {} + virtual ~MaterialStreamReader() TINYOBJ_OVERRIDE {} + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) TINYOBJ_OVERRIDE; + + private: + std::istream& m_inStream; + }; + + // v2 API + struct ObjReaderConfig + { + bool triangulate; // triangulate polygon? + + // Currently not used. + // "simple" or empty: Create triangle fan + // "earcut": Use the algorithm based on Ear clipping + std::string triangulation_method; + + /// Parse vertex color. + /// If vertex color is not present, its filled with default value. + /// false = no vertex color + /// This will increase memory of parsed .obj + bool vertex_color; + + /// + /// Search path to .mtl file. + /// Default = "" = search from the same directory of .obj file. + /// Valid only when loading .obj from a file. + /// + std::string mtl_search_path; + + ObjReaderConfig() : triangulate(true), triangulation_method("simple"), vertex_color(true) {} + }; + + /// + /// Wavefront .obj reader class(v2 API) + /// + class ObjReader + { + public: + ObjReader() : valid_(false) {} + + /// + /// Load .obj and .mtl from a file. + /// + /// @param[in] filename wavefront .obj filename + /// @param[in] config Reader configuration + /// + bool ParseFromFile( + const std::string& filename, + const ObjReaderConfig& config = ObjReaderConfig() + ); + + /// + /// Parse .obj from a text string. + /// Need to supply .mtl text string by `mtl_text`. + /// This function ignores `mtllib` line in .obj text. + /// + /// @param[in] obj_text wavefront .obj filename + /// @param[in] mtl_text wavefront .mtl filename + /// @param[in] config Reader configuration + /// + bool ParseFromString( + const std::string& obj_text, + const std::string& mtl_text, + const ObjReaderConfig& config = ObjReaderConfig() + ); + + /// + /// .obj was loaded or parsed correctly. + /// + bool Valid() const { return valid_; } + + const attrib_t& GetAttrib() const { return attrib_; } + + const std::vector& GetShapes() const { return shapes_; } + + const std::vector& GetMaterials() const { return materials_; } + + /// + /// Warning message(may be filled after `Load` or `Parse`) + /// + const std::string& Warning() const { return warning_; } + + /// + /// Error message(filled when `Load` or `Parse` failed) + /// + const std::string& Error() const { return error_; } + + private: + bool valid_; + + attrib_t attrib_; + std::vector shapes_; + std::vector materials_; + + std::string warning_; + std::string error_; + }; + + /// ==>>========= Legacy v1 API ============================================= + + /// Loads .obj from a file. + /// 'attrib', 'shapes' and 'materials' will be filled with parsed shape data + /// 'shapes' will be filled with parsed shape data + /// Returns true when loading .obj become success. + /// Returns warning message into `warn`, and error message into `err` + /// 'mtl_basedir' is optional, and used for base directory for .mtl file. + /// In default(`NULL'), .mtl file is searched from an application's working + /// directory. + /// 'triangulate' is optional, and used whether triangulate polygon face in .obj + /// or not. + /// Option 'default_vcols_fallback' specifies whether vertex colors should + /// always be defined, even if no colors are given (fallback to white). + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + const char* filename, + const char* mtl_basedir = NULL, + bool triangulate = true, + bool default_vcols_fallback = true + ); + + /// Loads .obj from a file with custom user callback. + /// .mtl is loaded as usual and parsed material_t data will be passed to + /// `callback.mtllib_cb`. + /// Returns true when loading .obj/.mtl become success. + /// Returns warning message into `warn`, and error message into `err` + /// See `examples/callback_api/` for how to use this function. + bool LoadObjWithCallback( + std::istream& inStream, + const callback_t& callback, + void* user_data = NULL, + MaterialReader* readMatFn = NULL, + std::string* warn = NULL, + std::string* err = NULL + ); + + /// Loads object from a std::istream, uses `readMatFn` to retrieve + /// std::istream for materials. + /// Returns true when loading .obj become success. + /// Returns warning and error message into `err` + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + std::istream* inStream, + MaterialReader* readMatFn = NULL, + bool triangulate = true, + bool default_vcols_fallback = true + ); + + /// Loads materials into std::map + void LoadMtl( + std::map* material_map, + std::vector* materials, + std::istream* inStream, + std::string* warning, + std::string* err + ); + + /// + /// Parse texture name and texture option for custom texture parameter through + /// material::unknown_parameter + /// + /// @param[out] texname Parsed texture name + /// @param[out] texopt Parsed texopt + /// @param[in] linebuf Input string + /// + bool + ParseTextureNameAndOption(std::string* texname, texture_option_t* texopt, const char* linebuf); + + /// =<<========== Legacy v1 API ============================================= + +} // namespace tinyobj + +#endif // TINY_OBJ_LOADER_H_ + +#ifdef TINYOBJLOADER_IMPLEMENTATION +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef TINYOBJLOADER_USE_MAPBOX_EARCUT + + #ifdef TINYOBJLOADER_DONOT_INCLUDE_MAPBOX_EARCUT + // Assume earcut.hpp is included outside of tiny_obj_loader.h + #else + + #ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Weverything" + #endif + + #include + + #include "mapbox/earcut.hpp" + + #ifdef __clang__ + #pragma clang diagnostic pop + #endif + + #endif + +#endif // TINYOBJLOADER_USE_MAPBOX_EARCUT + +namespace tinyobj +{ + + MaterialReader::~MaterialReader() {} + + struct vertex_index_t + { + int v_idx, vt_idx, vn_idx; + vertex_index_t() : v_idx(-1), vt_idx(-1), vn_idx(-1) {} + explicit vertex_index_t(int idx) : v_idx(idx), vt_idx(idx), vn_idx(idx) {} + vertex_index_t(int vidx, int vtidx, int vnidx) : v_idx(vidx), vt_idx(vtidx), vn_idx(vnidx) + { + } + }; + + // Internal data structure for face representation + // index + smoothing group. + struct face_t + { + unsigned int smoothing_group_id; // smoothing group id. 0 = smoothing groupd is off. + int pad_; + std::vector vertex_indices; // face vertex indices. + + face_t() : smoothing_group_id(0), pad_(0) {} + }; + + // Internal data structure for line representation + struct __line_t + { + // l v1/vt1 v2/vt2 ... + // In the specification, line primitrive does not have normal index, but + // TinyObjLoader allow it + std::vector vertex_indices; + }; + + // Internal data structure for points representation + struct __points_t + { + // p v1 v2 ... + // In the specification, point primitrive does not have normal index and + // texture coord index, but TinyObjLoader allow it. + std::vector vertex_indices; + }; + + struct tag_sizes + { + tag_sizes() : num_ints(0), num_reals(0), num_strings(0) {} + int num_ints; + int num_reals; + int num_strings; + }; + + struct obj_shape + { + std::vector v; + std::vector vn; + std::vector vt; + }; + + // + // Manages group of primitives(face, line, points, ...) + struct PrimGroup + { + std::vector faceGroup; + std::vector<__line_t> lineGroup; + std::vector<__points_t> pointsGroup; + + void clear() + { + faceGroup.clear(); + lineGroup.clear(); + pointsGroup.clear(); + } + + bool IsEmpty() const + { + return faceGroup.empty() && lineGroup.empty() && pointsGroup.empty(); + } + + // TODO(syoyo): bspline, surface, ... + }; + + // See + // http://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf + static std::istream& safeGetline(std::istream& is, std::string& t) + { + t.clear(); + + // The characters in the stream are read one-by-one using a std::streambuf. + // That is faster than reading them one-by-one using the std::istream. + // Code that uses streambuf this way must be guarded by a sentry object. + // The sentry object performs various tasks, + // such as thread synchronization and updating the stream state. + + std::istream::sentry se(is, true); + std::streambuf* sb = is.rdbuf(); + + if (se) + { + for (;;) + { + int c = sb->sbumpc(); + switch (c) + { + case '\n': + return is; + case '\r': + if (sb->sgetc() == '\n') + { + sb->sbumpc(); + } + return is; + case EOF: + // Also handle the case when the last line has no line ending + if (t.empty()) + { + is.setstate(std::ios::eofbit); + } + return is; + default: + t += static_cast(c); + } + } + } + + return is; + } + +#define IS_SPACE(x) (((x) == ' ') || ((x) == '\t')) +#define IS_DIGIT(x) (static_cast((x) - '0') < static_cast(10)) +#define IS_NEW_LINE(x) (((x) == '\r') || ((x) == '\n') || ((x) == '\0')) + + template static inline std::string toString(const T& t) + { + std::stringstream ss; + ss << t; + return ss.str(); + } + + static inline std::string removeUtf8Bom(const std::string& input) + { + // UTF-8 BOM = 0xEF,0xBB,0xBF + if (input.size() >= 3 && static_cast(input[0]) == 0xEF + && static_cast(input[1]) == 0xBB + && static_cast(input[2]) == 0xBF) + { + return input.substr(3); // Skip BOM + } + return input; + } + + struct warning_context + { + std::string* warn; + size_t line_number; + }; + + // Make index zero-base, and also support relative index. + static inline bool + fixIndex(int idx, int n, int* ret, bool allow_zero, const warning_context& context) + { + if (!ret) + { + return false; + } + + if (idx > 0) + { + (*ret) = idx - 1; + return true; + } + + if (idx == 0) + { + // zero is not allowed according to the spec. + if (context.warn) + { + (*context.warn) += + "A zero value index found (will have a value of -1 for normal and " + "tex indices. Line " + + toString(context.line_number) + ").\n"; + } + + (*ret) = idx - 1; + return allow_zero; + } + + if (idx < 0) + { + (*ret) = n + idx; // negative value = relative + if ((*ret) < 0) + { + return false; // invalid relative index + } + return true; + } + + return false; // never reach here. + } + + static inline std::string parseString(const char** token) + { + std::string s; + (*token) += strspn((*token), " \t"); + size_t e = strcspn((*token), " \t\r"); + s = std::string((*token), &(*token)[e]); + (*token) += e; + return s; + } + + static inline int parseInt(const char** token) + { + (*token) += strspn((*token), " \t"); + int i = atoi((*token)); + (*token) += strcspn((*token), " \t\r"); + return i; + } + + // Tries to parse a floating point number located at s. + // + // s_end should be a location in the string where reading should absolutely + // stop. For example at the end of the string, to prevent buffer overflows. + // + // Parses the following EBNF grammar: + // sign = "+" | "-" ; + // END = ? anything not in digit ? + // digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; + // integer = [sign] , digit , {digit} ; + // decimal = integer , ["." , integer] ; + // float = ( decimal , END ) | ( decimal , ("E" | "e") , integer , END ) ; + // + // Valid strings are for example: + // -0 +3.1417e+2 -0.0E-3 1.0324 -1.41 11e2 + // + // If the parsing is a success, result is set to the parsed value and true + // is returned. + // + // The function is greedy and will parse until any of the following happens: + // - a non-conforming character is encountered. + // - s_end is reached. + // + // The following situations triggers a failure: + // - s >= s_end. + // - parse failure. + // + static bool tryParseDouble(const char* s, const char* s_end, double* result) + { + if (s >= s_end) + { + return false; + } + + double mantissa = 0.0; + // This exponent is base 2 rather than 10. + // However the exponent we parse is supposed to be one of ten, + // thus we must take care to convert the exponent/and or the + // mantissa to a * 2^E, where a is the mantissa and E is the + // exponent. + // To get the final double we will use ldexp, it requires the + // exponent to be in base 2. + int exponent = 0; + + // NOTE: THESE MUST BE DECLARED HERE SINCE WE ARE NOT ALLOWED + // TO JUMP OVER DEFINITIONS. + char sign = '+'; + char exp_sign = '+'; + char const* curr = s; + + // How many characters were read in a loop. + int read = 0; + // Tells whether a loop terminated due to reaching s_end. + bool end_not_reached = false; + bool leading_decimal_dots = false; + + /* + BEGIN PARSING. + */ + + // Find out what sign we've got. + if (*curr == '+' || *curr == '-') + { + sign = *curr; + curr++; + if ((curr != s_end) && (*curr == '.')) + { + // accept. Somethig like `.7e+2`, `-.5234` + leading_decimal_dots = true; + } + } + else if (IS_DIGIT(*curr)) + { /* Pass through. */ + } + else if (*curr == '.') + { + // accept. Somethig like `.7e+2`, `-.5234` + leading_decimal_dots = true; + } + else + { + goto fail; + } + + // Read the integer part. + end_not_reached = (curr != s_end); + if (!leading_decimal_dots) + { + while (end_not_reached && IS_DIGIT(*curr)) + { + mantissa *= 10; + mantissa += static_cast(*curr - 0x30); + curr++; + read++; + end_not_reached = (curr != s_end); + } + + // We must make sure we actually got something. + if (read == 0) + { + goto fail; + } + } + + // We allow numbers of form "#", "###" etc. + if (!end_not_reached) + { + goto assemble; + } + + // Read the decimal part. + if (*curr == '.') + { + curr++; + read = 1; + end_not_reached = (curr != s_end); + while (end_not_reached && IS_DIGIT(*curr)) + { + static const double pow_lut[] = { + 1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, + }; + const int lut_entries = sizeof pow_lut / sizeof pow_lut[0]; + + // NOTE: Don't use powf here, it will absolutely murder precision. + mantissa += static_cast(*curr - 0x30) + * (read < lut_entries ? pow_lut[read] : std::pow(10.0, -read)); + read++; + curr++; + end_not_reached = (curr != s_end); + } + } + else if (*curr == 'e' || *curr == 'E') + { + } + else + { + goto assemble; + } + + if (!end_not_reached) + { + goto assemble; + } + + // Read the exponent part. + if (*curr == 'e' || *curr == 'E') + { + curr++; + // Figure out if a sign is present and if it is. + end_not_reached = (curr != s_end); + if (end_not_reached && (*curr == '+' || *curr == '-')) + { + exp_sign = *curr; + curr++; + } + else if (IS_DIGIT(*curr)) + { /* Pass through. */ + } + else + { + // Empty E is not allowed. + goto fail; + } + + read = 0; + end_not_reached = (curr != s_end); + while (end_not_reached && IS_DIGIT(*curr)) + { + // To avoid annoying MSVC's min/max macro definiton, + // Use hardcoded int max value + if (exponent > (2147483647 / 10)) + { // 2147483647 = std::numeric_limits::max() + // Integer overflow + goto fail; + } + exponent *= 10; + exponent += static_cast(*curr - 0x30); + curr++; + read++; + end_not_reached = (curr != s_end); + } + exponent *= (exp_sign == '+' ? 1 : -1); + if (read == 0) + { + goto fail; + } + } + + assemble: + *result = (sign == '+' ? 1 : -1) + * (exponent ? std::ldexp(mantissa * std::pow(5.0, exponent), exponent) : mantissa); + return true; + fail: + return false; + } + + static inline real_t parseReal(const char** token, double default_value = 0.0) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + double val = default_value; + tryParseDouble((*token), end, &val); + real_t f = static_cast(val); + (*token) = end; + return f; + } + + static inline bool parseReal(const char** token, real_t* out) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + double val; + bool ret = tryParseDouble((*token), end, &val); + if (ret) + { + real_t f = static_cast(val); + (*out) = f; + } + (*token) = end; + return ret; + } + + static inline void parseReal2( + real_t* x, + real_t* y, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0 + ) + { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + } + + static inline void parseReal3( + real_t* x, + real_t* y, + real_t* z, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0 + ) + { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + } + +#if 0 // not used +static inline void parseV(real_t *x, real_t *y, real_t *z, real_t *w, + const char **token, const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0, + const double default_w = 1.0) { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + (*w) = parseReal(token, default_w); +} +#endif + + // Extension: parse vertex with colors(6 items) + // Return 3: xyz, 4: xyzw, 6: xyzrgb + // `r`: red(case 6) or [w](case 4) + static inline int parseVertexWithColor( + real_t* x, + real_t* y, + real_t* z, + real_t* r, + real_t* g, + real_t* b, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0 + ) + { + // TODO: Check error + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + + // - 4 components(x, y, z, w) ot 6 components + bool has_r = parseReal(token, r); + + if (!has_r) + { + (*r) = (*g) = (*b) = 1.0; + return 3; + } + + bool has_g = parseReal(token, g); + + if (!has_g) + { + (*g) = (*b) = 1.0; + return 4; + } + + bool has_b = parseReal(token, b); + + if (!has_b) + { + (*r) = (*g) = (*b) = 1.0; + return 3; // treated as xyz + } + + return 6; + } + + static inline bool parseOnOff(const char** token, bool default_value = true) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + + bool ret = default_value; + if ((0 == strncmp((*token), "on", 2))) + { + ret = true; + } + else if ((0 == strncmp((*token), "off", 3))) + { + ret = false; + } + + (*token) = end; + return ret; + } + + static inline texture_type_t + parseTextureType(const char** token, texture_type_t default_value = TEXTURE_TYPE_NONE) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + texture_type_t ty = default_value; + + if ((0 == strncmp((*token), "cube_top", strlen("cube_top")))) + { + ty = TEXTURE_TYPE_CUBE_TOP; + } + else if ((0 == strncmp((*token), "cube_bottom", strlen("cube_bottom")))) + { + ty = TEXTURE_TYPE_CUBE_BOTTOM; + } + else if ((0 == strncmp((*token), "cube_left", strlen("cube_left")))) + { + ty = TEXTURE_TYPE_CUBE_LEFT; + } + else if ((0 == strncmp((*token), "cube_right", strlen("cube_right")))) + { + ty = TEXTURE_TYPE_CUBE_RIGHT; + } + else if ((0 == strncmp((*token), "cube_front", strlen("cube_front")))) + { + ty = TEXTURE_TYPE_CUBE_FRONT; + } + else if ((0 == strncmp((*token), "cube_back", strlen("cube_back")))) + { + ty = TEXTURE_TYPE_CUBE_BACK; + } + else if ((0 == strncmp((*token), "sphere", strlen("sphere")))) + { + ty = TEXTURE_TYPE_SPHERE; + } + + (*token) = end; + return ty; + } + + static tag_sizes parseTagTriple(const char** token) + { + tag_sizes ts; + + (*token) += strspn((*token), " \t"); + ts.num_ints = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return ts; + } + + (*token)++; // Skip '/' + + (*token) += strspn((*token), " \t"); + ts.num_reals = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return ts; + } + (*token)++; // Skip '/' + + ts.num_strings = parseInt(token); + + return ts; + } + + // Parse triples with index offsets: i, i/j/k, i//k, i/j + static bool parseTriple( + const char** token, + int vsize, + int vnsize, + int vtsize, + vertex_index_t* ret, + const warning_context& context + ) + { + if (!ret) + { + return false; + } + + vertex_index_t vi(-1); + + if (!fixIndex(atoi((*token)), vsize, &vi.v_idx, false, context)) + { + return false; + } + + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + (*ret) = vi; + return true; + } + (*token)++; + + // i//k + if ((*token)[0] == '/') + { + (*token)++; + if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) + { + return false; + } + (*token) += strcspn((*token), "/ \t\r"); + (*ret) = vi; + return true; + } + + // i/j/k or i/j + if (!fixIndex(atoi((*token)), vtsize, &vi.vt_idx, true, context)) + { + return false; + } + + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + (*ret) = vi; + return true; + } + + // i/j/k + (*token)++; // skip '/' + if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) + { + return false; + } + (*token) += strcspn((*token), "/ \t\r"); + + (*ret) = vi; + + return true; + } + + // Parse raw triples: i, i/j/k, i//k, i/j + static vertex_index_t parseRawTriple(const char** token) + { + vertex_index_t vi(static_cast(0)); // 0 is an invalid index in OBJ + + vi.v_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return vi; + } + (*token)++; + + // i//k + if ((*token)[0] == '/') + { + (*token)++; + vi.vn_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + return vi; + } + + // i/j/k or i/j + vi.vt_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return vi; + } + + // i/j/k + (*token)++; // skip '/' + vi.vn_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + return vi; + } + + bool + ParseTextureNameAndOption(std::string* texname, texture_option_t* texopt, const char* linebuf) + { + // @todo { write more robust lexer and parser. } + bool found_texname = false; + std::string texture_name; + + const char* token = linebuf; // Assume line ends with NULL + + while (!IS_NEW_LINE((*token))) + { + token += strspn(token, " \t"); // skip space + if ((0 == strncmp(token, "-blendu", 7)) && IS_SPACE((token[7]))) + { + token += 8; + texopt->blendu = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-blendv", 7)) && IS_SPACE((token[7]))) + { + token += 8; + texopt->blendv = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-clamp", 6)) && IS_SPACE((token[6]))) + { + token += 7; + texopt->clamp = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-boost", 6)) && IS_SPACE((token[6]))) + { + token += 7; + texopt->sharpness = parseReal(&token, 1.0); + } + else if ((0 == strncmp(token, "-bm", 3)) && IS_SPACE((token[3]))) + { + token += 4; + texopt->bump_multiplier = parseReal(&token, 1.0); + } + else if ((0 == strncmp(token, "-o", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->origin_offset[0]), + &(texopt->origin_offset[1]), + &(texopt->origin_offset[2]), + &token + ); + } + else if ((0 == strncmp(token, "-s", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->scale[0]), + &(texopt->scale[1]), + &(texopt->scale[2]), + &token, + 1.0, + 1.0, + 1.0 + ); + } + else if ((0 == strncmp(token, "-t", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->turbulence[0]), + &(texopt->turbulence[1]), + &(texopt->turbulence[2]), + &token + ); + } + else if ((0 == strncmp(token, "-type", 5)) && IS_SPACE((token[5]))) + { + token += 5; + texopt->type = parseTextureType((&token), TEXTURE_TYPE_NONE); + } + else if ((0 == strncmp(token, "-texres", 7)) && IS_SPACE((token[7]))) + { + token += 7; + // TODO(syoyo): Check if arg is int type. + texopt->texture_resolution = parseInt(&token); + } + else if ((0 == strncmp(token, "-imfchan", 8)) && IS_SPACE((token[8]))) + { + token += 9; + token += strspn(token, " \t"); + const char* end = token + strcspn(token, " \t\r"); + if ((end - token) == 1) + { // Assume one char for -imfchan + texopt->imfchan = (*token); + } + token = end; + } + else if ((0 == strncmp(token, "-mm", 3)) && IS_SPACE((token[3]))) + { + token += 4; + parseReal2(&(texopt->brightness), &(texopt->contrast), &token, 0.0, 1.0); + } + else if ((0 == strncmp(token, "-colorspace", 11)) && IS_SPACE((token[11]))) + { + token += 12; + texopt->colorspace = parseString(&token); + } + else + { +// Assume texture filename +#if 0 + size_t len = strcspn(token, " \t\r"); // untile next space + texture_name = std::string(token, token + len); + token += len; + + token += strspn(token, " \t"); // skip space +#else + // Read filename until line end to parse filename containing whitespace + // TODO(syoyo): Support parsing texture option flag after the filename. + texture_name = std::string(token); + token += texture_name.length(); +#endif + + found_texname = true; + } + } + + if (found_texname) + { + (*texname) = texture_name; + return true; + } + else + { + return false; + } + } + + static void InitTexOpt(texture_option_t* texopt, const bool is_bump) + { + if (is_bump) + { + texopt->imfchan = 'l'; + } + else + { + texopt->imfchan = 'm'; + } + texopt->bump_multiplier = static_cast(1.0); + texopt->clamp = false; + texopt->blendu = true; + texopt->blendv = true; + texopt->sharpness = static_cast(1.0); + texopt->brightness = static_cast(0.0); + texopt->contrast = static_cast(1.0); + texopt->origin_offset[0] = static_cast(0.0); + texopt->origin_offset[1] = static_cast(0.0); + texopt->origin_offset[2] = static_cast(0.0); + texopt->scale[0] = static_cast(1.0); + texopt->scale[1] = static_cast(1.0); + texopt->scale[2] = static_cast(1.0); + texopt->turbulence[0] = static_cast(0.0); + texopt->turbulence[1] = static_cast(0.0); + texopt->turbulence[2] = static_cast(0.0); + texopt->texture_resolution = -1; + texopt->type = TEXTURE_TYPE_NONE; + } + + static void InitMaterial(material_t* material) + { + InitTexOpt(&material->ambient_texopt, /* is_bump */ false); + InitTexOpt(&material->diffuse_texopt, /* is_bump */ false); + InitTexOpt(&material->specular_texopt, /* is_bump */ false); + InitTexOpt(&material->specular_highlight_texopt, /* is_bump */ false); + InitTexOpt(&material->bump_texopt, /* is_bump */ true); + InitTexOpt(&material->displacement_texopt, /* is_bump */ false); + InitTexOpt(&material->alpha_texopt, /* is_bump */ false); + InitTexOpt(&material->reflection_texopt, /* is_bump */ false); + InitTexOpt(&material->roughness_texopt, /* is_bump */ false); + InitTexOpt(&material->metallic_texopt, /* is_bump */ false); + InitTexOpt(&material->sheen_texopt, /* is_bump */ false); + InitTexOpt(&material->emissive_texopt, /* is_bump */ false); + InitTexOpt( + &material->normal_texopt, + /* is_bump */ false + ); // @fixme { is_bump will be true? } + material->name = ""; + material->ambient_texname = ""; + material->diffuse_texname = ""; + material->specular_texname = ""; + material->specular_highlight_texname = ""; + material->bump_texname = ""; + material->displacement_texname = ""; + material->reflection_texname = ""; + material->alpha_texname = ""; + for (int i = 0; i < 3; i++) + { + material->ambient[i] = static_cast(0.0); + material->diffuse[i] = static_cast(0.0); + material->specular[i] = static_cast(0.0); + material->transmittance[i] = static_cast(0.0); + material->emission[i] = static_cast(0.0); + } + material->illum = 0; + material->dissolve = static_cast(1.0); + material->shininess = static_cast(1.0); + material->ior = static_cast(1.0); + + material->roughness = static_cast(0.0); + material->metallic = static_cast(0.0); + material->sheen = static_cast(0.0); + material->clearcoat_thickness = static_cast(0.0); + material->clearcoat_roughness = static_cast(0.0); + material->anisotropy_rotation = static_cast(0.0); + material->anisotropy = static_cast(0.0); + material->roughness_texname = ""; + material->metallic_texname = ""; + material->sheen_texname = ""; + material->emissive_texname = ""; + material->normal_texname = ""; + + material->unknown_parameter.clear(); + } + + // code from https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html + template static int pnpoly(int nvert, T* vertx, T* verty, T testx, T testy) + { + int i, j, c = 0; + for (i = 0, j = nvert - 1; i < nvert; j = i++) + { + if (((verty[i] > testy) != (verty[j] > testy)) + && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + + vertx[i])) + { + c = !c; + } + } + return c; + } + + struct TinyObjPoint + { + real_t x, y, z; + TinyObjPoint() : x(0), y(0), z(0) {} + TinyObjPoint(real_t x_, real_t y_, real_t z_) : x(x_), y(y_), z(z_) {} + }; + + inline TinyObjPoint cross(const TinyObjPoint& v1, const TinyObjPoint& v2) + { + return TinyObjPoint( + v1.y * v2.z - v1.z * v2.y, + v1.z * v2.x - v1.x * v2.z, + v1.x * v2.y - v1.y * v2.x + ); + } + + inline real_t dot(const TinyObjPoint& v1, const TinyObjPoint& v2) + { + return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z); + } + + inline real_t GetLength(TinyObjPoint& e) + { + return std::sqrt(e.x * e.x + e.y * e.y + e.z * e.z); + } + + inline TinyObjPoint Normalize(TinyObjPoint e) + { + real_t inv_length = real_t(1) / GetLength(e); + return TinyObjPoint(e.x * inv_length, e.y * inv_length, e.z * inv_length); + } + + inline TinyObjPoint WorldToLocal( + const TinyObjPoint& a, + const TinyObjPoint& u, + const TinyObjPoint& v, + const TinyObjPoint& w + ) + { + return TinyObjPoint(dot(a, u), dot(a, v), dot(a, w)); + } + + // TODO(syoyo): refactor function. + static bool exportGroupsToShape( + shape_t* shape, + const PrimGroup& prim_group, + const std::vector& tags, + const int material_id, + const std::string& name, + bool triangulate, + const std::vector& v, + std::string* warn + ) + { + if (prim_group.IsEmpty()) + { + return false; + } + + shape->name = name; + + // polygon + if (!prim_group.faceGroup.empty()) + { + // Flatten vertices and indices + for (size_t i = 0; i < prim_group.faceGroup.size(); i++) + { + const face_t& face = prim_group.faceGroup[i]; + + size_t npolys = face.vertex_indices.size(); + + if (npolys < 3) + { + // Face must have 3+ vertices. + if (warn) + { + (*warn) += "Degenerated face found\n."; + } + continue; + } + + if (triangulate && npolys != 3) + { + if (npolys == 4) + { + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i1 = face.vertex_indices[1]; + vertex_index_t i2 = face.vertex_indices[2]; + vertex_index_t i3 = face.vertex_indices[3]; + + size_t vi0 = size_t(i0.v_idx); + size_t vi1 = size_t(i1.v_idx); + size_t vi2 = size_t(i2.v_idx); + size_t vi3 = size_t(i3.v_idx); + + if (((3 * vi0 + 2) >= v.size()) || ((3 * vi1 + 2) >= v.size()) + || ((3 * vi2 + 2) >= v.size()) || ((3 * vi3 + 2) >= v.size())) + { + // Invalid triangle. + // FIXME(syoyo): Is it ok to simply skip this invalid triangle? + if (warn) + { + (*warn) += "Face with invalid vertex index found.\n"; + } + continue; + } + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + real_t v1x = v[vi1 * 3 + 0]; + real_t v1y = v[vi1 * 3 + 1]; + real_t v1z = v[vi1 * 3 + 2]; + real_t v2x = v[vi2 * 3 + 0]; + real_t v2y = v[vi2 * 3 + 1]; + real_t v2z = v[vi2 * 3 + 2]; + real_t v3x = v[vi3 * 3 + 0]; + real_t v3y = v[vi3 * 3 + 1]; + real_t v3z = v[vi3 * 3 + 2]; + + // There are two candidates to split the quad into two triangles. + // + // Choose the shortest edge. + // TODO: Is it better to determine the edge to split by calculating + // the area of each triangle? + // + // +---+ + // |\ | + // | \ | + // | \| + // +---+ + // + // +---+ + // | /| + // | / | + // |/ | + // +---+ + + real_t e02x = v2x - v0x; + real_t e02y = v2y - v0y; + real_t e02z = v2z - v0z; + real_t e13x = v3x - v1x; + real_t e13y = v3y - v1y; + real_t e13z = v3z - v1z; + + real_t sqr02 = e02x * e02x + e02y * e02y + e02z * e02z; + real_t sqr13 = e13x * e13x + e13y * e13y + e13z * e13z; + + index_t idx0, idx1, idx2, idx3; + + idx0.vertex_index = i0.v_idx; + idx0.normal_index = i0.vn_idx; + idx0.texcoord_index = i0.vt_idx; + idx1.vertex_index = i1.v_idx; + idx1.normal_index = i1.vn_idx; + idx1.texcoord_index = i1.vt_idx; + idx2.vertex_index = i2.v_idx; + idx2.normal_index = i2.vn_idx; + idx2.texcoord_index = i2.vt_idx; + idx3.vertex_index = i3.v_idx; + idx3.normal_index = i3.vn_idx; + idx3.texcoord_index = i3.vt_idx; + + if (sqr02 < sqr13) + { + // [0, 1, 2], [0, 2, 3] + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx2); + shape->mesh.indices.push_back(idx3); + } + else + { + // [0, 1, 3], [1, 2, 3] + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx3); + + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + shape->mesh.indices.push_back(idx3); + } + + // Two triangle faces + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.num_face_vertices.push_back(3); + + shape->mesh.material_ids.push_back(material_id); + shape->mesh.material_ids.push_back(material_id); + + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + else + { +#ifdef TINYOBJLOADER_USE_MAPBOX_EARCUT + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i0_2 = i0; + + // TMW change: Find the normal axis of the polygon using Newell's + // method + TinyObjPoint n; + for (size_t k = 0; k < npolys; ++k) + { + i0 = face.vertex_indices[k % npolys]; + size_t vi0 = size_t(i0.v_idx); + + size_t j = (k + 1) % npolys; + i0_2 = face.vertex_indices[j]; + size_t vi0_2 = size_t(i0_2.v_idx); + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + + real_t v0x_2 = v[vi0_2 * 3 + 0]; + real_t v0y_2 = v[vi0_2 * 3 + 1]; + real_t v0z_2 = v[vi0_2 * 3 + 2]; + + const TinyObjPoint point1(v0x, v0y, v0z); + const TinyObjPoint point2(v0x_2, v0y_2, v0z_2); + + TinyObjPoint a( + point1.x - point2.x, + point1.y - point2.y, + point1.z - point2.z + ); + TinyObjPoint b( + point1.x + point2.x, + point1.y + point2.y, + point1.z + point2.z + ); + + n.x += (a.y * b.z); + n.y += (a.z * b.x); + n.z += (a.x * b.y); + } + real_t length_n = GetLength(n); + // Check if zero length normal + if (length_n <= 0) + { + continue; + } + // Negative is to flip the normal to the correct direction + real_t inv_length = -real_t(1.0) / length_n; + n.x *= inv_length; + n.y *= inv_length; + n.z *= inv_length; + + TinyObjPoint axis_w, axis_v, axis_u; + axis_w = n; + TinyObjPoint a; + if (std::fabs(axis_w.x) > real_t(0.9999999)) + { + a = TinyObjPoint(0, 1, 0); + } + else + { + a = TinyObjPoint(1, 0, 0); + } + axis_v = Normalize(cross(axis_w, a)); + axis_u = cross(axis_w, axis_v); + using Point = std::array; + + // first polyline define the main polygon. + // following polylines define holes(not used in tinyobj). + std::vector> polygon; + + std::vector polyline; + + // TMW change: Find best normal and project v0x and v0y to those + // coordinates, instead of picking a plane aligned with an axis (which + // can flip polygons). + + // Fill polygon data(facevarying vertices). + for (size_t k = 0; k < npolys; k++) + { + i0 = face.vertex_indices[k]; + size_t vi0 = size_t(i0.v_idx); + + assert(((3 * vi0 + 2) < v.size())); + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + + TinyObjPoint polypoint(v0x, v0y, v0z); + TinyObjPoint loc = WorldToLocal(polypoint, axis_u, axis_v, axis_w); + + polyline.push_back({ loc.x, loc.y }); + } + + polygon.push_back(polyline); + std::vector indices = mapbox::earcut(polygon); + // => result = 3 * faces, clockwise + + assert(indices.size() % 3 == 0); + + // Reconstruct vertex_index_t + for (size_t k = 0; k < indices.size() / 3; k++) + { + { + index_t idx0, idx1, idx2; + idx0.vertex_index = face.vertex_indices[indices[3 * k + 0]].v_idx; + idx0.normal_index = face.vertex_indices[indices[3 * k + 0]].vn_idx; + idx0.texcoord_index = + face.vertex_indices[indices[3 * k + 0]].vt_idx; + idx1.vertex_index = face.vertex_indices[indices[3 * k + 1]].v_idx; + idx1.normal_index = face.vertex_indices[indices[3 * k + 1]].vn_idx; + idx1.texcoord_index = + face.vertex_indices[indices[3 * k + 1]].vt_idx; + idx2.vertex_index = face.vertex_indices[indices[3 * k + 2]].v_idx; + idx2.normal_index = face.vertex_indices[indices[3 * k + 2]].vn_idx; + idx2.texcoord_index = + face.vertex_indices[indices[3 * k + 2]].vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + } + +#else // Built-in ear clipping triangulation + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i1(-1); + vertex_index_t i2 = face.vertex_indices[1]; + + // find the two axes to work in + size_t axes[2] = { 1, 2 }; + for (size_t k = 0; k < npolys; ++k) + { + i0 = face.vertex_indices[(k + 0) % npolys]; + i1 = face.vertex_indices[(k + 1) % npolys]; + i2 = face.vertex_indices[(k + 2) % npolys]; + size_t vi0 = size_t(i0.v_idx); + size_t vi1 = size_t(i1.v_idx); + size_t vi2 = size_t(i2.v_idx); + + if (((3 * vi0 + 2) >= v.size()) || ((3 * vi1 + 2) >= v.size()) + || ((3 * vi2 + 2) >= v.size())) + { + // Invalid triangle. + // FIXME(syoyo): Is it ok to simply skip this invalid triangle? + continue; + } + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + real_t v1x = v[vi1 * 3 + 0]; + real_t v1y = v[vi1 * 3 + 1]; + real_t v1z = v[vi1 * 3 + 2]; + real_t v2x = v[vi2 * 3 + 0]; + real_t v2y = v[vi2 * 3 + 1]; + real_t v2z = v[vi2 * 3 + 2]; + real_t e0x = v1x - v0x; + real_t e0y = v1y - v0y; + real_t e0z = v1z - v0z; + real_t e1x = v2x - v1x; + real_t e1y = v2y - v1y; + real_t e1z = v2z - v1z; + real_t cx = std::fabs(e0y * e1z - e0z * e1y); + real_t cy = std::fabs(e0z * e1x - e0x * e1z); + real_t cz = std::fabs(e0x * e1y - e0y * e1x); + const real_t epsilon = std::numeric_limits::epsilon(); + // std::cout << "cx " << cx << ", cy " << cy << ", cz " << cz << + // "\n"; + if (cx > epsilon || cy > epsilon || cz > epsilon) + { + // std::cout << "corner\n"; + // found a corner + if (cx > cy && cx > cz) + { + // std::cout << "pattern0\n"; + } + else + { + // std::cout << "axes[0] = 0\n"; + axes[0] = 0; + if (cz > cx && cz > cy) + { + // std::cout << "axes[1] = 1\n"; + axes[1] = 1; + } + } + break; + } + } + + face_t remainingFace = face; // copy + size_t guess_vert = 0; + vertex_index_t ind[3]; + real_t vx[3]; + real_t vy[3]; + + // How many iterations can we do without decreasing the remaining + // vertices. + size_t remainingIterations = face.vertex_indices.size(); + size_t previousRemainingVertices = remainingFace.vertex_indices.size(); + + while (remainingFace.vertex_indices.size() > 3 && remainingIterations > 0) + { + // std::cout << "remainingIterations " << remainingIterations << + // "\n"; + + npolys = remainingFace.vertex_indices.size(); + if (guess_vert >= npolys) + { + guess_vert -= npolys; + } + + if (previousRemainingVertices != npolys) + { + // The number of remaining vertices decreased. Reset counters. + previousRemainingVertices = npolys; + remainingIterations = npolys; + } + else + { + // We didn't consume a vertex on previous iteration, reduce the + // available iterations. + remainingIterations--; + } + + for (size_t k = 0; k < 3; k++) + { + ind[k] = remainingFace.vertex_indices[(guess_vert + k) % npolys]; + size_t vi = size_t(ind[k].v_idx); + if (((vi * 3 + axes[0]) >= v.size()) + || ((vi * 3 + axes[1]) >= v.size())) + { + // ??? + vx[k] = static_cast(0.0); + vy[k] = static_cast(0.0); + } + else + { + vx[k] = v[vi * 3 + axes[0]]; + vy[k] = v[vi * 3 + axes[1]]; + } + } + + // + // area is calculated per face + // + real_t e0x = vx[1] - vx[0]; + real_t e0y = vy[1] - vy[0]; + real_t e1x = vx[2] - vx[1]; + real_t e1y = vy[2] - vy[1]; + real_t cross = e0x * e1y - e0y * e1x; + // std::cout << "axes = " << axes[0] << ", " << axes[1] << "\n"; + // std::cout << "e0x, e0y, e1x, e1y " << e0x << ", " << e0y << ", " + // << e1x << ", " << e1y << "\n"; + + real_t area = + (vx[0] * vy[1] - vy[0] * vx[1]) * static_cast(0.5); + // std::cout << "cross " << cross << ", area " << area << "\n"; + // if an internal angle + if (cross * area < static_cast(0.0)) + { + // std::cout << "internal \n"; + guess_vert += 1; + // std::cout << "guess vert : " << guess_vert << "\n"; + continue; + } + + // check all other verts in case they are inside this triangle + bool overlap = false; + for (size_t otherVert = 3; otherVert < npolys; ++otherVert) + { + size_t idx = (guess_vert + otherVert) % npolys; + + if (idx >= remainingFace.vertex_indices.size()) + { + // std::cout << "???0\n"; + // ??? + continue; + } + + size_t ovi = size_t(remainingFace.vertex_indices[idx].v_idx); + + if (((ovi * 3 + axes[0]) >= v.size()) + || ((ovi * 3 + axes[1]) >= v.size())) + { + // std::cout << "???1\n"; + // ??? + continue; + } + real_t tx = v[ovi * 3 + axes[0]]; + real_t ty = v[ovi * 3 + axes[1]]; + if (pnpoly(3, vx, vy, tx, ty)) + { + // std::cout << "overlap\n"; + overlap = true; + break; + } + } + + if (overlap) + { + // std::cout << "overlap2\n"; + guess_vert += 1; + continue; + } + + // this triangle is an ear + { + index_t idx0, idx1, idx2; + idx0.vertex_index = ind[0].v_idx; + idx0.normal_index = ind[0].vn_idx; + idx0.texcoord_index = ind[0].vt_idx; + idx1.vertex_index = ind[1].v_idx; + idx1.normal_index = ind[1].vn_idx; + idx1.texcoord_index = ind[1].vt_idx; + idx2.vertex_index = ind[2].v_idx; + idx2.normal_index = ind[2].vn_idx; + idx2.texcoord_index = ind[2].vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + + // remove v1 from the list + size_t removed_vert_index = (guess_vert + 1) % npolys; + while (removed_vert_index + 1 < npolys) + { + remainingFace.vertex_indices[removed_vert_index] = + remainingFace.vertex_indices[removed_vert_index + 1]; + removed_vert_index += 1; + } + remainingFace.vertex_indices.pop_back(); + } + + // std::cout << "remainingFace.vi.size = " << + // remainingFace.vertex_indices.size() << "\n"; + if (remainingFace.vertex_indices.size() == 3) + { + i0 = remainingFace.vertex_indices[0]; + i1 = remainingFace.vertex_indices[1]; + i2 = remainingFace.vertex_indices[2]; + { + index_t idx0, idx1, idx2; + idx0.vertex_index = i0.v_idx; + idx0.normal_index = i0.vn_idx; + idx0.texcoord_index = i0.vt_idx; + idx1.vertex_index = i1.v_idx; + idx1.normal_index = i1.vn_idx; + idx1.texcoord_index = i1.vt_idx; + idx2.vertex_index = i2.v_idx; + idx2.normal_index = i2.vn_idx; + idx2.texcoord_index = i2.vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + } +#endif + } // npolys + } + else + { + for (size_t k = 0; k < npolys; k++) + { + index_t idx; + idx.vertex_index = face.vertex_indices[k].v_idx; + idx.normal_index = face.vertex_indices[k].vn_idx; + idx.texcoord_index = face.vertex_indices[k].vt_idx; + shape->mesh.indices.push_back(idx); + } + + shape->mesh.num_face_vertices.push_back(static_cast(npolys)); + shape->mesh.material_ids.push_back(material_id); // per face + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); // per face + } + } + + shape->mesh.tags = tags; + } + + // line + if (!prim_group.lineGroup.empty()) + { + // Flatten indices + for (size_t i = 0; i < prim_group.lineGroup.size(); i++) + { + for (size_t j = 0; j < prim_group.lineGroup[i].vertex_indices.size(); j++) + { + const vertex_index_t& vi = prim_group.lineGroup[i].vertex_indices[j]; + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + shape->lines.indices.push_back(idx); + } + + shape->lines.num_line_vertices.push_back( + int(prim_group.lineGroup[i].vertex_indices.size()) + ); + } + } + + // points + if (!prim_group.pointsGroup.empty()) + { + // Flatten & convert indices + for (size_t i = 0; i < prim_group.pointsGroup.size(); i++) + { + for (size_t j = 0; j < prim_group.pointsGroup[i].vertex_indices.size(); j++) + { + const vertex_index_t& vi = prim_group.pointsGroup[i].vertex_indices[j]; + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + shape->points.indices.push_back(idx); + } + } + } + + return true; + } + + // Split a string with specified delimiter character and escape character. + // https://rosettacode.org/wiki/Tokenize_a_string_with_escaping#C.2B.2B + static void + SplitString(const std::string& s, char delim, char escape, std::vector& elems) + { + std::string token; + + bool escaping = false; + for (size_t i = 0; i < s.size(); ++i) + { + char ch = s[i]; + if (escaping) + { + escaping = false; + } + else if (ch == escape) + { + escaping = true; + continue; + } + else if (ch == delim) + { + if (!token.empty()) + { + elems.push_back(token); + } + token.clear(); + continue; + } + token += ch; + } + + elems.push_back(token); + } + + static std::string JoinPath(const std::string& dir, const std::string& filename) + { + if (dir.empty()) + { + return filename; + } + else + { + // check '/' + char lastChar = *dir.rbegin(); + if (lastChar != '/') + { + return dir + std::string("/") + filename; + } + else + { + return dir + filename; + } + } + } + + void LoadMtl( + std::map* material_map, + std::vector* materials, + std::istream* inStream, + std::string* warning, + std::string* err + ) + { + (void)err; + + // Create a default material anyway. + material_t material; + InitMaterial(&material); + + // Issue 43. `d` wins against `Tr` since `Tr` is not in the MTL specification. + bool has_d = false; + bool has_tr = false; + + // has_kd is used to set a default diffuse value when map_Kd is present + // and Kd is not. + bool has_kd = false; + + std::stringstream warn_ss; + + size_t line_no = 0; + std::string linebuf; + while (inStream->peek() != -1) + { + safeGetline(*inStream, linebuf); + line_no++; + + // Trim trailing whitespace. + if (linebuf.size() > 0) + { + linebuf = linebuf.substr(0, linebuf.find_last_not_of(" \t") + 1); + } + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + if (line_no == 1) + { + linebuf = removeUtf8Bom(linebuf); + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // new mtl + if ((0 == strncmp(token, "newmtl", 6)) && IS_SPACE((token[6]))) + { + // flush previous material. + if (!material.name.empty()) + { + material_map->insert( + std::pair( + material.name, + static_cast(materials->size()) + ) + ); + materials->push_back(material); + } + + // initial temporary material + InitMaterial(&material); + + has_d = false; + has_tr = false; + has_kd = false; + + // set new mtl name + token += 7; + { + std::string namebuf = parseString(&token); + // TODO: empty name check? + if (namebuf.empty()) + { + if (warning) + { + (*warning) += "empty material name in `newmtl`\n"; + } + } + material.name = namebuf; + } + continue; + } + + // ambient + if (token[0] == 'K' && token[1] == 'a' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.ambient[0] = r; + material.ambient[1] = g; + material.ambient[2] = b; + continue; + } + + // diffuse + if (token[0] == 'K' && token[1] == 'd' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.diffuse[0] = r; + material.diffuse[1] = g; + material.diffuse[2] = b; + has_kd = true; + continue; + } + + // specular + if (token[0] == 'K' && token[1] == 's' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.specular[0] = r; + material.specular[1] = g; + material.specular[2] = b; + continue; + } + + // transmittance + if ((token[0] == 'K' && token[1] == 't' && IS_SPACE((token[2]))) + || (token[0] == 'T' && token[1] == 'f' && IS_SPACE((token[2])))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.transmittance[0] = r; + material.transmittance[1] = g; + material.transmittance[2] = b; + continue; + } + + // ior(index of refraction) + if (token[0] == 'N' && token[1] == 'i' && IS_SPACE((token[2]))) + { + token += 2; + material.ior = parseReal(&token); + continue; + } + + // emission + if (token[0] == 'K' && token[1] == 'e' && IS_SPACE(token[2])) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.emission[0] = r; + material.emission[1] = g; + material.emission[2] = b; + continue; + } + + // shininess + if (token[0] == 'N' && token[1] == 's' && IS_SPACE(token[2])) + { + token += 2; + material.shininess = parseReal(&token); + continue; + } + + // illum model + if (0 == strncmp(token, "illum", 5) && IS_SPACE(token[5])) + { + token += 6; + material.illum = parseInt(&token); + continue; + } + + // dissolve + if ((token[0] == 'd' && IS_SPACE(token[1]))) + { + token += 1; + material.dissolve = parseReal(&token); + + if (has_tr) + { + warn_ss << "Both `d` and `Tr` parameters defined for \"" << material.name + << "\". Use the value of `d` for dissolve (line " << line_no + << " in .mtl.)\n"; + } + has_d = true; + continue; + } + if (token[0] == 'T' && token[1] == 'r' && IS_SPACE(token[2])) + { + token += 2; + if (has_d) + { + // `d` wins. Ignore `Tr` value. + warn_ss << "Both `d` and `Tr` parameters defined for \"" << material.name + << "\". Use the value of `d` for dissolve (line " << line_no + << " in .mtl.)\n"; + } + else + { + // We invert value of Tr(assume Tr is in range [0, 1]) + // NOTE: Interpretation of Tr is application(exporter) dependent. For + // some application(e.g. 3ds max obj exporter), Tr = d(Issue 43) + material.dissolve = static_cast(1.0) - parseReal(&token); + } + has_tr = true; + continue; + } + + // PBR: roughness + if (token[0] == 'P' && token[1] == 'r' && IS_SPACE(token[2])) + { + token += 2; + material.roughness = parseReal(&token); + continue; + } + + // PBR: metallic + if (token[0] == 'P' && token[1] == 'm' && IS_SPACE(token[2])) + { + token += 2; + material.metallic = parseReal(&token); + continue; + } + + // PBR: sheen + if (token[0] == 'P' && token[1] == 's' && IS_SPACE(token[2])) + { + token += 2; + material.sheen = parseReal(&token); + continue; + } + + // PBR: clearcoat thickness + if (token[0] == 'P' && token[1] == 'c' && IS_SPACE(token[2])) + { + token += 2; + material.clearcoat_thickness = parseReal(&token); + continue; + } + + // PBR: clearcoat roughness + if ((0 == strncmp(token, "Pcr", 3)) && IS_SPACE(token[3])) + { + token += 4; + material.clearcoat_roughness = parseReal(&token); + continue; + } + + // PBR: anisotropy + if ((0 == strncmp(token, "aniso", 5)) && IS_SPACE(token[5])) + { + token += 6; + material.anisotropy = parseReal(&token); + continue; + } + + // PBR: anisotropy rotation + if ((0 == strncmp(token, "anisor", 6)) && IS_SPACE(token[6])) + { + token += 7; + material.anisotropy_rotation = parseReal(&token); + continue; + } + + // ambient or ambient occlusion texture + if ((0 == strncmp(token, "map_Ka", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.ambient_texname), + &(material.ambient_texopt), + token + ); + continue; + } + + // diffuse texture + if ((0 == strncmp(token, "map_Kd", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.diffuse_texname), + &(material.diffuse_texopt), + token + ); + + // Set a decent diffuse default value if a diffuse texture is specified + // without a matching Kd value. + if (!has_kd) + { + material.diffuse[0] = static_cast(0.6); + material.diffuse[1] = static_cast(0.6); + material.diffuse[2] = static_cast(0.6); + } + + continue; + } + + // specular texture + if ((0 == strncmp(token, "map_Ks", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.specular_texname), + &(material.specular_texopt), + token + ); + continue; + } + + // specular highlight texture + if ((0 == strncmp(token, "map_Ns", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.specular_highlight_texname), + &(material.specular_highlight_texopt), + token + ); + continue; + } + + // bump texture + if (((0 == strncmp(token, "map_bump", 8)) || (0 == strncmp(token, "map_Bump", 8))) + && IS_SPACE(token[8])) + { + token += 9; + ParseTextureNameAndOption(&(material.bump_texname), &(material.bump_texopt), token); + continue; + } + + // bump texture + if ((0 == strncmp(token, "bump", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption(&(material.bump_texname), &(material.bump_texopt), token); + continue; + } + + // alpha texture + if ((0 == strncmp(token, "map_d", 5)) && IS_SPACE(token[5])) + { + token += 6; + material.alpha_texname = token; + ParseTextureNameAndOption( + &(material.alpha_texname), + &(material.alpha_texopt), + token + ); + continue; + } + + // displacement texture + if (((0 == strncmp(token, "map_disp", 8)) || (0 == strncmp(token, "map_Disp", 8))) + && IS_SPACE(token[8])) + { + token += 9; + ParseTextureNameAndOption( + &(material.displacement_texname), + &(material.displacement_texopt), + token + ); + continue; + } + + // displacement texture + if ((0 == strncmp(token, "disp", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.displacement_texname), + &(material.displacement_texopt), + token + ); + continue; + } + + // reflection map + if ((0 == strncmp(token, "refl", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.reflection_texname), + &(material.reflection_texopt), + token + ); + continue; + } + + // PBR: roughness texture + if ((0 == strncmp(token, "map_Pr", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.roughness_texname), + &(material.roughness_texopt), + token + ); + continue; + } + + // PBR: metallic texture + if ((0 == strncmp(token, "map_Pm", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.metallic_texname), + &(material.metallic_texopt), + token + ); + continue; + } + + // PBR: sheen texture + if ((0 == strncmp(token, "map_Ps", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.sheen_texname), + &(material.sheen_texopt), + token + ); + continue; + } + + // PBR: emissive texture + if ((0 == strncmp(token, "map_Ke", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.emissive_texname), + &(material.emissive_texopt), + token + ); + continue; + } + + // PBR: normal map texture + if ((0 == strncmp(token, "norm", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.normal_texname), + &(material.normal_texopt), + token + ); + continue; + } + + // unknown parameter + const char* _space = strchr(token, ' '); + if (!_space) + { + _space = strchr(token, '\t'); + } + if (_space) + { + std::ptrdiff_t len = _space - token; + std::string key(token, static_cast(len)); + std::string value = _space + 1; + material.unknown_parameter.insert(std::pair(key, value)); + } + } + // flush last material. + material_map->insert( + std::pair(material.name, static_cast(materials->size())) + ); + materials->push_back(material); + + if (warning) + { + (*warning) = warn_ss.str(); + } + } + + bool MaterialFileReader::operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) + { + if (!m_mtlBaseDir.empty()) + { +#ifdef _WIN32 + char sep = ';'; +#else + char sep = ':'; +#endif + + // https://stackoverflow.com/questions/5167625/splitting-a-c-stdstring-using-tokens-e-g + std::vector paths; + std::istringstream f(m_mtlBaseDir); + + std::string s; + while (getline(f, s, sep)) + { + paths.push_back(s); + } + + for (size_t i = 0; i < paths.size(); i++) + { + std::string filepath = JoinPath(paths[i], matId); + + std::ifstream matIStream(filepath.c_str()); + if (matIStream) + { + LoadMtl(matMap, materials, &matIStream, warn, err); + + return true; + } + } + + std::stringstream ss; + ss << "Material file [ " << matId << " ] not found in a path : " << m_mtlBaseDir + << "\n"; + if (warn) + { + (*warn) += ss.str(); + } + return false; + } + else + { + std::string filepath = matId; + std::ifstream matIStream(filepath.c_str()); + if (matIStream) + { + LoadMtl(matMap, materials, &matIStream, warn, err); + + return true; + } + + std::stringstream ss; + ss << "Material file [ " << filepath << " ] not found in a path : " << m_mtlBaseDir + << "\n"; + if (warn) + { + (*warn) += ss.str(); + } + + return false; + } + } + + bool MaterialStreamReader::operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) + { + (void)err; + (void)matId; + if (!m_inStream) + { + std::stringstream ss; + ss << "Material stream in error state. \n"; + if (warn) + { + (*warn) += ss.str(); + } + return false; + } + + LoadMtl(matMap, materials, &m_inStream, warn, err); + + return true; + } + + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + const char* filename, + const char* mtl_basedir, + bool triangulate, + bool default_vcols_fallback + ) + { + attrib->vertices.clear(); + attrib->normals.clear(); + attrib->texcoords.clear(); + attrib->colors.clear(); + shapes->clear(); + + std::stringstream errss; + + std::ifstream ifs(filename); + if (!ifs) + { + errss << "Cannot open file [" << filename << "]\n"; + if (err) + { + (*err) = errss.str(); + } + return false; + } + + std::string baseDir = mtl_basedir ? mtl_basedir : ""; + if (!baseDir.empty()) + { +#ifndef _WIN32 + const char dirsep = '/'; +#else + const char dirsep = '\\'; +#endif + if (baseDir[baseDir.length() - 1] != dirsep) + { + baseDir += dirsep; + } + } + MaterialFileReader matFileReader(baseDir); + + return LoadObj( + attrib, + shapes, + materials, + warn, + err, + &ifs, + &matFileReader, + triangulate, + default_vcols_fallback + ); + } + + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + std::istream* inStream, + MaterialReader* readMatFn /*= NULL*/, + bool triangulate, + bool default_vcols_fallback + ) + { + std::stringstream errss; + + std::vector v; + std::vector vertex_weights; // optional [w] component in `v` + std::vector vn; + std::vector vt; + std::vector vc; + std::vector vw; // tinyobj extension: vertex skin weights + std::vector tags; + PrimGroup prim_group; + std::string name; + + // material + std::set material_filenames; + std::map material_map; + int material = -1; + + // smoothing group id + unsigned int current_smoothing_id = 0; // Initial value. 0 means no smoothing. + + int greatest_v_idx = -1; + int greatest_vn_idx = -1; + int greatest_vt_idx = -1; + + shape_t shape; + + bool found_all_colors = true; // check if all 'v' line has color info + + size_t line_num = 0; + std::string linebuf; + while (inStream->peek() != -1) + { + safeGetline(*inStream, linebuf); + + line_num++; + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + if (line_num == 1) + { + linebuf = removeUtf8Bom(linebuf); + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // vertex + if (token[0] == 'v' && IS_SPACE((token[1]))) + { + token += 2; + real_t x, y, z; + real_t r, g, b; + + int num_components = parseVertexWithColor(&x, &y, &z, &r, &g, &b, &token); + found_all_colors &= (num_components == 6); + + v.push_back(x); + v.push_back(y); + v.push_back(z); + + vertex_weights.push_back( + r + ); // r = w, and initialized to 1.0 when `w` component is not found. + + if ((num_components == 6) || default_vcols_fallback) + { + vc.push_back(r); + vc.push_back(g); + vc.push_back(b); + } + + continue; + } + + // normal + if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; + parseReal3(&x, &y, &z, &token); + vn.push_back(x); + vn.push_back(y); + vn.push_back(z); + continue; + } + + // texcoord + if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y; + parseReal2(&x, &y, &token); + vt.push_back(x); + vt.push_back(y); + continue; + } + + // skin weight. tinyobj extension + if (token[0] == 'v' && token[1] == 'w' && IS_SPACE((token[2]))) + { + token += 3; + + // vw ... + // example: + // vw 0 0 0.25 1 0.25 2 0.5 + + // TODO(syoyo): Add syntax check + int vid = 0; + vid = parseInt(&token); + + skin_weight_t sw; + + sw.vertex_id = vid; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + real_t j, w; + // joint_id should not be negative, weight may be negative + // TODO(syoyo): # of elements check + parseReal2(&j, &w, &token, -1.0); + + if (j < static_cast(0)) + { + if (err) + { + std::stringstream ss; + ss << "Failed parse `vw' line. joint_id is negative. " + "line " + << line_num << ".)\n"; + (*err) += ss.str(); + } + return false; + } + + joint_and_weight_t jw; + + jw.joint_id = int(j); + jw.weight = w; + + sw.weightValues.push_back(jw); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + vw.push_back(sw); + } + + warning_context context; + context.warn = warn; + context.line_number = line_num; + + // line + if (token[0] == 'l' && IS_SPACE((token[1]))) + { + token += 2; + + __line_t line; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `l' line (e.g. a zero value for vertex index. " + "Line " + + toString(line_num) + ").\n"; + } + return false; + } + + line.vertex_indices.push_back(vi); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + prim_group.lineGroup.push_back(line); + + continue; + } + + // points + if (token[0] == 'p' && IS_SPACE((token[1]))) + { + token += 2; + + __points_t pts; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `p' line (e.g. a zero value for vertex index. " + "Line " + + toString(line_num) + ").\n"; + } + return false; + } + + pts.vertex_indices.push_back(vi); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + prim_group.pointsGroup.push_back(pts); + + continue; + } + + // face + if (token[0] == 'f' && IS_SPACE((token[1]))) + { + token += 2; + token += strspn(token, " \t"); + + face_t face; + + face.smoothing_group_id = current_smoothing_id; + face.vertex_indices.reserve(3); + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `f' line (e.g. a zero value for vertex index " + "or invalid relative vertex index). Line " + + toString(line_num) + ").\n"; + } + return false; + } + + greatest_v_idx = greatest_v_idx > vi.v_idx ? greatest_v_idx : vi.v_idx; + greatest_vn_idx = greatest_vn_idx > vi.vn_idx ? greatest_vn_idx : vi.vn_idx; + greatest_vt_idx = greatest_vt_idx > vi.vt_idx ? greatest_vt_idx : vi.vt_idx; + + face.vertex_indices.push_back(vi); + size_t n = strspn(token, " \t\r"); + token += n; + } + + // replace with emplace_back + std::move on C++11 + prim_group.faceGroup.push_back(face); + + continue; + } + + // use mtl + if ((0 == strncmp(token, "usemtl", 6))) + { + token += 6; + std::string namebuf = parseString(&token); + + int newMaterialId = -1; + std::map::const_iterator it = material_map.find(namebuf); + if (it != material_map.end()) + { + newMaterialId = it->second; + } + else + { + // { error!! material not found } + if (warn) + { + (*warn) += "material [ '" + namebuf + "' ] not found in .mtl\n"; + } + } + + if (newMaterialId != material) + { + // Create per-face material. Thus we don't add `shape` to `shapes` at + // this time. + // just clear `faceGroup` after `exportGroupsToShape()` call. + exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + prim_group.faceGroup.clear(); + material = newMaterialId; + } + + continue; + } + + // load mtl + if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) + { + if (readMatFn) + { + token += 7; + + std::vector filenames; + SplitString(std::string(token), ' ', '\\', filenames); + + if (filenames.empty()) + { + if (warn) + { + std::stringstream ss; + ss << "Looks like empty filename for mtllib. Use default " + "material (line " + << line_num << ".)\n"; + + (*warn) += ss.str(); + } + } + else + { + bool found = false; + for (size_t s = 0; s < filenames.size(); s++) + { + if (material_filenames.count(filenames[s]) > 0) + { + found = true; + continue; + } + + std::string warn_mtl; + std::string err_mtl; + bool ok = (*readMatFn)( + filenames[s].c_str(), + materials, + &material_map, + &warn_mtl, + &err_mtl + ); + if (warn && (!warn_mtl.empty())) + { + (*warn) += warn_mtl; + } + + if (err && (!err_mtl.empty())) + { + (*err) += err_mtl; + } + + if (ok) + { + found = true; + material_filenames.insert(filenames[s]); + break; + } + } + + if (!found) + { + if (warn) + { + (*warn) += "Failed to load material file(s). Use default " + "material.\n"; + } + } + } + } + + continue; + } + + // group name + if (token[0] == 'g' && IS_SPACE((token[1]))) + { + // flush previous face group. + bool ret = exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + (void)ret; // return value not used. + + if (shape.mesh.indices.size() > 0) + { + shapes->push_back(shape); + } + + shape = shape_t(); + + // material = -1; + prim_group.clear(); + + std::vector names; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + std::string str = parseString(&token); + names.push_back(str); + token += strspn(token, " \t\r"); // skip tag + } + + // names[0] must be 'g' + + if (names.size() < 2) + { + // 'g' with empty names + if (warn) + { + std::stringstream ss; + ss << "Empty group name. line: " << line_num << "\n"; + (*warn) += ss.str(); + name = ""; + } + } + else + { + std::stringstream ss; + ss << names[1]; + + // tinyobjloader does not support multiple groups for a primitive. + // Currently we concatinate multiple group names with a space to get + // single group name. + + for (size_t i = 2; i < names.size(); i++) + { + ss << " " << names[i]; + } + + name = ss.str(); + } + + continue; + } + + // object name + if (token[0] == 'o' && IS_SPACE((token[1]))) + { + // flush previous face group. + bool ret = exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + (void)ret; // return value not used. + + if (shape.mesh.indices.size() > 0 || shape.lines.indices.size() > 0 + || shape.points.indices.size() > 0) + { + shapes->push_back(shape); + } + + // material = -1; + prim_group.clear(); + shape = shape_t(); + + // @todo { multiple object name? } + token += 2; + std::stringstream ss; + ss << token; + name = ss.str(); + + continue; + } + + if (token[0] == 't' && IS_SPACE(token[1])) + { + const int max_tag_nums = 8192; // FIXME(syoyo): Parameterize. + tag_t tag; + + token += 2; + + tag.name = parseString(&token); + + tag_sizes ts = parseTagTriple(&token); + + if (ts.num_ints < 0) + { + ts.num_ints = 0; + } + if (ts.num_ints > max_tag_nums) + { + ts.num_ints = max_tag_nums; + } + + if (ts.num_reals < 0) + { + ts.num_reals = 0; + } + if (ts.num_reals > max_tag_nums) + { + ts.num_reals = max_tag_nums; + } + + if (ts.num_strings < 0) + { + ts.num_strings = 0; + } + if (ts.num_strings > max_tag_nums) + { + ts.num_strings = max_tag_nums; + } + + tag.intValues.resize(static_cast(ts.num_ints)); + + for (size_t i = 0; i < static_cast(ts.num_ints); ++i) + { + tag.intValues[i] = parseInt(&token); + } + + tag.floatValues.resize(static_cast(ts.num_reals)); + for (size_t i = 0; i < static_cast(ts.num_reals); ++i) + { + tag.floatValues[i] = parseReal(&token); + } + + tag.stringValues.resize(static_cast(ts.num_strings)); + for (size_t i = 0; i < static_cast(ts.num_strings); ++i) + { + tag.stringValues[i] = parseString(&token); + } + + tags.push_back(tag); + + continue; + } + + if (token[0] == 's' && IS_SPACE(token[1])) + { + // smoothing group id + token += 2; + + // skip space. + token += strspn(token, " \t"); // skip space + + if (token[0] == '\0') + { + continue; + } + + if (token[0] == '\r' || token[1] == '\n') + { + continue; + } + + if (strlen(token) >= 3 && token[0] == 'o' && token[1] == 'f' && token[2] == 'f') + { + current_smoothing_id = 0; + } + else + { + // assume number + int smGroupId = parseInt(&token); + if (smGroupId < 0) + { + // parse error. force set to 0. + // FIXME(syoyo): Report warning. + current_smoothing_id = 0; + } + else + { + current_smoothing_id = static_cast(smGroupId); + } + } + + continue; + } // smoothing group id + + // Ignore unknown command. + } + + // not all vertices have colors, no default colors desired? -> clear colors + if (!found_all_colors && !default_vcols_fallback) + { + vc.clear(); + } + + if (greatest_v_idx >= static_cast(v.size() / 3)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + if (greatest_vn_idx >= static_cast(vn.size() / 3)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex normal indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + if (greatest_vt_idx >= static_cast(vt.size() / 2)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex texcoord indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + + bool ret = + exportGroupsToShape(&shape, prim_group, tags, material, name, triangulate, v, warn); + // exportGroupsToShape return false when `usemtl` is called in the last + // line. + // we also add `shape` to `shapes` when `shape.mesh` has already some + // faces(indices) + if (ret || shape.mesh.indices.size()) + { // FIXME(syoyo): Support other prims(e.g. lines) + shapes->push_back(shape); + } + prim_group.clear(); // for safety + + if (err) + { + (*err) += errss.str(); + } + + attrib->vertices.swap(v); + attrib->vertex_weights.swap(vertex_weights); + attrib->normals.swap(vn); + attrib->texcoords.swap(vt); + attrib->texcoord_ws.swap(vt); + attrib->colors.swap(vc); + attrib->skin_weights.swap(vw); + + return true; + } + + bool LoadObjWithCallback( + std::istream& inStream, + const callback_t& callback, + void* user_data /*= NULL*/, + MaterialReader* readMatFn /*= NULL*/, + std::string* warn, /* = NULL*/ + std::string* err /*= NULL*/ + ) + { + std::stringstream errss; + + // material + std::set material_filenames; + std::map material_map; + int material_id = -1; // -1 = invalid + + std::vector indices; + std::vector materials; + std::vector names; + names.reserve(2); + std::vector names_out; + + std::string linebuf; + while (inStream.peek() != -1) + { + safeGetline(inStream, linebuf); + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // vertex + if (token[0] == 'v' && IS_SPACE((token[1]))) + { + token += 2; + real_t x, y, z; + real_t r, g, b; + + int num_components = parseVertexWithColor(&x, &y, &z, &r, &g, &b, &token); + if (callback.vertex_cb) + { + callback.vertex_cb(user_data, x, y, z, r); // r=w is optional + } + if (callback.vertex_color_cb) + { + bool found_color = (num_components == 6); + callback.vertex_color_cb(user_data, x, y, z, r, g, b, found_color); + } + continue; + } + + // normal + if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; + parseReal3(&x, &y, &z, &token); + if (callback.normal_cb) + { + callback.normal_cb(user_data, x, y, z); + } + continue; + } + + // texcoord + if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; // y and z are optional. default = 0.0 + parseReal3(&x, &y, &z, &token); + if (callback.texcoord_cb) + { + callback.texcoord_cb(user_data, x, y, z); + } + continue; + } + + // face + if (token[0] == 'f' && IS_SPACE((token[1]))) + { + token += 2; + token += strspn(token, " \t"); + + indices.clear(); + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi = parseRawTriple(&token); + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + indices.push_back(idx); + size_t n = strspn(token, " \t\r"); + token += n; + } + + if (callback.index_cb && indices.size() > 0) + { + callback.index_cb(user_data, &indices.at(0), static_cast(indices.size())); + } + + continue; + } + + // use mtl + if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) + { + token += 7; + std::stringstream ss; + ss << token; + std::string namebuf = ss.str(); + + int newMaterialId = -1; + std::map::const_iterator it = material_map.find(namebuf); + if (it != material_map.end()) + { + newMaterialId = it->second; + } + else + { + // { warn!! material not found } + if (warn && (!callback.usemtl_cb)) + { + (*warn) += "material [ " + namebuf + " ] not found in .mtl\n"; + } + } + + if (newMaterialId != material_id) + { + material_id = newMaterialId; + } + + if (callback.usemtl_cb) + { + callback.usemtl_cb(user_data, namebuf.c_str(), material_id); + } + + continue; + } + + // load mtl + if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) + { + if (readMatFn) + { + token += 7; + + std::vector filenames; + SplitString(std::string(token), ' ', '\\', filenames); + + if (filenames.empty()) + { + if (warn) + { + (*warn) += "Looks like empty filename for mtllib. Use default " + "material. \n"; + } + } + else + { + bool found = false; + for (size_t s = 0; s < filenames.size(); s++) + { + if (material_filenames.count(filenames[s]) > 0) + { + found = true; + continue; + } + + std::string warn_mtl; + std::string err_mtl; + bool ok = (*readMatFn)( + filenames[s].c_str(), + &materials, + &material_map, + &warn_mtl, + &err_mtl + ); + + if (warn && (!warn_mtl.empty())) + { + (*warn) += warn_mtl; // This should be warn message. + } + + if (err && (!err_mtl.empty())) + { + (*err) += err_mtl; + } + + if (ok) + { + found = true; + material_filenames.insert(filenames[s]); + break; + } + } + + if (!found) + { + if (warn) + { + (*warn) += "Failed to load material file(s). Use default " + "material.\n"; + } + } + else + { + if (callback.mtllib_cb) + { + callback.mtllib_cb( + user_data, + &materials.at(0), + static_cast(materials.size()) + ); + } + } + } + } + + continue; + } + + // group name + if (token[0] == 'g' && IS_SPACE((token[1]))) + { + names.clear(); + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + std::string str = parseString(&token); + names.push_back(str); + token += strspn(token, " \t\r"); // skip tag + } + + assert(names.size() > 0); + + if (callback.group_cb) + { + if (names.size() > 1) + { + // create const char* array. + names_out.resize(names.size() - 1); + for (size_t j = 0; j < names_out.size(); j++) + { + names_out[j] = names[j + 1].c_str(); + } + callback.group_cb( + user_data, + &names_out.at(0), + static_cast(names_out.size()) + ); + } + else + { + callback.group_cb(user_data, NULL, 0); + } + } + + continue; + } + + // object name + if (token[0] == 'o' && IS_SPACE((token[1]))) + { + // @todo { multiple object name? } + token += 2; + + std::stringstream ss; + ss << token; + std::string object_name = ss.str(); + + if (callback.object_cb) + { + callback.object_cb(user_data, object_name.c_str()); + } + + continue; + } + +#if 0 // @todo + if (token[0] == 't' && IS_SPACE(token[1])) { + tag_t tag; + + token += 2; + std::stringstream ss; + ss << token; + tag.name = ss.str(); + + token += tag.name.size() + 1; + + tag_sizes ts = parseTagTriple(&token); + + tag.intValues.resize(static_cast(ts.num_ints)); + + for (size_t i = 0; i < static_cast(ts.num_ints); ++i) { + tag.intValues[i] = atoi(token); + token += strcspn(token, "/ \t\r") + 1; + } + + tag.floatValues.resize(static_cast(ts.num_reals)); + for (size_t i = 0; i < static_cast(ts.num_reals); ++i) { + tag.floatValues[i] = parseReal(&token); + token += strcspn(token, "/ \t\r") + 1; + } + + tag.stringValues.resize(static_cast(ts.num_strings)); + for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { + std::stringstream ss; + ss << token; + tag.stringValues[i] = ss.str(); + token += tag.stringValues[i].size() + 1; + } + + tags.push_back(tag); + } +#endif + + // Ignore unknown command. + } + + if (err) + { + (*err) += errss.str(); + } + + return true; + } + + bool ObjReader::ParseFromFile(const std::string& filename, const ObjReaderConfig& config) + { + std::string mtl_search_path; + + if (config.mtl_search_path.empty()) + { + // + // split at last '/'(for unixish system) or '\\'(for windows) to get + // the base directory of .obj file + // + size_t pos = filename.find_last_of("/\\"); + if (pos != std::string::npos) + { + mtl_search_path = filename.substr(0, pos); + } + } + else + { + mtl_search_path = config.mtl_search_path; + } + + valid_ = LoadObj( + &attrib_, + &shapes_, + &materials_, + &warning_, + &error_, + filename.c_str(), + mtl_search_path.c_str(), + config.triangulate, + config.vertex_color + ); + + return valid_; + } + + bool ObjReader::ParseFromString( + const std::string& obj_text, + const std::string& mtl_text, + const ObjReaderConfig& config + ) + { + std::stringbuf obj_buf(obj_text); + std::stringbuf mtl_buf(mtl_text); + + std::istream obj_ifs(&obj_buf); + std::istream mtl_ifs(&mtl_buf); + + MaterialStreamReader mtl_ss(mtl_ifs); + + valid_ = LoadObj( + &attrib_, + &shapes_, + &materials_, + &warning_, + &error_, + &obj_ifs, + &mtl_ss, + config.triangulate, + config.vertex_color + ); + + return valid_; + } + +#ifdef __clang__ + #pragma clang diagnostic pop +#endif +} // namespace tinyobj + +#endif diff --git a/src/main.cpp b/src/main.cpp index a16a572..ed0bf5e 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,13 +2,15 @@ #include #include #include +#include "VulkanDeviceManager.h" #include "imgui.h" #include "imgui_impl_glfw.h" #include "imgui_impl_vulkan.h" #include "utilities/Logger.h" #include "GlfwWindowManager.h" -#include "VulkanContext.h" +#include "VulkanContext.hpp" +#include "Primitives.h" struct AppConfig { @@ -28,15 +30,18 @@ struct AppConfig // }; const std::vector SquareVertices = { - { { -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f } }, - { { 0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f } }, - { { 0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f } }, - { { -0.5f, 0.5f }, { 1.0f, 1.0f, 1.0f } } + { { -0.5f, -0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f }, { 1.0f, 0.0f } }, + { { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f } }, + { { 0.5f, 0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f } }, + { { -0.5f, 0.5f, 0.0f }, { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f } }, + + { { -0.5f, -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f }, { 1.0f, 0.0f } }, + { { 0.5f, -0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f } }, + { { 0.5f, 0.5f, -0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f } }, + { { -0.5f, 0.5f, -0.5f }, { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f } } }; -const std::vector SquareIndices = { - 0, 1, 2, 2, 3, 0 -}; +const std::vector SquareIndices = { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4 }; class HelloTriangleApplication { @@ -105,13 +110,11 @@ private: void InitGlfw() { - FWindowConfig Config = { - Settings.Title, - Settings.Width, - Settings.Height, - Settings.bResizable, - Settings.bFullscreen - }; + FWindowConfig Config = { Settings.Title, + Settings.Width, + Settings.Height, + Settings.bResizable, + Settings.bFullscreen }; WindowManager.Initialize(Config); glfwSetWindowUserPointer(WindowManager.GetWindow(), this); @@ -129,7 +132,7 @@ private: void MainLoop() { VkPhysicalDeviceProperties Properties{}; - vkGetPhysicalDeviceProperties(VkContext.DeviceManager.GetPhysicalDevice(), &Properties); + vkGetPhysicalDeviceProperties(VkContext.DeviceManager->GetPhysicalDevice(), &Properties); while (!WindowManager.ShouldClose()) { diff --git a/src/private/VulkanBuffers.cpp b/src/private/VulkanBuffers.cpp new file mode 100644 index 0000000..4c73a6c --- /dev/null +++ b/src/private/VulkanBuffers.cpp @@ -0,0 +1,479 @@ +#include "VulkanBuffers.h" + +#include "imgui.h" +#include "imgui_impl_vulkan.h" +#include "utilities/Logger.h" +#include +#include + +void VulkanBuffers::Initialize(FBufferConfig InConfig) +// VkDevice InDevice, +// VkRenderPass InRenderPass) +{ + Config = InConfig; +} + +void VulkanBuffers::Cleanup(size_t MAX_FRAMES_IN_FLIGHT) +{ + vkDestroyCommandPool(Config.Device, CommandPool, nullptr); + + for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) + { + vkDestroyBuffer(Config.Device, UniformBuffers[i], nullptr); + vkFreeMemory(Config.Device, UniformBuffersMemory[i], nullptr); + } + + vkDestroyBuffer(Config.Device, IndexBuffer, nullptr); + vkFreeMemory(Config.Device, IndexBufferMemory, nullptr); + + vkDestroyBuffer(Config.Device, VertexBuffer, nullptr); + vkFreeMemory(Config.Device, VertexBufferMemory, nullptr); +} + +void VulkanBuffers::CreateCommandPool(std::optional GraphicsFamily) +{ + VkCommandPoolCreateInfo PoolInfo{}; + PoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + PoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + PoolInfo.queueFamilyIndex = GraphicsFamily.value(); + + if (vkCreateCommandPool(Config.Device, &PoolInfo, nullptr, &CommandPool) != VK_SUCCESS) + { + Log::Error("Failed to create command pool!"); + } + else + { + Log::Info("Successfully created command pool"); + } +} + +void VulkanBuffers::CreateCommandBuffers(int FramesInFlight) +{ + CommandBuffers.resize(FramesInFlight); + VkCommandBufferAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + AllocateInfo.commandPool = CommandPool; + AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + AllocateInfo.commandBufferCount = (uint32_t)CommandBuffers.size(); + + if (vkAllocateCommandBuffers(Config.Device, &AllocateInfo, CommandBuffers.data()) != VK_SUCCESS) + { + Log::Error("Failed to allocate command buffers!"); + } + else + { + Log::Info("Successfully allocated command buffers."); + } +} + +void VulkanBuffers::RecordCommandBuffer(FRecordBuffersParams& Params) +{ + VkCommandBufferBeginInfo BeginInfo{}; + BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + BeginInfo.flags = 0; + BeginInfo.pInheritanceInfo = nullptr; + + if (vkBeginCommandBuffer(Params.InCommandBuffer, &BeginInfo) != VK_SUCCESS) + { + Log::Error("Failed to begin recording command buffer!"); + } + else + { + // Log::Info("Successfully began recording command buffers."); + } + + VkRenderPassBeginInfo RenderPassInfo{}; + RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; + RenderPassInfo.renderPass = Config.RenderPass; + RenderPassInfo.framebuffer = Params.SwapChainFramebuffers[Params.ImageIndex]; + RenderPassInfo.renderArea.offset = { 0, 0 }; + RenderPassInfo.renderArea.extent = { Params.SwapChainExtent }; + + std::array ClearValues{}; + ClearValues[0].color = { { 0.0f, 0.0f, 0.0f, 1.0f } }; + ClearValues[1].depthStencil = { 1.0f, 0 }; + RenderPassInfo.clearValueCount = static_cast(ClearValues.size()); + RenderPassInfo.pClearValues = ClearValues.data(); + + vkCmdBeginRenderPass(Params.InCommandBuffer, &RenderPassInfo, VK_SUBPASS_CONTENTS_INLINE); + + vkCmdBindPipeline( + Params.InCommandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + Params.GraphicsPipeline + ); + + VkViewport Viewport{}; + Viewport.x = 0.0f; + Viewport.y = 0.0f; + Viewport.width = static_cast(Params.SwapChainExtent.width); + Viewport.height = static_cast(Params.SwapChainExtent.height); + Viewport.minDepth = 0.0f; + Viewport.maxDepth = 1.0f; + vkCmdSetViewport(Params.InCommandBuffer, 0, 1, &Viewport); + + VkRect2D Scissor{}; + Scissor.offset = { 0, 0 }; + Scissor.extent = Params.SwapChainExtent; + vkCmdSetScissor(Params.InCommandBuffer, 0, 1, &Scissor); + + VkBuffer VertexBuffers[] = { Params.InVertexBuffer }; + VkDeviceSize Offsets[] = { 0 }; + vkCmdBindVertexBuffers(Params.InCommandBuffer, 0, 1, VertexBuffers, Offsets); + vkCmdBindIndexBuffer(Params.InCommandBuffer, Params.InIndexBuffer, 0, VK_INDEX_TYPE_UINT16); + + vkCmdBindDescriptorSets( + Params.InCommandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + Params.PipelineLayout, + 0, + 1, + &Params.DescriptorSet, + 0, + nullptr + ); + + // vkCmdDraw(Params.InCommandBuffer, static_cast(Params.InVerticesSize), 1, 0, 0); + vkCmdDrawIndexed(Params.InCommandBuffer, static_cast(Params.InIndexSize), 1, 0, 0, 0); + + if (Params.bDrawImGui) + { + ImGui::Render(); + ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), Params.InCommandBuffer); + } + + vkCmdEndRenderPass(Params.InCommandBuffer); + + if (vkEndCommandBuffer(Params.InCommandBuffer) != VK_SUCCESS) + { + Log::Error("Failed to record command buffer!"); + } + else + { + // Log::Info("Successfully recorded command buffer."); + } +} + +VkCommandBuffer VulkanBuffers::BeginSingleTimeCommands() +{ + VkCommandBufferAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + AllocateInfo.commandPool = CommandPool; + AllocateInfo.commandBufferCount = 1; + + VkCommandBuffer CommandBuffer; + vkAllocateCommandBuffers(Config.Device, &AllocateInfo, &CommandBuffer); + + VkCommandBufferBeginInfo BeginInfo{}; + BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + BeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; + + vkBeginCommandBuffer(CommandBuffer, &BeginInfo); + + return CommandBuffer; +} + +void VulkanBuffers::EndSingleTimeCommands(VkCommandBuffer InCommandBuffer, VkQueue GraphicsQueue) +{ + vkEndCommandBuffer(InCommandBuffer); + + VkSubmitInfo SubmitInfo{}; + SubmitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; + SubmitInfo.commandBufferCount = 1; + SubmitInfo.pCommandBuffers = &InCommandBuffer; + + vkQueueSubmit(GraphicsQueue, 1, &SubmitInfo, VK_NULL_HANDLE); + vkQueueWaitIdle(GraphicsQueue); + + vkFreeCommandBuffers(Config.Device, CommandPool, 1, &InCommandBuffer); +} + +void VulkanBuffers::TransitionImageLayout( + VkImage Image, + VkFormat Format, + VkImageLayout OldLayout, + VkImageLayout NewLayout, + bool bHasStencilComponent +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkImageMemoryBarrier Barrier{}; + Barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + Barrier.oldLayout = OldLayout; + Barrier.newLayout = NewLayout; + Barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + Barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + Barrier.image = Image; + Barrier.subresourceRange.baseMipLevel = 0; + Barrier.subresourceRange.levelCount = 1; + Barrier.subresourceRange.baseArrayLayer = 0; + Barrier.subresourceRange.layerCount = 1; + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = 0; + + VkPipelineStageFlags SourceStage; + VkPipelineStageFlags DestinationStage; + + if (NewLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) + { + Barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; + + if (bHasStencilComponent) + { + Barrier.subresourceRange.aspectMask |= VK_IMAGE_ASPECT_STENCIL_BIT; + } + } + else + { + Barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + } + + if (OldLayout == VK_IMAGE_LAYOUT_UNDEFINED && NewLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) + { + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + + SourceStage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + DestinationStage = VK_PIPELINE_STAGE_TRANSFER_BIT; + } + else if (OldLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL + && NewLayout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) + { + Barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + Barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; + + SourceStage = VK_PIPELINE_STAGE_TRANSFER_BIT; + DestinationStage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; + } + else if (OldLayout == VK_IMAGE_LAYOUT_UNDEFINED + && NewLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) + { + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT + | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + + SourceStage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + DestinationStage = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; + } + else + { + Log::Error("Unsupported layout transition!"); + } + + vkCmdPipelineBarrier( + CommandBuffer, + SourceStage, + DestinationStage, + 0, + 0, + nullptr, + 0, + nullptr, + 1, + &Barrier + ); + + EndSingleTimeCommands(CommandBuffer, Config.GraphicsQueue); +} + +void VulkanBuffers::CopyBufferToImage( + VkBuffer Buffer, + VkImage Image, + uint32_t Width, + uint32_t Height +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkBufferImageCopy Region{}; + Region.bufferOffset = 0; + Region.bufferRowLength = 0; + Region.bufferImageHeight = 0; + Region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + Region.imageSubresource.mipLevel = 0; + Region.imageSubresource.baseArrayLayer = 0; + Region.imageSubresource.layerCount = 1; + + Region.imageOffset = { 0, 0, 0 }; + Region.imageExtent = { Width, Height, 1 }; + + vkCmdCopyBufferToImage( + CommandBuffer, + Buffer, + Image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, + &Region + ); + + EndSingleTimeCommands(CommandBuffer, Config.GraphicsQueue); +} + +void VulkanBuffers::CopyBuffer( + VkQueue GraphicsQueue, + VkBuffer SrcBuffer, + VkBuffer DstBuffer, + VkDeviceSize Size +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkBufferCopy CopyRegion{}; + CopyRegion.size = Size; + vkCmdCopyBuffer(CommandBuffer, SrcBuffer, DstBuffer, 1, &CopyRegion); + + EndSingleTimeCommands(CommandBuffer, GraphicsQueue); +} + +void VulkanBuffers::CreateBuffer( + VkDeviceSize Size, + VkBufferUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkBuffer& Buffer, + VkDeviceMemory& BufferMemory +) +{ + VkBufferCreateInfo BufferInfo{}; + BufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; + BufferInfo.size = Size; + BufferInfo.usage = Usage; + BufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + + if (vkCreateBuffer(Config.Device, &BufferInfo, nullptr, &Buffer) != VK_SUCCESS) + { + throw std::runtime_error("failed to create buffer!"); + } + + VkMemoryRequirements MemRequirements; + vkGetBufferMemoryRequirements(Config.Device, Buffer, &MemRequirements); + + VkMemoryAllocateInfo allocInfo{}; + allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + allocInfo.allocationSize = MemRequirements.size; + allocInfo.memoryTypeIndex = FindMemoryType(MemRequirements.memoryTypeBits, Properties); + + if (vkAllocateMemory(Config.Device, &allocInfo, nullptr, &BufferMemory) != VK_SUCCESS) + { + throw std::runtime_error("failed to allocate buffer memory!"); + } + + vkBindBufferMemory(Config.Device, Buffer, BufferMemory, 0); +} + +void VulkanBuffers::CreateVertexBuffer(const std::vector& InVertices) +{ + VkDeviceSize BufferSize = sizeof(InVertices[0]) * InVertices.size(); + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + Log::Info("Starting buffer copy..."); + + void* Data; + vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); + memcpy(Data, InVertices.data(), (size_t)BufferSize); + vkUnmapMemory(Config.Device, StagingBufferMemory); + + Log::Info("Finished buffer copy..."); + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + VertexBuffer, + VertexBufferMemory + ); + + CopyBuffer(Config.GraphicsQueue, StagingBuffer, VertexBuffer, BufferSize); + + vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); + vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); +} + +void VulkanBuffers::CreateIndexBuffer(const std::vector& InIndices) +{ + VkDeviceSize BufferSize = sizeof(InIndices[0]) * InIndices.size(); + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + Log::Info("Starting buffer copy..."); + + void* Data; + vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); + memcpy(Data, InIndices.data(), (size_t)BufferSize); + vkUnmapMemory(Config.Device, StagingBufferMemory); + + Log::Info("Finished buffer copy..."); + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + IndexBuffer, + IndexBufferMemory + ); + + CopyBuffer(Config.GraphicsQueue, StagingBuffer, IndexBuffer, BufferSize); + + vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); + vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); +} + +void VulkanBuffers::CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT) +{ + VkDeviceSize BufferSize = sizeof(UniformBufferObject); + + UniformBuffers.resize(MAX_FRAMES_IN_FLIGHT); + UniformBuffersMemory.resize(MAX_FRAMES_IN_FLIGHT); + UniformBuffersMapped.resize(MAX_FRAMES_IN_FLIGHT); + + for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) + { + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + UniformBuffers[i], + UniformBuffersMemory[i] + ); + vkMapMemory( + Config.Device, + UniformBuffersMemory[i], + 0, + BufferSize, + 0, + &UniformBuffersMapped[i] + ); + } +} + +uint32_t VulkanBuffers::FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties) +{ + VkPhysicalDeviceMemoryProperties MemoryProperties; + vkGetPhysicalDeviceMemoryProperties(Config.PhysicalDevice, &MemoryProperties); + + for (uint32_t i = 0; i < MemoryProperties.memoryTypeCount; i++) + { + if ((TypeFilter & (1 << i)) + && (MemoryProperties.memoryTypes[i].propertyFlags & Properties) == Properties) + { + return i; + } + } + + Log::Error("Failed to find suitable memory type!"); + return 0; +} diff --git a/src/private/VulkanCommandBuffers.cpp b/src/private/VulkanCommandBuffers.cpp deleted file mode 100644 index fd23235..0000000 --- a/src/private/VulkanCommandBuffers.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "VulkanCommandBuffers.h" - -#include "imgui.h" -#include "imgui_impl_vulkan.h" -#include "utilities/Logger.h" -#include -#include - -void VulkanCommandBuffers::Initialize( - VkDevice InDevice, - VkRenderPass InRenderPass) -{ - Device = InDevice; - RenderPass = InRenderPass; -} - -void VulkanCommandBuffers::Cleanup() -{ - vkDestroyCommandPool(Device, CommandPool, nullptr); -} - -void VulkanCommandBuffers::CreateCommandPool(std::optional GraphicsFamily) -{ - VkCommandPoolCreateInfo PoolInfo{}; - PoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - PoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - PoolInfo.queueFamilyIndex = GraphicsFamily.value(); - - if (vkCreateCommandPool(Device, &PoolInfo, nullptr, &CommandPool) != VK_SUCCESS) - { - Log::Error("Failed to create command pool!"); - } - else - { - Log::Info("Successfully created command pool"); - } -} - -void VulkanCommandBuffers::CreateCommandBuffers(int FramesInFlight) -{ - CommandBuffers.resize(FramesInFlight); - VkCommandBufferAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - AllocateInfo.commandPool = CommandPool; - AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - AllocateInfo.commandBufferCount = (uint32_t)CommandBuffers.size(); - - if (vkAllocateCommandBuffers(Device, &AllocateInfo, CommandBuffers.data()) != VK_SUCCESS) - { - Log::Error("Failed to allocate command buffers!"); - } - else - { - Log::Info("Successfully allocated command buffers."); - } -} - -void VulkanCommandBuffers::RecordCommandBuffer(FRecordCommandBuffersParams& Params) -{ - VkCommandBufferBeginInfo BeginInfo{}; - BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - BeginInfo.flags = 0; - BeginInfo.pInheritanceInfo = nullptr; - - if (vkBeginCommandBuffer(Params.InCommandBuffer, &BeginInfo) != VK_SUCCESS) - { - Log::Error("Failed to begin recording command buffer!"); - } - else - { - // Log::Info("Successfully began recording command buffers."); - } - - VkRenderPassBeginInfo RenderPassInfo{}; - RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; - RenderPassInfo.renderPass = RenderPass; - RenderPassInfo.framebuffer = Params.SwapChainFramebuffers[Params.ImageIndex]; - RenderPassInfo.renderArea.offset = { 0, 0 }; - RenderPassInfo.renderArea.extent = { Params.SwapChainExtent }; - - VkClearValue ClearColor = { { { 0.0f, 0.0f, 0.0f, 1.0f } } }; - RenderPassInfo.clearValueCount = 1; - RenderPassInfo.pClearValues = &ClearColor; - - vkCmdBeginRenderPass(Params.InCommandBuffer, &RenderPassInfo, VK_SUBPASS_CONTENTS_INLINE); - - vkCmdBindPipeline(Params.InCommandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, Params.GraphicsPipeline); - - VkViewport Viewport{}; - Viewport.x = 0.0f; - Viewport.y = 0.0f; - Viewport.width = static_cast(Params.SwapChainExtent.width); - Viewport.height = static_cast(Params.SwapChainExtent.height); - Viewport.minDepth = 0.0f; - Viewport.maxDepth = 1.0f; - vkCmdSetViewport(Params.InCommandBuffer, 0, 1, &Viewport); - - VkRect2D Scissor{}; - Scissor.offset = { 0, 0 }; - Scissor.extent = Params.SwapChainExtent; - vkCmdSetScissor(Params.InCommandBuffer, 0, 1, &Scissor); - - VkBuffer VertexBuffers[] = { Params.InVertexBuffer }; - VkDeviceSize Offsets[] = { 0 }; - vkCmdBindVertexBuffers(Params.InCommandBuffer, 0, 1, VertexBuffers, Offsets); - vkCmdBindIndexBuffer(Params.InCommandBuffer, Params.InIndexBuffer, 0, VK_INDEX_TYPE_UINT16); - - vkCmdBindDescriptorSets(Params.InCommandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, Params.PipelineLayout, 0, 1, &Params.DescriptorSet, 0, nullptr); - - // vkCmdDraw(Params.InCommandBuffer, static_cast(Params.InVerticesSize), 1, 0, 0); - vkCmdDrawIndexed(Params.InCommandBuffer, static_cast(Params.InIndexSize), 1, 0, 0, 0); - - if (Params.bDrawImGui) - { - ImGui::Render(); - ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), Params.InCommandBuffer); - } - - vkCmdEndRenderPass(Params.InCommandBuffer); - - if (vkEndCommandBuffer(Params.InCommandBuffer) != VK_SUCCESS) - { - Log::Error("Failed to record command buffer!"); - } - else - { - // Log::Info("Successfully recorded command buffer."); - } -} diff --git a/src/private/VulkanContext.cpp b/src/private/VulkanContext.cpp index b73473e..653f985 100755 --- a/src/private/VulkanContext.cpp +++ b/src/private/VulkanContext.cpp @@ -1,15 +1,24 @@ -#include "VulkanContext.h" -#include "VulkanCommandBuffers.h" +#include "VulkanContext.hpp" + +#include "VulkanTexture.hpp" +#include "VulkanBuffers.h" +#include "VulkanDebugManager.h" +// #include "VulkanDepthPass.hpp" #include "VulkanDeviceManager.h" #include "VulkanFramebuffers.h" +#include "VulkanInstanceManager.hpp" +#include "VulkanPipeline.h" +#include "VulkanRenderPass.h" #include "VulkanSwapChain.h" -#include "VulkanVertexBuffer.h" -#include "utilities/Logger.h" -#include "stb_image.h" +#include +#include +#include +#include #include "imgui_impl_glfw.h" #include "imgui_impl_vulkan.h" +#include "stb_image.h" #include #include @@ -20,120 +29,152 @@ #define GLM_FORCE_RADIANS #define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES +#define GLM_FORCE_DEPTH_ZERO_TO_ONE #include #include -#include -#include -#include +#include "utilities/Logger.h" -VulkanContext::VulkanContext() -{ -} +VulkanContext::VulkanContext() {} -VulkanContext::~VulkanContext() -{ -} +VulkanContext::~VulkanContext() {} -void VulkanContext::Initialize(FVulkanConfig& InConfig, const std::vector& InVertices, const std::vector& InIndices) +void VulkanContext::Initialize( + FVulkanConfig& InConfig, + const std::vector& InVertices, + const std::vector& InIndices +) { Config = InConfig; + InstanceManager = std::make_unique(); + DebugManager = std::make_unique(); + if (Config.bValidationEnabled) { - InstanceManager.CreateInstance(&DebugManager); - DebugManager.Initialize(InstanceManager.GetInstance()); + InstanceManager->CreateInstance(DebugManager.get()); + DebugManager->Initialize(InstanceManager->GetInstance()); } else { - InstanceManager.CreateInstance(); + InstanceManager->CreateInstance(); } CreateSurface(InConfig.Window); - DeviceManager.Initialize(FDeviceConfig( - InstanceManager.GetInstance(), - Config.bValidationEnabled, + DeviceManager = std::make_unique( + InstanceManager->GetInstance(), Surface, - InConfig.Window)); - DeviceManager.PickPhysicalDevice(); - DeviceManager.CreateLogicalDevice(); + InConfig.Window, + Config.bValidationEnabled + ); + DeviceManager->PickPhysicalDevice(); + DeviceManager->CreateLogicalDevice(); - auto SwapChainSupport = DeviceManager.QuerySwapChainSupport(DeviceManager.GetPhysicalDevice()); + VkDevice Device = DeviceManager->GetDevice(); + VkPhysicalDevice PhysicalDevice = DeviceManager->GetPhysicalDevice(); + VkQueue GraphicsQueue = DeviceManager->GetGraphicsQueue(); - SwapChain.Initialize(FSwapConfig( - DeviceManager.GetDevice(), + RenderPass = std::make_unique(); + RenderPass->Initialize(Device); + + GraphicsPipeline = std::make_unique(); + GraphicsPipeline->Initialize(Device); + + auto SwapChainSupport = DeviceManager->QuerySwapChainSupport(PhysicalDevice); + SwapChain = std::make_unique( + Device, Surface, Config.Window, - DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily, - DeviceManager.GetPhysicalQueueFamilies().PresentFamily, + DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily.value(), + DeviceManager->GetPhysicalQueueFamilies().PresentFamily.value(), SwapChainSupport.Capabilities, SwapChainSupport.Formats, - SwapChainSupport.PresentModes)); + SwapChainSupport.PresentModes + ); + SwapChain->CreateSwapChain(); + SwapChain->CreateImageViews(); - SwapChain.CreateSwapChain(); - SwapChain.CreateImageViews(); + Buffers = std::make_unique(); - RenderPass.Initialize(DeviceManager.GetDevice()); - RenderPass.CreateRenderPass(SwapChain.GetSwapChainImageFormat()); + Textures = std::make_unique( + Device, + PhysicalDevice, + GraphicsQueue, + *Buffers, + *SwapChain + ); + + uint32_t imageCount = SwapChain->GetSwapChainImagesCount(); + MAX_FRAMES_IN_FLIGHT = imageCount; + + RenderPass->CreateRenderPass(SwapChain->GetSwapChainImageFormat(), Textures->FindDepthFormat()); CreateDescriptorSetLayout(); - GraphicsPipeline.Initialize(DeviceManager.GetDevice()); - GraphicsPipeline.CreateGraphicsPipeline(SwapChain.GetSwapChainExtent(), RenderPass.GetRenderPass(), DescriptorSetLayout); + GraphicsPipeline->CreateGraphicsPipeline( + SwapChain->GetSwapChainExtent(), + RenderPass->GetRenderPass(), + DescriptorSetLayout + ); - Framebuffers.Initialize(FFramebufferConfig( - DeviceManager.GetDevice(), - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainImageViews(), - SwapChain.GetSwapChainExtent())); - Framebuffers.CreateFramebuffers(); + Buffers->Initialize( + FBufferConfig(Device, RenderPass->GetRenderPass(), PhysicalDevice, GraphicsQueue) + ); + Buffers->CreateCommandPool(DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily); - CommandBuffers.Initialize(DeviceManager.GetDevice(), RenderPass.GetRenderPass()); - CommandBuffers.CreateCommandPool(DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily); + Textures->CreateDepthResources(); - CreateTextureImage("textures/texture.jpg"); + Framebuffers = std::make_unique(); + Framebuffers->Initialize(FFramebufferConfig( + Device, + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainImageViews(), + SwapChain->GetSwapChainExtent() + )); + Framebuffers->CreateFramebuffers(Textures->GetDepthImageView()); - VertexBuffer.Initialize(FVertexBufferConfig( - DeviceManager.GetDevice(), - DeviceManager.GetPhysicalDevice(), - CommandBuffers.GetCommandPool(), - DeviceManager.GetGraphicsQueue())); - VertexBuffer.CreateVertexBuffer(InVertices); - VertexBuffer.CreateIndexBuffer(InIndices); - VertexBuffer.CreateUniformBuffers(MAX_FRAMES_IN_FLIGHT); + Log::Info("textures"); + Textures->LoadFromFile("textures/texture.jpg"); + Textures->CreateImageView(); + Textures->CreateSampler(); + + Buffers->CreateVertexBuffer(InVertices); + Buffers->CreateIndexBuffer(InIndices); + Buffers->CreateUniformBuffers(MAX_FRAMES_IN_FLIGHT); CreateDescriptorPool(); CreateDescriptorSets(); - CommandBuffers.CreateCommandBuffers(MAX_FRAMES_IN_FLIGHT); + Buffers->CreateCommandBuffers(MAX_FRAMES_IN_FLIGHT); CreateSyncObjects(); - VkDescriptorPoolSize PoolSizes[] = { - { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 }, - { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 }, - { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 }, - { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 } - }; + VkDescriptorPoolSize PoolSizes[] = { { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 }, + { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 }, + { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 }, + { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 } }; + VkDescriptorPoolCreateInfo PoolInfo = {}; PoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; PoolInfo.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; PoolInfo.maxSets = 1000; PoolInfo.poolSizeCount = (uint32_t)std::size(PoolSizes); PoolInfo.pPoolSizes = PoolSizes; - vkCreateDescriptorPool(DeviceManager.GetDevice(), &PoolInfo, nullptr, &ImGuiPool); + vkCreateDescriptorPool(DeviceManager->GetDevice(), &PoolInfo, nullptr, &ImGuiPool); } void VulkanContext::Cleanup() { + vkDeviceWaitIdle(DeviceManager->GetDevice()); + if (bImGuiVulkanInitialized) { ImGui_ImplVulkan_Shutdown(); @@ -144,34 +185,41 @@ void VulkanContext::Cleanup() ImGui_ImplGlfw_Shutdown(); } - CleanupSwapChain(); + Textures->Cleanup(); + Framebuffers->Cleanup(); + SwapChain->Cleanup(); - vkDestroyDescriptorPool(DeviceManager.GetDevice(), DescriptorPool, nullptr); - vkDestroyDescriptorSetLayout(DeviceManager.GetDevice(), DescriptorSetLayout, nullptr); + // vkDestroySampler(DeviceManager->GetDevice(), TextureSampler, nullptr); + // vkDestroyImageView(DeviceManager->GetDevice(), TextureImageView, nullptr); - VertexBuffer.Cleanup(MAX_FRAMES_IN_FLIGHT); + vkDestroyDescriptorPool(DeviceManager->GetDevice(), ImGuiPool, nullptr); + // vkDestroyImage(DeviceManager->GetDevice(), TextureImage, nullptr); + // vkFreeMemory(DeviceManager->GetDevice(), TextureImageMemory, nullptr); - GraphicsPipeline.Cleanup(); - RenderPass.Cleanup(); + vkDestroyDescriptorPool(DeviceManager->GetDevice(), DescriptorPool, nullptr); + vkDestroyDescriptorSetLayout(DeviceManager->GetDevice(), DescriptorSetLayout, nullptr); + + Buffers->Cleanup(MAX_FRAMES_IN_FLIGHT); + + GraphicsPipeline->Cleanup(); + RenderPass->Cleanup(); for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { - vkDestroySemaphore(DeviceManager.GetDevice(), ImageAvailableSemaphores[i], nullptr); - vkDestroySemaphore(DeviceManager.GetDevice(), RenderFinishedSemaphores[i], nullptr); - vkDestroyFence(DeviceManager.GetDevice(), InFlightFences[i], nullptr); + vkDestroySemaphore(DeviceManager->GetDevice(), ImageAvailableSemaphores[i], nullptr); + vkDestroySemaphore(DeviceManager->GetDevice(), RenderFinishedSemaphores[i], nullptr); + vkDestroyFence(DeviceManager->GetDevice(), InFlightFences[i], nullptr); } - CommandBuffers.Cleanup(); - - DeviceManager.Cleanup(); + DeviceManager->Cleanup(); if (Config.bValidationEnabled) { - DebugManager.Cleanup(); + DebugManager->Cleanup(); } - vkDestroySurfaceKHR(InstanceManager.GetInstance(), Surface, nullptr); - InstanceManager.Cleanup(); + vkDestroySurfaceKHR(InstanceManager->GetInstance(), Surface, nullptr); + InstanceManager->Cleanup(); } void VulkanContext::CreateSurface(GLFWwindow* Window) @@ -181,12 +229,13 @@ void VulkanContext::CreateSurface(GLFWwindow* Window) Log::Error("Window not initialized."); } - if (!InstanceManager.GetInstance()) + if (!InstanceManager->GetInstance()) { Log::Error("Instance is null."); } - VkResult result = glfwCreateWindowSurface(InstanceManager.GetInstance(), Window, nullptr, &Surface); + VkResult result = + glfwCreateWindowSurface(InstanceManager->GetInstance(), Window, nullptr, &Surface); if (result != VK_SUCCESS) { std::string errorMsg; @@ -223,12 +272,28 @@ void VulkanContext::CreateDescriptorSetLayout() UboLayoutBinding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT; UboLayoutBinding.pImmutableSamplers = nullptr; + VkDescriptorSetLayoutBinding SamplerLayoutBinding{}; + SamplerLayoutBinding.binding = 1; + SamplerLayoutBinding.descriptorCount = 1; + SamplerLayoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + SamplerLayoutBinding.pImmutableSamplers = nullptr; + SamplerLayoutBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; + + std::array Bindings = { UboLayoutBinding, + SamplerLayoutBinding }; + VkDescriptorSetLayoutCreateInfo LayoutInfo{}; LayoutInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - LayoutInfo.bindingCount = 1; - LayoutInfo.pBindings = &UboLayoutBinding; + LayoutInfo.bindingCount = static_cast(Bindings.size()); + LayoutInfo.pBindings = Bindings.data(); - if (vkCreateDescriptorSetLayout(DeviceManager.GetDevice(), &LayoutInfo, nullptr, &DescriptorSetLayout) != VK_SUCCESS) + if (vkCreateDescriptorSetLayout( + DeviceManager->GetDevice(), + &LayoutInfo, + nullptr, + &DescriptorSetLayout + ) + != VK_SUCCESS) { Log::Error("Failed to create descriptor set layout!"); } @@ -240,17 +305,20 @@ void VulkanContext::CreateDescriptorSetLayout() void VulkanContext::CreateDescriptorPool() { - VkDescriptorPoolSize PoolSize{}; - PoolSize.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - PoolSize.descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); + std::array PoolSizes{}; + PoolSizes[0].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + PoolSizes[0].descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); + PoolSizes[1].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + PoolSizes[1].descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); VkDescriptorPoolCreateInfo PoolInfo{}; PoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; - PoolInfo.poolSizeCount = 1; - PoolInfo.pPoolSizes = &PoolSize; + PoolInfo.poolSizeCount = static_cast(PoolSizes.size()); + PoolInfo.pPoolSizes = PoolSizes.data(); PoolInfo.maxSets = static_cast(MAX_FRAMES_IN_FLIGHT); - if (vkCreateDescriptorPool(DeviceManager.GetDevice(), &PoolInfo, nullptr, &DescriptorPool) != VK_SUCCESS) + if (vkCreateDescriptorPool(DeviceManager->GetDevice(), &PoolInfo, nullptr, &DescriptorPool) + != VK_SUCCESS) { Log::Error("Failed to create descriptor pool!"); } @@ -271,7 +339,8 @@ void VulkanContext::CreateDescriptorSets() AllocateInfo.pSetLayouts = Layouts.data(); DescriptorSets.resize(MAX_FRAMES_IN_FLIGHT); - if (vkAllocateDescriptorSets(DeviceManager.GetDevice(), &AllocateInfo, DescriptorSets.data()) != VK_SUCCESS) + if (vkAllocateDescriptorSets(DeviceManager->GetDevice(), &AllocateInfo, DescriptorSets.data()) + != VK_SUCCESS) { Log::Error("Failed to allocate descriptor sets!"); } @@ -283,117 +352,247 @@ void VulkanContext::CreateDescriptorSets() for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { VkDescriptorBufferInfo BufferInfo{}; - BufferInfo.buffer = VertexBuffer.GetUniformBuffers()[i]; + BufferInfo.buffer = Buffers->GetUniformBuffers()[i]; BufferInfo.offset = 0; BufferInfo.range = sizeof(UniformBufferObject); - VkWriteDescriptorSet DescriptorWrite{}; - DescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - DescriptorWrite.dstSet = DescriptorSets[i]; - DescriptorWrite.dstBinding = 0; - DescriptorWrite.dstArrayElement = 0; - DescriptorWrite.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - DescriptorWrite.descriptorCount = 1; - DescriptorWrite.pBufferInfo = &BufferInfo; - DescriptorWrite.pImageInfo = nullptr; - DescriptorWrite.pTexelBufferView = nullptr; + VkDescriptorImageInfo ImageInfo{}; + ImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + ImageInfo.imageView = Textures->GetImageView(); + ImageInfo.sampler = Textures->GetSampler(); - vkUpdateDescriptorSets(DeviceManager.GetDevice(), 1, &DescriptorWrite, 0, nullptr); + std::array DescriptorWrites{}; + DescriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + DescriptorWrites[0].dstSet = DescriptorSets[i]; + DescriptorWrites[0].dstBinding = 0; + DescriptorWrites[0].dstArrayElement = 0; + DescriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + DescriptorWrites[0].descriptorCount = 1; + DescriptorWrites[0].pBufferInfo = &BufferInfo; + + DescriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + DescriptorWrites[1].dstSet = DescriptorSets[i]; + DescriptorWrites[1].dstBinding = 1; + DescriptorWrites[1].dstArrayElement = 0; + DescriptorWrites[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + DescriptorWrites[1].descriptorCount = 1; + DescriptorWrites[1].pImageInfo = &ImageInfo; + + vkUpdateDescriptorSets( + DeviceManager->GetDevice(), + static_cast(DescriptorWrites.size()), + DescriptorWrites.data(), + 0, + nullptr + ); } } -void VulkanContext::CreateImage( - uint32_t Width, - uint32_t Height, - VkFormat Format, - VkImageTiling Tiling, - VkImageUsageFlags Usage, - VkMemoryPropertyFlags Properties, - VkImage& Image, - VkDeviceMemory& ImageMemory) -{ +// void VulkanContext::CreateImage( +// uint32_t Width, +// uint32_t Height, +// VkFormat Format, +// VkImageTiling Tiling, +// VkImageUsageFlags Usage, +// VkMemoryPropertyFlags Properties, +// VkImage& Image, +// VkDeviceMemory& ImageMemory +// ) +// { +// +// VkImageCreateInfo ImageInfo{}; +// ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; +// ImageInfo.imageType = VK_IMAGE_TYPE_2D; +// ImageInfo.extent.width = Width; +// ImageInfo.extent.height = Height; +// ImageInfo.extent.depth = 1; +// ImageInfo.mipLevels = 1; +// ImageInfo.arrayLayers = 1; +// ImageInfo.format = Format; +// ImageInfo.tiling = Tiling; +// ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; +// ImageInfo.usage = Usage; +// ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; +// ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; +// +// if (vkCreateImage(DeviceManager->GetDevice(), &ImageInfo, nullptr, &Image) != VK_SUCCESS) +// { +// Log::Error("Failed to create image!"); +// } +// else +// { +// Log::Info("Successfully created image."); +// } +// +// VkMemoryRequirements MemoryRequirements; +// vkGetImageMemoryRequirements(DeviceManager->GetDevice(), Image, &MemoryRequirements); +// +// VkMemoryAllocateInfo AllocateInfo{}; +// AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; +// AllocateInfo.allocationSize = MemoryRequirements.size; +// AllocateInfo.memoryTypeIndex = +// Buffers->FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); +// +// if (vkAllocateMemory(DeviceManager->GetDevice(), &AllocateInfo, nullptr, &ImageMemory) +// != VK_SUCCESS) +// { +// Log::Error("Failed to allocate image memory!"); +// } +// else +// { +// Log::Info("Successfully allocated imaged memory."); +// } +// +// vkBindImageMemory(DeviceManager->GetDevice(), Image, ImageMemory, 0); +// } +// +// void VulkanContext::CreateDepthResources() +// { +// if (!DepthPass) +// { +// DepthPass = std::make_unique(); +// } +// VkFormat DepthFormat = DepthPass->FindDepthFormat(); +// VkExtent2D Extents = SwapChain->GetSwapChainExtent(); +// +// CreateImage( +// Extents.width, +// Extents.height, +// DepthFormat, +// VK_IMAGE_TILING_OPTIMAL, +// VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, +// VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, +// DepthPass->GetDepthImage(), +// DepthPass->GetDepthImageMemory() +// ); +// +// DepthPass->SetDepthImageView(SwapChain->CreateImageView( +// DepthPass->GetDepthImage(), +// DepthFormat, +// VK_IMAGE_ASPECT_DEPTH_BIT +// )); +// +// Buffers->TransitionImageLayout( +// DepthPass->GetDepthImage(), +// DepthFormat, +// VK_IMAGE_LAYOUT_UNDEFINED, +// VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL +// ); +// } +// +// void VulkanContext::CreateTextureImage(const char* FileName) +// { +// int TextureWidth, TextureHeight, TextureChannels; +// stbi_uc* Pixels = +// stbi_load(FileName, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); +// VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; +// +// if (!Pixels) +// { +// Log::Error("Failed to load texture image!"); +// } +// else +// { +// Log::Info("Successfully loaded texture image."); +// } +// +// VkBuffer StagingBuffer; +// VkDeviceMemory StagingBufferMemory; +// +// Buffers->CreateBuffer( +// ImageSize, +// VK_BUFFER_USAGE_TRANSFER_SRC_BIT, +// VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, +// StagingBuffer, +// StagingBufferMemory +// ); +// +// void* Data; +// vkMapMemory(DeviceManager->GetDevice(), StagingBufferMemory, 0, ImageSize, 0, &Data); +// memcpy(Data, Pixels, static_cast(ImageSize)); +// vkUnmapMemory(DeviceManager->GetDevice(), StagingBufferMemory); +// +// stbi_image_free(Pixels); +// +// CreateImage( +// TextureWidth, +// TextureHeight, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_TILING_OPTIMAL, +// VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, +// VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, +// TextureImage, +// TextureImageMemory +// ); +// +// Buffers->TransitionImageLayout( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_LAYOUT_UNDEFINED, +// VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL +// ); +// +// Buffers->CopyBufferToImage( +// StagingBuffer, +// TextureImage, +// static_cast(TextureWidth), +// static_cast(TextureHeight) +// ); +// +// Buffers->TransitionImageLayout( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, +// VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL +// ); +// +// vkDestroyBuffer(DeviceManager->GetDevice(), StagingBuffer, nullptr); +// vkFreeMemory(DeviceManager->GetDevice(), StagingBufferMemory, nullptr); +// } +// +// void VulkanContext::CreateTextureImageView() +// { +// TextureImageView = SwapChain->CreateImageView( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_ASPECT_COLOR_BIT +// ); +// } - VkImageCreateInfo ImageInfo{}; - ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - ImageInfo.imageType = VK_IMAGE_TYPE_2D; - ImageInfo.extent.width = Width; - ImageInfo.extent.height = Height; - ImageInfo.extent.depth = 1; - ImageInfo.mipLevels = 1; - ImageInfo.arrayLayers = 1; - ImageInfo.format = Format; - ImageInfo.tiling = Tiling; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - ImageInfo.usage = Usage; - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - - if (vkCreateImage(DeviceManager.GetDevice(), &ImageInfo, nullptr, &Image) != VK_SUCCESS) - { - Log::Error("Failed to create image!"); - } - else - { - Log::Info("Successfully created image."); - } - - VkMemoryRequirements MemoryRequirements; - vkGetImageMemoryRequirements(DeviceManager.GetDevice(), Image, &MemoryRequirements); - - VkMemoryAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - AllocateInfo.allocationSize = MemoryRequirements.size; - AllocateInfo.memoryTypeIndex = VertexBuffer.FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); - - if (vkAllocateMemory(DeviceManager.GetDevice(), &AllocateInfo, nullptr, &ImageMemory) != VK_SUCCESS) - { - Log::Error("Failed to allocate image memory!"); - } - else - { - Log::Info("Successfully allocated imaged memory."); - } - - vkBindImageMemory(DeviceManager.GetDevice(), Image, ImageMemory, 0); -} - -void VulkanContext::CreateTextureImage(const char* FileName) -{ - int TextureWidth, TextureHeight, TextureChannels; - stbi_uc* Pixels = stbi_load(FileName, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); - VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; - - if (!Pixels) - { - Log::Error("Failed to load texture image!"); - } - else - { - Log::Info("Successfully loaded texture image."); - } - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - - VertexBuffer.CreateBuffer(ImageSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - - void* Data; - vkMapMemory(DeviceManager.GetDevice(), StagingBufferMemory, 0, ImageSize, 0, &Data); - memcpy(Data, Pixels, static_cast(ImageSize)); - vkUnmapMemory(DeviceManager.GetDevice(), StagingBufferMemory); - - stbi_image_free(Pixels); - - CreateImage( - TextureWidth, - TextureHeight, - VK_FORMAT_R8G8B8A8_SRGB, - VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, - TextureImage, - TextureImageMemory); -} +// void VulkanContext::CreateTextureSampler() +// { +// VkSamplerCreateInfo SamplerInfo{}; +// SamplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; +// SamplerInfo.magFilter = VK_FILTER_LINEAR; +// SamplerInfo.minFilter = VK_FILTER_LINEAR; +// SamplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.anisotropyEnable = VK_TRUE; +// +// VkPhysicalDeviceProperties Properties{}; +// vkGetPhysicalDeviceProperties(DeviceManager->GetPhysicalDevice(), &Properties); +// +// SamplerInfo.maxAnisotropy = Properties.limits.maxSamplerAnisotropy; +// SamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK; +// SamplerInfo.unnormalizedCoordinates = VK_FALSE; +// SamplerInfo.compareEnable = VK_FALSE; +// SamplerInfo.compareOp = VK_COMPARE_OP_ALWAYS; +// SamplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; +// SamplerInfo.mipLodBias = 0.0f; +// SamplerInfo.minLod = 0.0f; +// SamplerInfo.maxLod = 0.0f; +// +// if (vkCreateSampler(DeviceManager->GetDevice(), &SamplerInfo, nullptr, &TextureSampler) +// != VK_SUCCESS) +// { +// Log::Error("Failed to create texture sampler!"); +// } +// else +// { +// Log::Info("Successfully created texture sampler."); +// } +// } void VulkanContext::CreateSyncObjects() { @@ -410,9 +609,20 @@ void VulkanContext::CreateSyncObjects() for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { - if (vkCreateSemaphore(DeviceManager.GetDevice(), &SemaphoreInfo, nullptr, &ImageAvailableSemaphores[i]) != VK_SUCCESS - || vkCreateSemaphore(DeviceManager.GetDevice(), &SemaphoreInfo, nullptr, &RenderFinishedSemaphores[i]) != VK_SUCCESS - || vkCreateFence(DeviceManager.GetDevice(), &FenceInfo, nullptr, &InFlightFences[i]) != VK_SUCCESS) + if (vkCreateSemaphore( + DeviceManager->GetDevice(), + &SemaphoreInfo, + nullptr, + &ImageAvailableSemaphores[i] + ) != VK_SUCCESS + || vkCreateSemaphore( + DeviceManager->GetDevice(), + &SemaphoreInfo, + nullptr, + &RenderFinishedSemaphores[i] + ) != VK_SUCCESS + || vkCreateFence(DeviceManager->GetDevice(), &FenceInfo, nullptr, &InFlightFences[i]) + != VK_SUCCESS) { Log::Error("Failed to create semaphores!"); } @@ -425,16 +635,23 @@ void VulkanContext::CreateSyncObjects() void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t InIndexSize) { - vkWaitForFences(DeviceManager.GetDevice(), 1, &InFlightFences[CurrentFrame], VK_TRUE, UINT64_MAX); + vkWaitForFences( + DeviceManager->GetDevice(), + 1, + &InFlightFences[CurrentFrame], + VK_TRUE, + UINT64_MAX + ); uint32_t ImageIndex; VkResult result = vkAcquireNextImageKHR( - DeviceManager.GetDevice(), - SwapChain.GetSwapChain(), + DeviceManager->GetDevice(), + SwapChain->GetSwapChain(), UINT64_MAX, ImageAvailableSemaphores[CurrentFrame], VK_NULL_HANDLE, - &ImageIndex); + &ImageIndex + ); if (result == VK_ERROR_OUT_OF_DATE_KHR) { @@ -446,28 +663,28 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t Log::Error("Failed to acquire swap chain images!"); } - vkResetFences(DeviceManager.GetDevice(), 1, &InFlightFences[CurrentFrame]); + vkResetFences(DeviceManager->GetDevice(), 1, &InFlightFences[CurrentFrame]); - vkResetCommandBuffer(CommandBuffers.GetCommandBuffer(CurrentFrame), 0); + vkResetCommandBuffer(Buffers->GetCommandBuffer(CurrentFrame), 0); - FRecordCommandBuffersParams Params{ - CommandBuffers.GetCommandBuffer(CurrentFrame), + FRecordBuffersParams Params{ + Buffers->GetCommandBuffer(CurrentFrame), ImageIndex, - VertexBuffer.GetVertexBuffer(), + Buffers->GetVertexBuffer(), InVerticesSize, - VertexBuffer.GetIndexBuffer(), + Buffers->GetIndexBuffer(), InIndexSize, - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainExtent(), - GraphicsPipeline.GetGraphicsPipeline(), - Framebuffers.GetSwapChainFrameBuffers(), + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainExtent(), + GraphicsPipeline->GetGraphicsPipeline(), + Framebuffers->GetSwapChainFrameBuffers(), DescriptorSets[CurrentFrame], - GraphicsPipeline.GetPipelineLayout(), + GraphicsPipeline->GetPipelineLayout(), bDrawImGui // DrawData }; - CommandBuffers.RecordCommandBuffer(Params); + Buffers->RecordCommandBuffer(Params); UpdateUniformBuffer(CurrentFrame); @@ -481,14 +698,20 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t SubmitInfo.pWaitDstStageMask = WaitStages; SubmitInfo.commandBufferCount = 1; - VkCommandBuffer CommandBuffer = CommandBuffers.GetCommandBuffer(CurrentFrame); + VkCommandBuffer CommandBuffer = Buffers->GetCommandBuffer(CurrentFrame); SubmitInfo.pCommandBuffers = &CommandBuffer; VkSemaphore SignalSemaphores[] = { RenderFinishedSemaphores[CurrentFrame] }; SubmitInfo.signalSemaphoreCount = 1; SubmitInfo.pSignalSemaphores = SignalSemaphores; - if (vkQueueSubmit(DeviceManager.GetGraphicsQueue(), 1, &SubmitInfo, InFlightFences[CurrentFrame]) != VK_SUCCESS) + if (vkQueueSubmit( + DeviceManager->GetGraphicsQueue(), + 1, + &SubmitInfo, + InFlightFences[CurrentFrame] + ) + != VK_SUCCESS) { Log::Error("Failed to submit draw command buffer!"); } @@ -498,14 +721,14 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t PresentInfo.waitSemaphoreCount = 1; PresentInfo.pWaitSemaphores = SignalSemaphores; - VkSwapchainKHR SwapChains[] = { SwapChain.GetSwapChain() }; + VkSwapchainKHR SwapChains[] = { SwapChain->GetSwapChain() }; PresentInfo.swapchainCount = 1; PresentInfo.pSwapchains = SwapChains; PresentInfo.pImageIndices = &ImageIndex; PresentInfo.pResults = nullptr; - result = vkQueuePresentKHR(DeviceManager.GetPresentQueue(), &PresentInfo); + result = vkQueuePresentKHR(DeviceManager->GetPresentQueue(), &PresentInfo); if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || bFramebufferResized) { @@ -526,15 +749,26 @@ void VulkanContext::UpdateUniformBuffer(uint32_t CurrentImage) auto CurrentTime = std::chrono::high_resolution_clock::now(); - float Time = std::chrono::duration(CurrentTime - StartTime).count(); + float Time = + std::chrono::duration(CurrentTime - StartTime).count(); UniformBufferObject Ubo{}; - Ubo.Model = glm::rotate(glm::mat4(1.0f), Time * glm::radians(90.0f), glm::vec3(0.0f, 0.0f, 1.0f)); - Ubo.View = glm::lookAt(glm::vec3(2.0f, 2.0f, 2.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 1.0f)); - Ubo.Projection = glm::perspective(glm::radians(45.0f), SwapChain.GetSwapChainExtent().width / (float)SwapChain.GetSwapChainExtent().height, 0.1f, 10.0f); + Ubo.Model = + glm::rotate(glm::mat4(1.0f), Time * glm::radians(90.0f), glm::vec3(0.0f, 0.0f, 1.0f)); + Ubo.View = glm::lookAt( + glm::vec3(2.0f, 2.0f, 2.0f), + glm::vec3(0.0f, 0.0f, 0.0f), + glm::vec3(0.0f, 0.0f, 1.0f) + ); + Ubo.Projection = glm::perspective( + glm::radians(45.0f), + SwapChain->GetSwapChainExtent().width / (float)SwapChain->GetSwapChainExtent().height, + 0.1f, + 10.0f + ); Ubo.Projection[1][1] *= -1; - memcpy(VertexBuffer.GetUniformBuffersMapped()[CurrentImage], &Ubo, sizeof(Ubo)); + memcpy(Buffers->GetUniformBuffersMapped()[CurrentImage], &Ubo, sizeof(Ubo)); } void VulkanContext::RecreateSwapChain() @@ -548,30 +782,24 @@ void VulkanContext::RecreateSwapChain() } Log::Info("Recreating SwapChain..."); - vkDeviceWaitIdle(DeviceManager.GetDevice()); + vkDeviceWaitIdle(DeviceManager->GetDevice()); CleanupSwapChain(); - auto SwapChainSupport = DeviceManager.QuerySwapChainSupport(DeviceManager.GetPhysicalDevice()); + auto SwapChainSupport = + DeviceManager->QuerySwapChainSupport(DeviceManager->GetPhysicalDevice()); - SwapChain.Initialize(FSwapConfig( - DeviceManager.GetDevice(), - Surface, - Config.Window, - DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily, - DeviceManager.GetPhysicalQueueFamilies().PresentFamily, - SwapChainSupport.Capabilities, - SwapChainSupport.Formats, - SwapChainSupport.PresentModes)); - SwapChain.CreateSwapChain(); - SwapChain.CreateImageViews(); + SwapChain->CreateSwapChain(); + SwapChain->CreateImageViews(); + Textures->CreateDepthResources(); - Framebuffers.Initialize(FFramebufferConfig( - DeviceManager.GetDevice(), - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainImageViews(), - SwapChain.GetSwapChainExtent())); - Framebuffers.CreateFramebuffers(); + Framebuffers->Initialize(FFramebufferConfig( + DeviceManager->GetDevice(), + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainImageViews(), + SwapChain->GetSwapChainExtent() + )); + Framebuffers->CreateFramebuffers(Textures->GetDepthImageView()); InitImGui(); } @@ -595,17 +823,18 @@ void VulkanContext::InitImGui() } ImGui_ImplVulkan_InitInfo ImGuiInitInfo = {}; - ImGuiInitInfo.Instance = InstanceManager.GetInstance(); - ImGuiInitInfo.PhysicalDevice = DeviceManager.GetPhysicalDevice(); - ImGuiInitInfo.Device = DeviceManager.GetDevice(); - ImGuiInitInfo.QueueFamily = DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily.value_or(0); - ImGuiInitInfo.Queue = DeviceManager.GetGraphicsQueue(); + ImGuiInitInfo.Instance = InstanceManager->GetInstance(); + ImGuiInitInfo.PhysicalDevice = DeviceManager->GetPhysicalDevice(); + ImGuiInitInfo.Device = DeviceManager->GetDevice(); + ImGuiInitInfo.QueueFamily = + DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily.value_or(0); + ImGuiInitInfo.Queue = DeviceManager->GetGraphicsQueue(); ImGuiInitInfo.PipelineCache = VK_NULL_HANDLE; ImGuiInitInfo.DescriptorPool = ImGuiPool; ImGuiInitInfo.MinImageCount = MAX_FRAMES_IN_FLIGHT; - ImGuiInitInfo.ImageCount = SwapChain.GetSwapChainImageViews().size(); + ImGuiInitInfo.ImageCount = SwapChain->GetSwapChainImageViews().size(); ImGuiInitInfo.Allocator = nullptr; - ImGuiInitInfo.PipelineInfoMain.RenderPass = RenderPass.GetRenderPass(); + ImGuiInitInfo.PipelineInfoMain.RenderPass = RenderPass->GetRenderPass(); ImGuiInitInfo.PipelineInfoMain.Subpass = 0; ImGuiInitInfo.PipelineInfoMain.MSAASamples = VK_SAMPLE_COUNT_1_BIT; ImGuiInitInfo.CheckVkResultFn = nullptr; @@ -621,6 +850,7 @@ void VulkanContext::InitImGui() void VulkanContext::CleanupSwapChain() { - Framebuffers.Cleanup(); - SwapChain.Cleanup(); + Textures->CleanupDepth(); + Framebuffers->Cleanup(); + SwapChain->Cleanup(); } diff --git a/src/private/VulkanDebugManager.cpp b/src/private/VulkanDebugManager.cpp index 0cfd9ae..74b97ea 100755 --- a/src/private/VulkanDebugManager.cpp +++ b/src/private/VulkanDebugManager.cpp @@ -1,4 +1,5 @@ #include "VulkanDebugManager.h" + #include "utilities/Logger.h" VulkanDebugManager::VulkanDebugManager() diff --git a/src/private/VulkanDeviceManager.cpp b/src/private/VulkanDeviceManager.cpp index 95fcdc1..faf5eb8 100755 --- a/src/private/VulkanDeviceManager.cpp +++ b/src/private/VulkanDeviceManager.cpp @@ -6,10 +6,19 @@ #include #include -#include "VulkanContext.h" +#include "VulkanContext.hpp" #include "utilities/Logger.h" -VulkanDeviceManager::VulkanDeviceManager() +const std::vector DeviceExtensions = { + VK_KHR_SWAPCHAIN_EXTENSION_NAME +}; + +VulkanDeviceManager::VulkanDeviceManager( + VkInstance Instance, + VkSurfaceKHR Surface, + GLFWwindow* Window, + bool bEnableValidationLayers) + : Instance(Instance), Surface(Surface), Window(Window), bEnableValidationLayers(bEnableValidationLayers) { } @@ -18,19 +27,6 @@ VulkanDeviceManager::~VulkanDeviceManager() // Cleanup(); } -void VulkanDeviceManager::Initialize(FDeviceConfig InConfig) -// VkInstance Instance, -// bool bEnableValidationLayers, -// VkSurfaceKHR Surface, -// GLFWwindow* Window) -{ - DeviceConfig = InConfig; - // this->Instance = Instance; - // this->Surface = Surface; - // this->bEnableValidationLayers = bEnableValidationLayers; - // this->Window = Window; -} - void VulkanDeviceManager::Cleanup() { vkDestroyDevice(Device, nullptr); @@ -39,7 +35,7 @@ void VulkanDeviceManager::Cleanup() void VulkanDeviceManager::PickPhysicalDevice() { uint32_t DeviceCount = 0; - vkEnumeratePhysicalDevices(DeviceConfig.Instance, &DeviceCount, nullptr); + vkEnumeratePhysicalDevices(Instance, &DeviceCount, nullptr); if (DeviceCount == 0) { @@ -47,7 +43,7 @@ void VulkanDeviceManager::PickPhysicalDevice() } std::vector Devices(DeviceCount); - vkEnumeratePhysicalDevices(DeviceConfig.Instance, &DeviceCount, Devices.data()); + vkEnumeratePhysicalDevices(Instance, &DeviceCount, Devices.data()); std::multimap Candidates; @@ -84,7 +80,10 @@ bool VulkanDeviceManager::IsDeviceSuitable(VkPhysicalDevice Device) bSwapChainAdequate = !SwapChainSupport.Formats.empty() && !SwapChainSupport.PresentModes.empty(); } - return Indices.IsComplete() && bExtensionsSupported && bSwapChainAdequate; + VkPhysicalDeviceFeatures SupportedFeatures; + vkGetPhysicalDeviceFeatures(Device, &SupportedFeatures); + + return Indices.IsComplete() && bExtensionsSupported && bSwapChainAdequate && SupportedFeatures.samplerAnisotropy; } int VulkanDeviceManager::RateDeviceSuitability(VkPhysicalDevice Device) @@ -149,7 +148,7 @@ QueueFamilyIndices VulkanDeviceManager::FindQueueFamilies(VkPhysicalDevice Devic } VkBool32 PresentSupport = false; - vkGetPhysicalDeviceSurfaceSupportKHR(Device, i, DeviceConfig.Surface, &PresentSupport); + vkGetPhysicalDeviceSurfaceSupportKHR(Device, i, Surface, &PresentSupport); if (PresentSupport) { @@ -185,6 +184,7 @@ void VulkanDeviceManager::CreateLogicalDevice() } VkPhysicalDeviceFeatures DeviceFeatures{}; + DeviceFeatures.samplerAnisotropy = VK_TRUE; VkDeviceCreateInfo CreateInfo{}; CreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; @@ -195,7 +195,7 @@ void VulkanDeviceManager::CreateLogicalDevice() CreateInfo.enabledExtensionCount = static_cast(DeviceExtensions.size()); CreateInfo.ppEnabledExtensionNames = DeviceExtensions.data(); - if (DeviceConfig.bEnableValidationLayers) + if (bEnableValidationLayers) { CreateInfo.enabledLayerCount = static_cast(ValidationLayers.size()); CreateInfo.ppEnabledLayerNames = ValidationLayers.data(); @@ -222,24 +222,24 @@ SwapChainSupportDetails VulkanDeviceManager::QuerySwapChainSupport(VkPhysicalDev { SwapChainSupportDetails Details; - vkGetPhysicalDeviceSurfaceCapabilitiesKHR(Device, DeviceConfig.Surface, &Details.Capabilities); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR(Device, Surface, &Details.Capabilities); uint32_t FormatCount; - vkGetPhysicalDeviceSurfaceFormatsKHR(Device, DeviceConfig.Surface, &FormatCount, nullptr); + vkGetPhysicalDeviceSurfaceFormatsKHR(Device, Surface, &FormatCount, nullptr); if (FormatCount != 0) { Details.Formats.resize(FormatCount); - vkGetPhysicalDeviceSurfaceFormatsKHR(Device, DeviceConfig.Surface, &FormatCount, Details.Formats.data()); + vkGetPhysicalDeviceSurfaceFormatsKHR(Device, Surface, &FormatCount, Details.Formats.data()); } uint32_t PresentModeCount; - vkGetPhysicalDeviceSurfacePresentModesKHR(Device, DeviceConfig.Surface, &PresentModeCount, nullptr); + vkGetPhysicalDeviceSurfacePresentModesKHR(Device, Surface, &PresentModeCount, nullptr); if (PresentModeCount != 0) { Details.PresentModes.resize(PresentModeCount); - vkGetPhysicalDeviceSurfacePresentModesKHR(Device, DeviceConfig.Surface, &PresentModeCount, Details.PresentModes.data()); + vkGetPhysicalDeviceSurfacePresentModesKHR(Device, Surface, &PresentModeCount, Details.PresentModes.data()); } return Details; diff --git a/src/private/VulkanFramebuffers.cpp b/src/private/VulkanFramebuffers.cpp index 64801f4..87bfacd 100644 --- a/src/private/VulkanFramebuffers.cpp +++ b/src/private/VulkanFramebuffers.cpp @@ -16,33 +16,39 @@ void VulkanFramebuffers::Cleanup() } } -// void VulkanFramebuffers::CreateFramebuffers(VkRenderPass RenderPass, std::vector SwapChainImageViews, VkExtent2D SwapChainExtent) -void VulkanFramebuffers::CreateFramebuffers() +// void VulkanFramebuffers::CreateFramebuffers(VkRenderPass RenderPass, std::vector +// SwapChainImageViews, VkExtent2D SwapChainExtent) +void VulkanFramebuffers::CreateFramebuffers(VkImageView DepthImageView) { SwapChainFramebuffers.resize(FramebufferConfig.SwapChainImageViews.size()); for (size_t i = 0; i < FramebufferConfig.SwapChainImageViews.size(); i++) { - VkImageView Attachments[] = { - FramebufferConfig.SwapChainImageViews[i] - }; + std::array Attachments = { FramebufferConfig.SwapChainImageViews[i], + DepthImageView }; VkFramebufferCreateInfo FramebufferInfo{}; FramebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; FramebufferInfo.renderPass = FramebufferConfig.RenderPass; - FramebufferInfo.attachmentCount = 1; - FramebufferInfo.pAttachments = Attachments; + FramebufferInfo.attachmentCount = static_cast(Attachments.size()); + FramebufferInfo.pAttachments = Attachments.data(); FramebufferInfo.width = FramebufferConfig.SwapChainExtent.width; FramebufferInfo.height = FramebufferConfig.SwapChainExtent.height; FramebufferInfo.layers = 1; - if (vkCreateFramebuffer(FramebufferConfig.Device, &FramebufferInfo, nullptr, &SwapChainFramebuffers[i]) != VK_SUCCESS) + if (vkCreateFramebuffer( + FramebufferConfig.Device, + &FramebufferInfo, + nullptr, + &SwapChainFramebuffers[i] + ) + != VK_SUCCESS) { Log::Error("Failed to create frame buffer!"); } else { - // Log::Info("Successfully created framebuffers."); + Log::Info("Successfully created framebuffers."); } } } diff --git a/src/private/VulkanInstanceManager.cpp b/src/private/VulkanInstanceManager.cpp index c47ba16..0386f67 100755 --- a/src/private/VulkanInstanceManager.cpp +++ b/src/private/VulkanInstanceManager.cpp @@ -1,6 +1,6 @@ -#include "VulkanInstanceManager.h" +#include "VulkanInstanceManager.hpp" -#include "VulkanContext.h" +#include "VulkanContext.hpp" #include "utilities/Logger.h" #include diff --git a/src/private/VulkanPipeline.cpp b/src/private/VulkanPipeline.cpp index ef3701b..6d3e1fd 100755 --- a/src/private/VulkanPipeline.cpp +++ b/src/private/VulkanPipeline.cpp @@ -22,7 +22,11 @@ void VulkanPipeline::Cleanup() vkDestroyPipelineLayout(Device, PipelineLayout, nullptr); } -void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRenderPass RenderPass, VkDescriptorSetLayout& DescriptorSetLayout) +void VulkanPipeline::CreateGraphicsPipeline( + VkExtent2D SwapChainExtent, + VkRenderPass RenderPass, + VkDescriptorSetLayout& DescriptorSetLayout +) { auto VertShaderCode = ReadFile("Shaders/vert.spv"); auto FragShaderCode = ReadFile("Shaders/frag.spv"); @@ -55,7 +59,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender VertexInputInfo.vertexBindingDescriptionCount = 1; VertexInputInfo.pVertexBindingDescriptions = &BindingDescription; - VertexInputInfo.vertexAttributeDescriptionCount = static_cast(AttributeDescriptions.size()); + VertexInputInfo.vertexAttributeDescriptionCount = + static_cast(AttributeDescriptions.size()); VertexInputInfo.pVertexAttributeDescriptions = AttributeDescriptions.data(); VkPipelineInputAssemblyStateCreateInfo InputAssembly{}; @@ -75,10 +80,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Scissor.offset = { 0, 0 }; Scissor.extent = SwapChainExtent; - std::vector DynamicStates = { - VK_DYNAMIC_STATE_VIEWPORT, - VK_DYNAMIC_STATE_SCISSOR - }; + std::vector DynamicStates = { VK_DYNAMIC_STATE_VIEWPORT, + VK_DYNAMIC_STATE_SCISSOR }; VkPipelineDynamicStateCreateInfo DynamicState{}; DynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; @@ -113,7 +116,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Multisampling.alphaToOneEnable = VK_FALSE; VkPipelineColorBlendAttachmentState ColorBlendAttachement{}; - ColorBlendAttachement.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; + ColorBlendAttachement.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT + | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; ColorBlendAttachement.blendEnable = VK_FALSE; ColorBlendAttachement.srcColorBlendFactor = VK_BLEND_FACTOR_ONE; ColorBlendAttachement.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO; @@ -149,6 +153,18 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Log::Info("Successfully created pipeline layout"); } + VkPipelineDepthStencilStateCreateInfo DepthStencil{}; + DepthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + DepthStencil.depthTestEnable = VK_TRUE; + DepthStencil.depthWriteEnable = VK_TRUE; + DepthStencil.depthCompareOp = VK_COMPARE_OP_LESS; + DepthStencil.depthBoundsTestEnable = VK_FALSE; + DepthStencil.minDepthBounds = 0.0f; + DepthStencil.maxDepthBounds = 1.0f; + DepthStencil.stencilTestEnable = VK_FALSE; + DepthStencil.front = {}; + DepthStencil.back = {}; + VkGraphicsPipelineCreateInfo PipelineInfo{}; PipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; PipelineInfo.stageCount = 2; @@ -158,7 +174,7 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender PipelineInfo.pViewportState = &ViewportState; PipelineInfo.pRasterizationState = &Rasterizer; PipelineInfo.pMultisampleState = &Multisampling; - PipelineInfo.pDepthStencilState = nullptr; + PipelineInfo.pDepthStencilState = &DepthStencil; PipelineInfo.pColorBlendState = &ColorBlending; PipelineInfo.pDynamicState = &DynamicState; PipelineInfo.layout = PipelineLayout; @@ -167,7 +183,15 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender PipelineInfo.basePipelineHandle = VK_NULL_HANDLE; PipelineInfo.basePipelineIndex = -1; - if (vkCreateGraphicsPipelines(Device, VK_NULL_HANDLE, 1, &PipelineInfo, nullptr, &GraphicsPipeline) != VK_SUCCESS) + if (vkCreateGraphicsPipelines( + Device, + VK_NULL_HANDLE, + 1, + &PipelineInfo, + nullptr, + &GraphicsPipeline + ) + != VK_SUCCESS) { Log::Error("Failed to create graphics pipeline!"); } @@ -248,7 +272,8 @@ VkShaderModule VulkanPipeline::CreateShaderModule(const std::vector& Code) // } // } -// void VulkanPipeline::CreateFramebuffers(std::vector SwapChainImageViews, VkExtent2D SwapChainExtent) +// void VulkanPipeline::CreateFramebuffers(std::vector SwapChainImageViews, VkExtent2D +// SwapChainExtent) // { // SwapChainFrameBuffers.resize(SwapChainImageViews.size()); // @@ -267,7 +292,8 @@ VkShaderModule VulkanPipeline::CreateShaderModule(const std::vector& Code) // FramebufferInfo.height = SwapChainExtent.height; // FramebufferInfo.layers = 1; // -// if (vkCreateFramebuffer(Device, &FramebufferInfo, nullptr, &SwapChainFrameBuffers[i]) != VK_SUCCESS) +// if (vkCreateFramebuffer(Device, &FramebufferInfo, nullptr, &SwapChainFrameBuffers[i]) != +// VK_SUCCESS) // { // Log::Error("Failed to create frame buffer!"); // } diff --git a/src/private/VulkanRenderPass.cpp b/src/private/VulkanRenderPass.cpp index 34482d2..2c7157e 100644 --- a/src/private/VulkanRenderPass.cpp +++ b/src/private/VulkanRenderPass.cpp @@ -1,5 +1,6 @@ #include "VulkanRenderPass.h" #include "utilities/Logger.h" +#include void VulkanRenderPass::Initialize(VkDevice InDevice) { @@ -11,7 +12,7 @@ void VulkanRenderPass::Cleanup() vkDestroyRenderPass(Device, RenderPass, nullptr); } -void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat) +void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat, VkFormat DepthFormat) { VkAttachmentDescription ColorAttachment{}; ColorAttachment.format = SwapChainImageFormat; @@ -27,25 +28,45 @@ void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat) ColorAttachmentRef.attachment = 0; ColorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + VkAttachmentDescription DepthAttachment{}; + DepthAttachment.format = DepthFormat; + DepthAttachment.samples = VK_SAMPLE_COUNT_1_BIT; + DepthAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + DepthAttachment.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + DepthAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + DepthAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + DepthAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + DepthAttachment.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + VkAttachmentReference DepthAttachmentRef{}; + DepthAttachmentRef.attachment = 1; + DepthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + VkSubpassDescription Subpass{}; Subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; Subpass.colorAttachmentCount = 1; Subpass.pColorAttachments = &ColorAttachmentRef; - - VkRenderPassCreateInfo RenderPassInfo{}; - RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; - RenderPassInfo.attachmentCount = 1; - RenderPassInfo.pAttachments = &ColorAttachment; - RenderPassInfo.subpassCount = 1; - RenderPassInfo.pSubpasses = &Subpass; + Subpass.pDepthStencilAttachment = &DepthAttachmentRef; VkSubpassDependency Dependency{}; Dependency.srcSubpass = VK_SUBPASS_EXTERNAL; Dependency.dstSubpass = 0; - Dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - Dependency.srcAccessMask = 0; - Dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - Dependency.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + Dependency.srcStageMask = + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; + Dependency.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + Dependency.dstStageMask = + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; + Dependency.dstAccessMask = + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + + std::array Attachments = { ColorAttachment, DepthAttachment }; + + VkRenderPassCreateInfo RenderPassInfo{}; + RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + RenderPassInfo.attachmentCount = static_cast(Attachments.size()); + RenderPassInfo.pAttachments = Attachments.data(); + RenderPassInfo.subpassCount = 1; + RenderPassInfo.pSubpasses = &Subpass; RenderPassInfo.dependencyCount = 1; RenderPassInfo.pDependencies = &Dependency; diff --git a/src/private/VulkanSwapChain.cpp b/src/private/VulkanSwapChain.cpp index 373551b..4d91169 100644 --- a/src/private/VulkanSwapChain.cpp +++ b/src/private/VulkanSwapChain.cpp @@ -8,7 +8,24 @@ #include "utilities/Logger.h" -VulkanSwapChain::VulkanSwapChain() +VulkanSwapChain::VulkanSwapChain( + VkDevice Device, + VkSurfaceKHR Surface, + GLFWwindow* Window, + uint32_t GraphicsFamily, + uint32_t PresentFamily, + const VkSurfaceCapabilitiesKHR& Capabilities, + const std::vector& Formats, + const std::vector& PresentModes +) + : Device(Device) + , Surface(Surface) + , Window(Window) + , GraphicsFamily(GraphicsFamily) + , PresentFamily(PresentFamily) + , Capabilities(Capabilities) + , Formats(Formats) + , PresentModes(PresentModes) { } @@ -17,25 +34,27 @@ VulkanSwapChain::~VulkanSwapChain() // Cleanup(); } -void VulkanSwapChain::Initialize(FSwapConfig InSwapConfig) -{ - SwapConfig = InSwapConfig; -} +// void VulkanSwapChain::Initialize(FIn +// { +// = In +// } void VulkanSwapChain::Cleanup() { for (auto ImageView : SwapChainImageViews) { - vkDestroyImageView(SwapConfig.Device, ImageView, nullptr); + vkDestroyImageView(Device, ImageView, nullptr); } - vkDestroySwapchainKHR(SwapConfig.Device, SwapChain, nullptr); + vkDestroySwapchainKHR(Device, SwapChain, nullptr); } -VkSurfaceFormatKHR VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailableFormats) +VkSurfaceFormatKHR +VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailableFormats) { for (const auto& AvailableFormat : AvailableFormats) { - if (AvailableFormat.format == VK_FORMAT_B8G8R8A8_SRGB && AvailableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) + if (AvailableFormat.format == VK_FORMAT_B8G8R8A8_SRGB + && AvailableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) { return AvailableFormat; } @@ -43,7 +62,8 @@ VkSurfaceFormatKHR VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailablePresentModes) +VkPresentModeKHR +VulkanSwapChain::ChooseSwapPresentMode(const std::vector& AvailablePresentModes) { for (const auto& AvailablePresentMode : AvailablePresentModes) { @@ -63,20 +83,25 @@ VkExtent2D VulkanSwapChain::ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Cap } else { - if (SwapConfig.Window == nullptr) + if (Window == nullptr) { Log::Error("GLFW window is null in CreateSwapChain!"); } int Width, Height; - glfwGetFramebufferSize(SwapConfig.Window, &Width, &Height); + glfwGetFramebufferSize(Window, &Width, &Height); - VkExtent2D ActualExtent = { - static_cast(Width), - static_cast(Height) - }; + VkExtent2D ActualExtent = { static_cast(Width), static_cast(Height) }; - ActualExtent.width = std::clamp(ActualExtent.width, Capabilities.minImageExtent.width, Capabilities.maxImageExtent.width); - ActualExtent.height = std::clamp(ActualExtent.height, Capabilities.minImageExtent.height, Capabilities.maxImageExtent.height); + ActualExtent.width = std::clamp( + ActualExtent.width, + Capabilities.minImageExtent.width, + Capabilities.maxImageExtent.width + ); + ActualExtent.height = std::clamp( + ActualExtent.height, + Capabilities.minImageExtent.height, + Capabilities.maxImageExtent.height + ); return ActualExtent; } @@ -84,32 +109,34 @@ VkExtent2D VulkanSwapChain::ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Cap void VulkanSwapChain::CreateSwapChain() { - VkSurfaceFormatKHR SurfaceFormat = ChooseSwapSurfaceFormat(SwapConfig.Formats); - VkPresentModeKHR PresentMode = ChooseSwapPresentMode(SwapConfig.PresentModes); - VkExtent2D Extent = ChooseSwapExtent(SwapConfig.Capabilities); + VkSurfaceFormatKHR SurfaceFormat = ChooseSwapSurfaceFormat(Formats); + VkPresentModeKHR PresentMode = ChooseSwapPresentMode(PresentModes); + VkExtent2D Extent = ChooseSwapExtent(Capabilities); - uint32_t ImageCount = SwapConfig.Capabilities.minImageCount + 1; + uint32_t ImageCount = Capabilities.minImageCount + 1; - if (SwapConfig.Capabilities.maxImageCount > 0 && ImageCount > SwapConfig.Capabilities.maxImageCount) + if (Capabilities.maxImageCount > 0 && ImageCount > Capabilities.maxImageCount) { - ImageCount = SwapConfig.Capabilities.maxImageCount; + ImageCount = Capabilities.maxImageCount; } VkSwapchainCreateInfoKHR CreateInfo{}; CreateInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; - CreateInfo.surface = SwapConfig.Surface; + CreateInfo.surface = Surface; CreateInfo.minImageCount = ImageCount; CreateInfo.imageFormat = SurfaceFormat.format; CreateInfo.imageColorSpace = SurfaceFormat.colorSpace; CreateInfo.imageExtent = Extent; CreateInfo.imageArrayLayers = 1; - CreateInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; // may need VK_IMAGE_USAGE_TRANSFER_DST_BIT for post processing https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Swap_chain#:~:text=VK%5FIMAGE%5FUSAGE%5FTRANSFER%5FDST%5FBIT + CreateInfo.imageUsage = + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; // may need VK_IMAGE_USAGE_TRANSFER_DST_BIT for post + // processing + // https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Swap_chain#:~:text=VK%5FIMAGE%5FUSAGE%5FTRANSFER%5FDST%5FBIT - uint32_t QueueFamilyIndices[] = { SwapConfig.GraphicsFamily.value(), - SwapConfig.PresentFamily.value() }; + uint32_t QueueFamilyIndices[] = { GraphicsFamily, PresentFamily }; - if (SwapConfig.GraphicsFamily != SwapConfig.PresentFamily) + if (GraphicsFamily != PresentFamily) { CreateInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT; CreateInfo.queueFamilyIndexCount = 2; @@ -122,13 +149,13 @@ void VulkanSwapChain::CreateSwapChain() CreateInfo.pQueueFamilyIndices = nullptr; } - CreateInfo.preTransform = SwapConfig.Capabilities.currentTransform; + CreateInfo.preTransform = Capabilities.currentTransform; CreateInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; CreateInfo.presentMode = PresentMode; CreateInfo.clipped = VK_TRUE; CreateInfo.oldSwapchain = VK_NULL_HANDLE; - if (vkCreateSwapchainKHR(SwapConfig.Device, &CreateInfo, nullptr, &SwapChain) != VK_SUCCESS) + if (vkCreateSwapchainKHR(Device, &CreateInfo, nullptr, &SwapChain) != VK_SUCCESS) { Log::Error("Failed to create swap chain."); } @@ -137,47 +164,49 @@ void VulkanSwapChain::CreateSwapChain() Log::Info("Successfully created swap chain."); } - vkGetSwapchainImagesKHR(SwapConfig.Device, SwapChain, &ImageCount, nullptr); + vkGetSwapchainImagesKHR(Device, SwapChain, &ImageCount, nullptr); SwapChainImages.resize(ImageCount); - vkGetSwapchainImagesKHR(SwapConfig.Device, SwapChain, &ImageCount, SwapChainImages.data()); + vkGetSwapchainImagesKHR(Device, SwapChain, &ImageCount, SwapChainImages.data()); SwapChainImageFormat = SurfaceFormat.format; SwapChainExtent = Extent; } +VkImageView +VulkanSwapChain::CreateImageView(VkImage Image, VkFormat Format, VkImageAspectFlags AspectFlags) +{ + VkImageViewCreateInfo ViewInfo{}; + ViewInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + ViewInfo.image = Image; + + ViewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; + ViewInfo.format = Format; + ViewInfo.subresourceRange.aspectMask = AspectFlags; + ViewInfo.subresourceRange.baseMipLevel = 0; + ViewInfo.subresourceRange.levelCount = 1; + ViewInfo.subresourceRange.baseArrayLayer = 0; + ViewInfo.subresourceRange.layerCount = 1; + + VkImageView ImageView; + if (vkCreateImageView(Device, &ViewInfo, nullptr, &ImageView) != VK_SUCCESS) + { + Log::Error("Failed to create image view!"); + } + else + { + Log::Info("Successfully created image view."); + } + + return ImageView; +} + void VulkanSwapChain::CreateImageViews() { SwapChainImageViews.resize(SwapChainImages.size()); - int CreatedViews = 0; for (size_t i = 0; i < SwapChainImages.size(); i++) { - VkImageViewCreateInfo CreateInfo{}; - CreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - CreateInfo.image = SwapChainImages[i]; - - CreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - CreateInfo.format = SwapChainImageFormat; - CreateInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - - CreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - CreateInfo.subresourceRange.baseMipLevel = 0; - CreateInfo.subresourceRange.levelCount = 1; - CreateInfo.subresourceRange.baseArrayLayer = 0; - CreateInfo.subresourceRange.layerCount = 1; - - if (vkCreateImageView(SwapConfig.Device, &CreateInfo, nullptr, &SwapChainImageViews[i]) != VK_SUCCESS) - { - Log::Error("Failed to create image views."); - } - else - { - CreatedViews++; - } + SwapChainImageViews[i] = + CreateImageView(SwapChainImages[i], SwapChainImageFormat, VK_IMAGE_ASPECT_COLOR_BIT); } - - Log::Info("Successfully created " + std::to_string(CreatedViews) + " image views."); } diff --git a/src/private/VulkanTexture.cpp b/src/private/VulkanTexture.cpp new file mode 100644 index 0000000..1a256b9 --- /dev/null +++ b/src/private/VulkanTexture.cpp @@ -0,0 +1,281 @@ +#include "VulkanTexture.hpp" + +#include "Logger.h" +#include "VulkanBuffers.h" +#include "VulkanSwapChain.h" + +#include + +VulkanTexture::VulkanTexture( + VkDevice Device, + VkPhysicalDevice PhysicalDevice, + VkQueue GraphicsQueue, + VulkanBuffers& Buffers, + VulkanSwapChain& SwapChain +) + : Device(Device) + , PhysicalDevice(PhysicalDevice) + , GraphicsQueue(GraphicsQueue) + , Buffers(Buffers) + , SwapChain(SwapChain) +{ +} + +VulkanTexture::~VulkanTexture() {} + +void VulkanTexture::Cleanup() +{ + CleanupTextures(); + CleanupDepth(); +} + +void VulkanTexture::CleanupTextures() +{ + vkDestroySampler(Device, Sampler, nullptr); + vkDestroyImageView(Device, ImageView, nullptr); + vkDestroyImage(Device, Image, nullptr); + vkFreeMemory(Device, ImageMemory, nullptr); +} + +void VulkanTexture::CleanupDepth() +{ + vkDestroyImageView(Device, DepthImageView, nullptr); + vkDestroyImage(Device, DepthImage, nullptr); + vkFreeMemory(Device, DepthImageMemory, nullptr); +} + +void VulkanTexture::LoadFromFile(const char* Filename) +{ + int TextureWidth, TextureHeight, TextureChannels; + stbi_uc* Pixels = + stbi_load(Filename, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); + VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; + + if (!Pixels) + { + Log::Error("Failed to load texture image!"); + } + else + { + Log::Info("Successfully loaded texture image."); + } + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + + Buffers.CreateBuffer( + ImageSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + + void* Data; + vkMapMemory(Device, StagingBufferMemory, 0, ImageSize, 0, &Data); + memcpy(Data, Pixels, static_cast(ImageSize)); + vkUnmapMemory(Device, StagingBufferMemory); + + stbi_image_free(Pixels); + + CreateImage( + TextureWidth, + TextureHeight, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_TILING_OPTIMAL, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + Image, + ImageMemory + ); + + Buffers.TransitionImageLayout( + Image, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + HasStencilComponent(VK_FORMAT_R8G8B8A8_SRGB) + ); + + Buffers.CopyBufferToImage( + StagingBuffer, + Image, + static_cast(TextureWidth), + static_cast(TextureHeight) + ); + + Buffers.TransitionImageLayout( + Image, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + HasStencilComponent(VK_FORMAT_R8G8B8A8_SRGB) + ); + + vkDestroyBuffer(Device, StagingBuffer, nullptr); + vkFreeMemory(Device, StagingBufferMemory, nullptr); +} + +void VulkanTexture::CreateImageView() +{ + ImageView = + SwapChain.CreateImageView(Image, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_ASPECT_COLOR_BIT); +} + +void VulkanTexture::CreateSampler() +{ + VkSamplerCreateInfo SamplerInfo{}; + SamplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; + SamplerInfo.magFilter = VK_FILTER_LINEAR; + SamplerInfo.minFilter = VK_FILTER_LINEAR; + SamplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.anisotropyEnable = VK_TRUE; + + VkPhysicalDeviceProperties Properties{}; + vkGetPhysicalDeviceProperties(PhysicalDevice, &Properties); + + SamplerInfo.maxAnisotropy = Properties.limits.maxSamplerAnisotropy; + SamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK; + SamplerInfo.unnormalizedCoordinates = VK_FALSE; + SamplerInfo.compareEnable = VK_FALSE; + SamplerInfo.compareOp = VK_COMPARE_OP_ALWAYS; + SamplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; + SamplerInfo.mipLodBias = 0.0f; + SamplerInfo.minLod = 0.0f; + SamplerInfo.maxLod = 0.0f; + + if (vkCreateSampler(Device, &SamplerInfo, nullptr, &Sampler) != VK_SUCCESS) + { + Log::Error("Failed to create texture sampler!"); + } + else + { + Log::Info("Successfully created texture sampler."); + } +} + +void VulkanTexture::CreateDepthResources() +{ + VkFormat DepthFormat = FindDepthFormat(); + VkExtent2D Extents = SwapChain.GetSwapChainExtent(); + + CreateImage( + Extents.width, + Extents.height, + DepthFormat, + VK_IMAGE_TILING_OPTIMAL, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + DepthImage, + DepthImageMemory + ); + + DepthImageView = SwapChain.CreateImageView(DepthImage, DepthFormat, VK_IMAGE_ASPECT_DEPTH_BIT); + + Buffers.TransitionImageLayout( + DepthImage, + DepthFormat, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + HasStencilComponent(DepthFormat) + ); +} + +VkFormat VulkanTexture::FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features +) +{ + for (VkFormat Format : Candidates) + { + VkFormatProperties Properties; + vkGetPhysicalDeviceFormatProperties(PhysicalDevice, Format, &Properties); + + if (Tiling == VK_IMAGE_TILING_LINEAR + && (Properties.linearTilingFeatures & Features) == Features) + { + return Format; + } + else if (Tiling == VK_IMAGE_TILING_OPTIMAL + && (Properties.optimalTilingFeatures & Features) == Features) + { + return Format; + } + } + + Log::Error("Failed to find supported format!"); +} + +VkFormat VulkanTexture::FindDepthFormat() +{ + return FindSupportedFormat( + { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + ); +} + +bool VulkanTexture::HasStencilComponent(VkFormat Format) +{ + return Format == VK_FORMAT_D32_SFLOAT_S8_UINT || Format == VK_FORMAT_D24_UNORM_S8_UINT; +} + +void VulkanTexture::CreateImage( + uint32_t Width, + uint32_t Height, + VkFormat Format, + VkImageTiling Tiling, + VkImageUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkImage& Image, + VkDeviceMemory& ImageMemory +) +{ + + VkImageCreateInfo ImageInfo{}; + ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + ImageInfo.imageType = VK_IMAGE_TYPE_2D; + ImageInfo.extent.width = Width; + ImageInfo.extent.height = Height; + ImageInfo.extent.depth = 1; + ImageInfo.mipLevels = 1; + ImageInfo.arrayLayers = 1; + ImageInfo.format = Format; + ImageInfo.tiling = Tiling; + ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + ImageInfo.usage = Usage; + ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; + ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + + if (vkCreateImage(Device, &ImageInfo, nullptr, &Image) != VK_SUCCESS) + { + Log::Error("Failed to create image!"); + } + else + { + Log::Info("Successfully created image."); + } + + VkMemoryRequirements MemoryRequirements; + vkGetImageMemoryRequirements(Device, Image, &MemoryRequirements); + + VkMemoryAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + AllocateInfo.allocationSize = MemoryRequirements.size; + AllocateInfo.memoryTypeIndex = + Buffers.FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); + + if (vkAllocateMemory(Device, &AllocateInfo, nullptr, &ImageMemory) != VK_SUCCESS) + { + Log::Error("Failed to allocate image memory!"); + } + else + { + Log::Info("Successfully allocated imaged memory."); + } + + vkBindImageMemory(Device, Image, ImageMemory, 0); +} diff --git a/src/private/VulkanVertexBuffer.cpp b/src/private/VulkanVertexBuffer.cpp deleted file mode 100644 index 31328dc..0000000 --- a/src/private/VulkanVertexBuffer.cpp +++ /dev/null @@ -1,176 +0,0 @@ -#include "VulkanVertexBuffer.h" -#include "utilities/Logger.h" -#include -#include -#include - -void VulkanVertexBuffer::Initialize(FVertexBufferConfig InConfig) -{ - Config = InConfig; -} - -void VulkanVertexBuffer::Cleanup(const uint32_t MAX_FRAMES_IN_FLIGHT) -{ - for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) - { - vkDestroyBuffer(Config.Device, UniformBuffers[i], nullptr); - vkFreeMemory(Config.Device, UniformBuffersMemory[i], nullptr); - } - - vkDestroyBuffer(Config.Device, IndexBuffer, nullptr); - vkFreeMemory(Config.Device, IndexBufferMemory, nullptr); - - vkDestroyBuffer(Config.Device, VertexBuffer, nullptr); - vkFreeMemory(Config.Device, VertexBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateBuffer(VkDeviceSize Size, VkBufferUsageFlags Usage, VkMemoryPropertyFlags Properties, VkBuffer& Buffer, VkDeviceMemory& BufferMemory) -{ - VkBufferCreateInfo BufferInfo{}; - BufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; - BufferInfo.size = Size; - BufferInfo.usage = Usage; - BufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - - if (vkCreateBuffer(Config.Device, &BufferInfo, nullptr, &Buffer) != VK_SUCCESS) - { - Log::Error("Failed to create buffer!"); - } - else - { - Log::Info("Successfully created buffer."); - } - - VkMemoryRequirements MemoryRequirements; - vkGetBufferMemoryRequirements(Config.Device, Buffer, &MemoryRequirements); - - VkMemoryAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - AllocateInfo.allocationSize = MemoryRequirements.size; - AllocateInfo.memoryTypeIndex = FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); - - if (vkAllocateMemory(Config.Device, &AllocateInfo, nullptr, &BufferMemory) != VK_SUCCESS) - { - Log::Error("Failed to allocate vertex buffer memory!"); - } - else - { - Log::Info("Successfully allocated vertex buffer memory."); - } - - vkBindBufferMemory(Config.Device, Buffer, BufferMemory, 0); -} - -void VulkanVertexBuffer::CopyBuffer(VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size) -{ - VkCommandBufferAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - AllocateInfo.commandPool = Config.CommandPool; - AllocateInfo.commandBufferCount = 1; - - VkCommandBuffer CommandBuffer; - vkAllocateCommandBuffers(Config.Device, &AllocateInfo, &CommandBuffer); - - VkCommandBufferBeginInfo BeginInfo{}; - BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - BeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - - vkBeginCommandBuffer(CommandBuffer, &BeginInfo); - - VkBufferCopy CopyRegion{}; - CopyRegion.srcOffset = 0; - CopyRegion.dstOffset = 0; - CopyRegion.size = Size; - vkCmdCopyBuffer(CommandBuffer, SrcBuffer, DstBuffer, 1, &CopyRegion); - - vkEndCommandBuffer(CommandBuffer); - - VkSubmitInfo SubmitInfo{}; - SubmitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - SubmitInfo.commandBufferCount = 1; - SubmitInfo.pCommandBuffers = &CommandBuffer; - - vkQueueSubmit(Config.GraphicsQueue, 1, &SubmitInfo, VK_NULL_HANDLE); - vkQueueWaitIdle(Config.GraphicsQueue); - - vkFreeCommandBuffers(Config.Device, Config.CommandPool, 1, &CommandBuffer); -} - -void VulkanVertexBuffer::CreateVertexBuffer(const std::vector& InVertices) -{ - VkDeviceSize BufferSize = sizeof(InVertices[0]) * InVertices.size(); - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - Log::Info("Starting buffer copy..."); - - void* Data; - vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); - memcpy(Data, InVertices.data(), (size_t)BufferSize); - vkUnmapMemory(Config.Device, StagingBufferMemory); - - Log::Info("Finished buffer copy..."); - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VertexBuffer, VertexBufferMemory); - - CopyBuffer(StagingBuffer, VertexBuffer, BufferSize); - - vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); - vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateIndexBuffer(const std::vector& InIndices) -{ - VkDeviceSize BufferSize = sizeof(InIndices[0]) * InIndices.size(); - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - Log::Info("Starting buffer copy..."); - - void* Data; - vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); - memcpy(Data, InIndices.data(), (size_t)BufferSize); - vkUnmapMemory(Config.Device, StagingBufferMemory); - - Log::Info("Finished buffer copy..."); - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, IndexBuffer, IndexBufferMemory); - - CopyBuffer(StagingBuffer, IndexBuffer, BufferSize); - - vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); - vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT) -{ - VkDeviceSize BufferSize = sizeof(UniformBufferObject); - - UniformBuffers.resize(MAX_FRAMES_IN_FLIGHT); - UniformBuffersMemory.resize(MAX_FRAMES_IN_FLIGHT); - UniformBuffersMapped.resize(MAX_FRAMES_IN_FLIGHT); - - for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) - { - CreateBuffer(BufferSize, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, UniformBuffers[i], UniformBuffersMemory[i]); - vkMapMemory(Config.Device, UniformBuffersMemory[i], 0, BufferSize, 0, &UniformBuffersMapped[i]); - } -} - -uint32_t VulkanVertexBuffer::FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties) -{ - VkPhysicalDeviceMemoryProperties MemoryProperties; - vkGetPhysicalDeviceMemoryProperties(Config.PhysicalDevice, &MemoryProperties); - - for (uint32_t i = 0; i < MemoryProperties.memoryTypeCount; i++) - { - if ((TypeFilter & (1 << i)) && (MemoryProperties.memoryTypes[i].propertyFlags & Properties) == Properties) - { - return i; - } - } - - Log::Error("Failed to find suitable memory type!"); - return 0; -} diff --git a/src/public/VulkanBuffers.h b/src/public/VulkanBuffers.h new file mode 100644 index 0000000..d431934 --- /dev/null +++ b/src/public/VulkanBuffers.h @@ -0,0 +1,109 @@ +#pragma once + +#include +#define GLFW_INCLUDE_VULKAN +#include + +#include +#include +#include + +#include "Primitives.h" + +struct FBufferConfig +{ + VkDevice Device; + VkRenderPass RenderPass; + VkPhysicalDevice PhysicalDevice; + VkQueue GraphicsQueue; +}; + +struct FRecordBuffersParams +{ + VkCommandBuffer InCommandBuffer; + uint32_t ImageIndex; + VkBuffer InVertexBuffer; + uint32_t InVerticesSize; + VkBuffer InIndexBuffer; + uint32_t InIndexSize; + VkRenderPass RenderPass; + VkExtent2D SwapChainExtent; + VkPipeline GraphicsPipeline; + std::vector SwapChainFramebuffers; + VkDescriptorSet DescriptorSet; + VkPipelineLayout PipelineLayout; + bool bDrawImGui = false; + // std::vector InVertices; + // ImDrawData* DrawData = nullptr; +}; + +class VulkanBuffers +{ +public: + void Initialize(FBufferConfig InConfig); + // VkDevice InDevice, + // VkRenderPass InRenderPass); + + void Cleanup(size_t MAX_FRAMES_IN_FLIGHT); + + void CreateCommandPool(std::optional GraphicsFamily); + + void CreateCommandBuffers(int FramesInFlight); + + void RecordCommandBuffer(FRecordBuffersParams& Params); + + VkCommandBuffer BeginSingleTimeCommands(); + void EndSingleTimeCommands(VkCommandBuffer InCommandBuffer, VkQueue GraphicsQueue); + + void TransitionImageLayout( + VkImage Image, + VkFormat Format, + VkImageLayout OldLayout, + VkImageLayout NewLayout, + bool bHasStencilComponent + ); + + void CopyBufferToImage(VkBuffer Buffer, VkImage Image, uint32_t Width, uint32_t Height); + + void + CopyBuffer(VkQueue GraphicsQueue, VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size); + void CreateBuffer( + VkDeviceSize Size, + VkBufferUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkBuffer& Buffer, + VkDeviceMemory& BufferMemory + ); + void CreateVertexBuffer(const std::vector& InVertices); + void CreateIndexBuffer(const std::vector& InIndices); + void CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT); + + uint32_t FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties); + + std::vector GetCommandBuffers() { return CommandBuffers; } + VkCommandBuffer GetCommandBuffer(int i) { return CommandBuffers[i]; } + VkCommandPool GetCommandPool() { return CommandPool; } + VkBuffer GetVertexBuffer() { return VertexBuffer; } + VkBuffer GetIndexBuffer() { return IndexBuffer; } + std::vector GetUniformBuffers() { return UniformBuffers; } + std::vector GetUniformBuffersMapped() { return UniformBuffersMapped; } + +private: + // VkDevice Device; + // VkRenderPass RenderPass; + // VkQueue GraphicsQueue; + FBufferConfig Config; + + std::vector CommandBuffers; + VkCommandPool CommandPool; + + VkBuffer VertexBuffer; + VkDeviceMemory VertexBufferMemory; + + VkBuffer IndexBuffer; + VkDeviceMemory IndexBufferMemory; + + std::vector UniformBuffers; + std::vector UniformBuffersMemory; + std::vector UniformBuffersMapped; +}; diff --git a/src/public/VulkanCommandBuffers.h b/src/public/VulkanCommandBuffers.h deleted file mode 100644 index 499bca6..0000000 --- a/src/public/VulkanCommandBuffers.h +++ /dev/null @@ -1,58 +0,0 @@ - -#pragma once - -#include "VulkanVertexBuffer.h" -#include -#include -#define GLFW_INCLUDE_VULKAN -#include - -#include -#include - -struct FRecordCommandBuffersParams -{ - VkCommandBuffer InCommandBuffer; - uint32_t ImageIndex; - VkBuffer InVertexBuffer; - uint32_t InVerticesSize; - VkBuffer InIndexBuffer; - uint32_t InIndexSize; - VkRenderPass RenderPass; - VkExtent2D SwapChainExtent; - VkPipeline GraphicsPipeline; - std::vector SwapChainFramebuffers; - VkDescriptorSet DescriptorSet; - VkPipelineLayout PipelineLayout; - bool bDrawImGui = false; - // std::vector InVertices; - // ImDrawData* DrawData = nullptr; -}; - -class VulkanCommandBuffers -{ -public: - void Initialize( - VkDevice InDevice, - VkRenderPass InRenderPass); - - void Cleanup(); - - void CreateCommandPool(std::optional GraphicsFamily); - - void CreateCommandBuffers(int FramesInFlight); - - void RecordCommandBuffer(FRecordCommandBuffersParams& Params); - - std::vector GetCommandBuffers() { return CommandBuffers; } - VkCommandBuffer GetCommandBuffer(int i) { return CommandBuffers[i]; } - VkCommandPool GetCommandPool() { return CommandPool; } - -private: - VkDevice Device; - VkRenderPass RenderPass; - // VkQueue GraphicsQueue; - - std::vector CommandBuffers; - VkCommandPool CommandPool; -}; diff --git a/src/public/VulkanContext.h b/src/public/VulkanContext.hpp similarity index 52% rename from src/public/VulkanContext.h rename to src/public/VulkanContext.hpp index 64b771c..469ff7a 100755 --- a/src/public/VulkanContext.h +++ b/src/public/VulkanContext.hpp @@ -1,26 +1,26 @@ #pragma once -#include "VulkanCommandBuffers.h" -#include "VulkanFramebuffers.h" -#include "VulkanInstanceManager.h" -#include "VulkanDeviceManager.h" -#include "VulkanDebugManager.h" -#include "VulkanPipeline.h" -#include "VulkanRenderPass.h" -#include "VulkanSwapChain.h" -#include "VulkanVertexBuffer.h" +class VulkanInstanceManager; +class VulkanDebugManager; +class VulkanDeviceManager; +class VulkanSwapChain; +class VulkanPipeline; +class VulkanRenderPass; +class VulkanBuffers; +class VulkanFramebuffers; +class VulkanTexture; +class Vertex; #include -#include +#include #include #include #define GLFW_INCLUDE_VULKAN #include -static const std::vector ValidationLayers = { - "VK_LAYER_KHRONOS_validation" -}; +static const std::vector ValidationLayers = { "VK_LAYER_KHRONOS_validation" }; +static size_t MAX_FRAMES_IN_FLIGHT = 2; struct FVulkanConfig { @@ -36,17 +36,22 @@ public: VulkanContext(); ~VulkanContext(); - VulkanInstanceManager InstanceManager; - VulkanDebugManager DebugManager; - VulkanDeviceManager DeviceManager; - VulkanSwapChain SwapChain; - VulkanPipeline GraphicsPipeline; - VulkanRenderPass RenderPass; - VulkanFramebuffers Framebuffers; - VulkanVertexBuffer VertexBuffer; - VulkanCommandBuffers CommandBuffers; + std::unique_ptr InstanceManager; + std::unique_ptr DebugManager; + std::unique_ptr DeviceManager; + std::unique_ptr SwapChain; + std::unique_ptr GraphicsPipeline; + std::unique_ptr RenderPass; + std::unique_ptr Framebuffers; + std::unique_ptr Buffers; + std::unique_ptr Textures; + // std::unique_ptr DepthPass; - void Initialize(FVulkanConfig& InConfig, const std::vector& InVertices, const std::vector& InIndices); + void Initialize( + FVulkanConfig& InConfig, + const std::vector& InVertices, + const std::vector& InIndices + ); void Cleanup(); void CreateSurface(GLFWwindow* Window); @@ -55,20 +60,10 @@ public: void CreateDescriptorPool(); void CreateDescriptorSets(); - void CreateImage( - uint32_t Width, - uint32_t Height, - VkFormat Format, - VkImageTiling Tiling, - VkImageUsageFlags Usage, - VkMemoryPropertyFlags Properties, - VkImage& Image, - VkDeviceMemory& ImageMemory); - void CreateTextureImage(const char* FileName); - void CreateSyncObjects(); void DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t InIndexSize); + void UpdateUniformBuffer(uint32_t CurrentImage); void RecreateSwapChain(); @@ -95,13 +90,18 @@ private: VkDescriptorPool DescriptorPool; std::vector DescriptorSets; - VkImage TextureImage; - VkDeviceMemory TextureImageMemory; + // VkImage TextureImage; + // VkDeviceMemory TextureImageMemory; + // VkImageView TextureImageView; + // VkSampler TextureSampler; + // + // VkImage DepthImage; + // VkDeviceMemory DepthImageMemory; + // VkImageView DepthImageView; bool bFramebufferResized = false; bool bImGuiGlfwInitialized = false; bool bImGuiVulkanInitialized = false; - const size_t MAX_FRAMES_IN_FLIGHT = 2; - uint32_t CurrentFrame = 0; + uint32_t CurrentFrame = 0; }; diff --git a/src/public/VulkanDepthPass.hpp b/src/public/VulkanDepthPass.hpp new file mode 100644 index 0000000..0dedd5c --- /dev/null +++ b/src/public/VulkanDepthPass.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include "Logger.h" +#include "VulkanContext.hpp" + +#include + +#include + +struct FDepthConfig +{ + VkPhysicalDevice PhysicalDevice; +}; + +class VulkanDepthPass +{ +public: + void Initialize(FDepthConfig& InConfig) { Config = InConfig; } + + void CreateDepthResources() { VkFormat DepthFormat = FindDepthFormat(); } + + VkFormat FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features + ) + { + for (VkFormat Format : Candidates) + { + VkFormatProperties Properties; + vkGetPhysicalDeviceFormatProperties(Config.PhysicalDevice, Format, &Properties); + + if (Tiling == VK_IMAGE_TILING_LINEAR + && (Properties.linearTilingFeatures & Features) == Features) + { + return Format; + } + else if (Tiling == VK_IMAGE_TILING_OPTIMAL + && (Properties.optimalTilingFeatures & Features) == Features) + { + return Format; + } + } + + Log::Error("Failed to find supported format!"); + } + + VkFormat FindDepthFormat() + { + return FindSupportedFormat( + { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + ); + } + + bool HasStencilComponent(VkFormat Format) + { + return Format == VK_FORMAT_D32_SFLOAT_S8_UINT || Format == VK_FORMAT_D24_UNORM_S8_UINT; + } + + VkImage& GetDepthImage() { return DepthImage; } + VkDeviceMemory& GetDepthImageMemory() { return DepthImageMemory; } + VkImageView& GetDepthImageView() { return DepthImageView; } + void SetDepthImageView(VkImageView ImageView) { DepthImageView = ImageView; } + +private: + FDepthConfig Config; + + VkImage DepthImage; + VkDeviceMemory DepthImageMemory; + VkImageView DepthImageView; +}; diff --git a/src/public/VulkanDeviceManager.h b/src/public/VulkanDeviceManager.h index 1275548..d7378c1 100755 --- a/src/public/VulkanDeviceManager.h +++ b/src/public/VulkanDeviceManager.h @@ -7,14 +7,6 @@ #define GLFW_INCLUDE_VULKAN #include -struct FDeviceConfig -{ - VkInstance Instance; - bool bEnableValidationLayers; - VkSurfaceKHR Surface; - GLFWwindow* Window; -}; - struct QueueFamilyIndices { std::optional GraphicsFamily; @@ -36,14 +28,13 @@ struct SwapChainSupportDetails class VulkanDeviceManager { public: - VulkanDeviceManager(); - ~VulkanDeviceManager(); + VulkanDeviceManager( + VkInstance Instance, + VkSurfaceKHR Surface, + GLFWwindow* Window, + bool bEnableValidationLayers); - void Initialize(FDeviceConfig InConfig); - // VkInstance Instance, - // bool EnableValidationLayers, - // VkSurfaceKHR Surface, - // GLFWwindow* Window); + ~VulkanDeviceManager(); void Cleanup(); @@ -58,7 +49,10 @@ public: VkQueue GetPresentQueue() { return PresentQueue; } private: - FDeviceConfig DeviceConfig; + VkInstance Instance; + VkSurfaceKHR Surface; + GLFWwindow* Window; + bool bEnableValidationLayers; VkDevice Device = VK_NULL_HANDLE; VkPhysicalDevice PhysicalDevice = VK_NULL_HANDLE; diff --git a/src/public/VulkanFramebuffers.h b/src/public/VulkanFramebuffers.h index b9a6045..602b355 100644 --- a/src/public/VulkanFramebuffers.h +++ b/src/public/VulkanFramebuffers.h @@ -21,17 +21,10 @@ public: void Cleanup(); - void CreateFramebuffers(); - // void CreateFramebuffers(VkRenderPass RenderPass, std::vector SwapChainImageViews, VkExtent2D SwapChainExtent); + void CreateFramebuffers(VkImageView DepthImageView); std::vector GetSwapChainFrameBuffers() { return SwapChainFramebuffers; } - // void CreateCommandPool(std::optional GraphicsFamily); - // - // void CreateCommandBuffer(); - // - // void RecordCommandBuffer(VkCommandBuffer CommandBuffer, uint32_t imageIndex, VkRenderPass RenderPass, VkExtent2D SwapChainExtent, VkPipeline GraphicsPipeline); - private: FFramebufferConfig FramebufferConfig; diff --git a/src/public/VulkanInstanceManager.h b/src/public/VulkanInstanceManager.hpp similarity index 76% rename from src/public/VulkanInstanceManager.h rename to src/public/VulkanInstanceManager.hpp index 18fbf12..ecd78b5 100755 --- a/src/public/VulkanInstanceManager.h +++ b/src/public/VulkanInstanceManager.hpp @@ -15,8 +15,8 @@ public: void Cleanup(); - void CreateInstance(VulkanDebugManager* DebugManager = nullptr); - const VkInstance GetInstance() const { return Instance; } + void CreateInstance(VulkanDebugManager* DebugManager = nullptr); + VkInstance GetInstance() const { return Instance; } private: VkInstance Instance = VK_NULL_HANDLE; diff --git a/src/public/VulkanRenderPass.h b/src/public/VulkanRenderPass.h index 9aa9a87..380b192 100644 --- a/src/public/VulkanRenderPass.h +++ b/src/public/VulkanRenderPass.h @@ -10,7 +10,7 @@ public: void Cleanup(); - void CreateRenderPass(VkFormat SwapChainImageFormat); + void CreateRenderPass(VkFormat SwapChainImageFormat, VkFormat DepthFormat); VkRenderPass GetRenderPass() { return RenderPass; } diff --git a/src/public/VulkanSwapChain.h b/src/public/VulkanSwapChain.h index 5182e74..87df66d 100644 --- a/src/public/VulkanSwapChain.h +++ b/src/public/VulkanSwapChain.h @@ -1,93 +1,64 @@ #pragma once -#include +#include #include -#include +#include #define GLFW_INCLUDE_VULKAN #include -const std::vector DeviceExtensions = { - VK_KHR_SWAPCHAIN_EXTENSION_NAME -}; -// -// struct SwapChainSupportDetails -// { -// VkSurfaceCapabilitiesKHR Capabilities; -// std::vector Formats; -// std::vector PresentModes; -// }; - -struct FSwapConfig -{ - VkDevice Device; - VkSurfaceKHR Surface; - GLFWwindow* Window; - std::optional GraphicsFamily; - std::optional PresentFamily; - VkSurfaceCapabilitiesKHR Capabilities; - std::vector Formats; - std::vector PresentModes; -}; +const std::vector DeviceExtensions = { VK_KHR_SWAPCHAIN_EXTENSION_NAME }; class VulkanSwapChain { public: - VulkanSwapChain(); + VulkanSwapChain( + VkDevice Device, + VkSurfaceKHR Surface, + GLFWwindow* Window, + uint32_t GraphicsFamily, + uint32_t PresentFamily, + const VkSurfaceCapabilitiesKHR& Capabilities, + const std::vector& Formats, + const std::vector& PresentModes + ); + ~VulkanSwapChain(); - void Initialize(FSwapConfig InConfig); + VulkanSwapChain(const VulkanSwapChain&) = delete; + VulkanSwapChain& operator=(const VulkanSwapChain&) = delete; - // void Initialize( - // VkDevice InDevice, - // VkSurfaceKHR InSurface, - // GLFWwindow* InWindow); + void CreateSwapChain(); + void CreateImageViews(); void Cleanup(); - void CreateSwapChain(); - // void CreateSwapChain( - // std::optional GraphicsFamily, - // std::optional PresentFamily, - // VkSurfaceCapabilitiesKHR Capabilities, - // std::vector Formats, - // std::vector PresentModes); - - void CreateImageViews(); - - // void RecreateSwapChain(); - - VkSwapchainKHR GetSwapChain() { return SwapChain; } - VkFormat GetSwapChainImageFormat() { return SwapChainImageFormat; } - VkExtent2D GetSwapChainExtent() { return SwapChainExtent; } - std::vector GetSwapChainImageViews() { return SwapChainImageViews; } + VkImageView CreateImageView(VkImage Image, VkFormat Format, VkImageAspectFlags AspectFlags); + VkSwapchainKHR GetSwapChain() { return SwapChain; } + VkFormat GetSwapChainImageFormat() { return SwapChainImageFormat; } + VkExtent2D GetSwapChainExtent() { return SwapChainExtent; } + std::vector& GetSwapChainImageViews() { return SwapChainImageViews; } + size_t GetSwapChainImagesCount() { return SwapChainImages.size(); } private: - FSwapConfig SwapConfig; - // VkPhysicalDevice PhysicalDevice; - // VkDevice Device; - // VkSurfaceKHR Surface; - // - // GLFWwindow* Window = nullptr; - - std::vector SwapChainImages; - VkSwapchainKHR SwapChain = VK_NULL_HANDLE; - VkFormat SwapChainImageFormat; - VkExtent2D SwapChainExtent; + VkDevice Device; + VkSurfaceKHR Surface; + GLFWwindow* Window; + uint32_t GraphicsFamily; + uint32_t PresentFamily; + VkSurfaceCapabilitiesKHR Capabilities; + std::vector Formats; + std::vector PresentModes; + std::vector SwapChainImages; + VkSwapchainKHR SwapChain = VK_NULL_HANDLE; + VkFormat SwapChainImageFormat; + VkExtent2D SwapChainExtent; std::vector SwapChainImageViews; - // bool IsDeviceSuitable(VkPhysicalDevice Device); - // - // int RateDeviceSuitability(VkPhysicalDevice Device); - // - // bool CheckDeviceExtensionSupport(VkPhysicalDevice Device); - - // SwapChainSupportDetails QuerySwapChainSupport(VkPhysicalDevice Device); - - VkSurfaceFormatKHR ChooseSwapSurfaceFormat(const std::vector& AvailableFormats); - - VkPresentModeKHR ChooseSwapPresentMode(const std::vector& AvailablePresentModes); - + VkSurfaceFormatKHR + ChooseSwapSurfaceFormat(const std::vector& AvailableFormats); + VkPresentModeKHR + ChooseSwapPresentMode(const std::vector& AvailablePresentModes); VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Capabilities); }; diff --git a/src/public/VulkanTexture.hpp b/src/public/VulkanTexture.hpp new file mode 100644 index 0000000..4710391 --- /dev/null +++ b/src/public/VulkanTexture.hpp @@ -0,0 +1,68 @@ +#pragma once + +#include + +class VulkanBuffers; +class VulkanSwapChain; + +class VulkanTexture +{ +public: + VulkanTexture( + VkDevice Device, + VkPhysicalDevice PhysicalDevice, + VkQueue GraphicsQueue, + VulkanBuffers& Buffers, + VulkanSwapChain& SwapChain + ); + + ~VulkanTexture(); + + void Cleanup(); + void CleanupTextures(); + void CleanupDepth(); + + void LoadFromFile(const char* Filename); + void CreateImageView(); + void CreateSampler(); + + void CreateDepthResources(); + VkFormat FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features + ); + VkFormat FindDepthFormat(); + bool HasStencilComponent(VkFormat Format); + + VkImageView GetImageView() const { return ImageView; } + VkSampler GetSampler() const { return Sampler; } + VkImageView GetDepthImageView() const { return DepthImageView; } + +private: + VkDevice Device; + VkPhysicalDevice PhysicalDevice; + VkQueue GraphicsQueue; + VulkanBuffers& Buffers; + VulkanSwapChain& SwapChain; + + VkImage Image; + VkDeviceMemory ImageMemory; + VkImageView ImageView; + VkSampler Sampler; + + VkImage DepthImage; + VkDeviceMemory DepthImageMemory; + VkImageView DepthImageView; + + void CreateImage( + uint32_t Width, + uint32_t Height, + VkFormat Format, + VkImageTiling Tiling, + VkImageUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkImage& Image, + VkDeviceMemory& ImageMemory + ); +}; diff --git a/src/public/VulkanVertexBuffer.h b/src/public/VulkanVertexBuffer.h deleted file mode 100644 index 822cda6..0000000 --- a/src/public/VulkanVertexBuffer.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "Primitives.h" - -#include -#include - -#define GLFW_INCLUDE_VULKAN -#include - -struct FVertexBufferConfig -{ - VkDevice Device; - VkPhysicalDevice PhysicalDevice; - VkCommandPool CommandPool; - VkQueue GraphicsQueue; -}; - -class VulkanVertexBuffer -{ -public: - void Initialize(FVertexBufferConfig InConfig); - - void Cleanup(const uint32_t MAX_FRAMES_IN_FLIGHT); - - void CreateBuffer(VkDeviceSize Size, VkBufferUsageFlags Usage, VkMemoryPropertyFlags Properties, VkBuffer& Buffer, VkDeviceMemory& BufferMemory); - - void CopyBuffer(VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size); - - void CreateVertexBuffer(const std::vector& InVertices); - - void CreateIndexBuffer(const std::vector& InIndices); - - void CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT); - - uint32_t FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties); - - VkBuffer GetVertexBuffer() { return VertexBuffer; } - VkBuffer GetIndexBuffer() { return IndexBuffer; } - std::vector GetUniformBuffers() { return UniformBuffers; } - std::vector GetUniformBuffersMapped() { return UniformBuffersMapped; } - -private: - FVertexBufferConfig Config; - - VkBuffer VertexBuffer; - VkDeviceMemory VertexBufferMemory; - - VkBuffer IndexBuffer; - VkDeviceMemory IndexBufferMemory; - - std::vector UniformBuffers; - std::vector UniformBuffersMemory; - std::vector UniformBuffersMapped; -}; diff --git a/src/utilities/Primitives.h b/src/utilities/Primitives.h index 4135fac..737b2a1 100644 --- a/src/utilities/Primitives.h +++ b/src/utilities/Primitives.h @@ -1,3 +1,4 @@ +#include #include #include @@ -5,8 +6,9 @@ struct Vertex { - glm::vec2 Position; + glm::vec3 Position; glm::vec3 Color; + glm::vec2 TextureCoordinates; static VkVertexInputBindingDescription GetBindingDescription() { @@ -18,12 +20,12 @@ struct Vertex return BindingDescription; } - static std::array GetAttributeDescriptions() + static std::array GetAttributeDescriptions() { - std::array AttributeDescriptions{}; + std::array AttributeDescriptions{}; AttributeDescriptions[0].binding = 0; AttributeDescriptions[0].location = 0; - AttributeDescriptions[0].format = VK_FORMAT_R32G32_SFLOAT; + AttributeDescriptions[0].format = VK_FORMAT_R32G32B32_SFLOAT; AttributeDescriptions[0].offset = offsetof(Vertex, Position); AttributeDescriptions[1].binding = 0; @@ -31,6 +33,11 @@ struct Vertex AttributeDescriptions[1].format = VK_FORMAT_R32G32B32_SFLOAT; AttributeDescriptions[1].offset = offsetof(Vertex, Color); + AttributeDescriptions[2].binding = 0; + AttributeDescriptions[2].location = 2; + AttributeDescriptions[2].format = VK_FORMAT_R32G32_SFLOAT; + AttributeDescriptions[2].offset = offsetof(Vertex, TextureCoordinates); + return AttributeDescriptions; } };