Skip to content

Commit 85793c9

Browse files
committed
Release v1.0.0
0 parents  commit 85793c9

File tree

122 files changed

+61861
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+61861
-0
lines changed

.clang-format

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
BasedOnStyle: Microsoft
2+
PackConstructorInitializers: Never
3+
PointerAlignment: Left

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.cache
2+
.DS_Store
3+
.idea
4+
.vs
5+
/bin
6+
/build
7+
/lib
8+
/demo/shaders/**/*.spv

.vscode/launch.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"name": "demo",
6+
"type": "cppdbg",
7+
"request": "launch",
8+
"program": "${workspaceFolder}/bin/demo",
9+
"args": [],
10+
"stopAtEntry": false,
11+
"cwd": "${workspaceFolder}/bin",
12+
"environment": [],
13+
"externalConsole": false,
14+
"MIMode": "lldb"
15+
}
16+
]
17+
}

CMakeLists.txt

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
cmake_minimum_required(VERSION 3.25)
2+
project(demo)
3+
4+
# CMake
5+
set(CMAKE_CXX_STANDARD 20)
6+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
7+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
8+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
9+
10+
# CPM
11+
include(cmake/CPM.cmake)
12+
13+
# Debug
14+
add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG>)
15+
16+
# Vulkan
17+
add_compile_definitions(VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1)
18+
add_compile_definitions(VULKAN_HPP_NO_CONSTRUCTORS)
19+
find_package(Vulkan REQUIRED COMPONENTS dxc)
20+
21+
# MSVC
22+
if(MSVC)
23+
add_compile_options(/wd5054)
24+
else()
25+
add_compile_options(-fms-extensions)
26+
endif()
27+
28+
# GLFW
29+
CPMAddPackage(
30+
NAME glfw
31+
GITHUB_REPOSITORY glfw/glfw
32+
GIT_TAG 3.3.8
33+
OPTIONS
34+
"GLFW_BUILD_DOCS OFF"
35+
"GLFW_BUILD_TESTS OFF"
36+
"GLFW_BUILD_EXAMPLES OFF"
37+
)
38+
39+
# OpenGL Mathematics (GLM)
40+
add_compile_definitions(GLM_ENABLE_EXPERIMENTAL)
41+
add_compile_definitions(GLM_FORCE_DEPTH_ZERO_TO_ONE)
42+
add_compile_definitions(GLM_FORCE_RADIANS)
43+
CPMAddPackage(
44+
NAME glm
45+
GITHUB_REPOSITORY g-truc/glm
46+
GIT_TAG 0.9.9.8
47+
)
48+
49+
# Dear ImGui
50+
CPMAddPackage(
51+
NAME imgui
52+
GITHUB_REPOSITORY ocornut/imgui
53+
GIT_TAG v1.89.9
54+
DOWNLOAD_ONLY
55+
)
56+
include_directories(${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends)
57+
add_library(imgui
58+
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
59+
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.h
60+
${imgui_SOURCE_DIR}/imconfig.h
61+
${imgui_SOURCE_DIR}/imgui.cpp
62+
${imgui_SOURCE_DIR}/imgui.h
63+
${imgui_SOURCE_DIR}/imgui_demo.cpp
64+
${imgui_SOURCE_DIR}/imgui_draw.cpp
65+
${imgui_SOURCE_DIR}/imgui_internal.h
66+
${imgui_SOURCE_DIR}/imgui_tables.cpp
67+
${imgui_SOURCE_DIR}/imgui_widgets.cpp
68+
${imgui_SOURCE_DIR}/imstb_rectpack.h
69+
${imgui_SOURCE_DIR}/imstb_textedit.h
70+
${imgui_SOURCE_DIR}/imstb_truetype.h
71+
)
72+
target_link_libraries(imgui Vulkan::Vulkan glfw)
73+
74+
# KTX (Khronos Texture)
75+
CPMAddPackage(
76+
NAME ktx
77+
GITHUB_REPOSITORY KhronosGroup/KTX-Software
78+
GIT_TAG v4.2.1
79+
OPTIONS
80+
"KTX_FEATURE_STATIC_LIBRARY ON"
81+
"KTX_FEATURE_TESTS OFF"
82+
"KTX_FEATURE_TOOLS OFF"
83+
"KTX_FEATURE_GL_UPLOAD OFF"
84+
"KTX_FEATURE_VK_UPLOAD OFF"
85+
)
86+
87+
# MikkTSpace
88+
CPMAddPackage(
89+
NAME MikkTSpace
90+
VERSION 3e895b4
91+
GITHUB_REPOSITORY mmikk/MikkTSpace
92+
GIT_TAG 3e895b4
93+
DOWNLOAD_ONLY
94+
)
95+
include_directories(${MikkTSpace_SOURCE_DIR})
96+
add_library(MikkTSpace
97+
${MikkTSpace_SOURCE_DIR}/mikktspace.c
98+
${MikkTSpace_SOURCE_DIR}/mikktspace.h
99+
)
100+
101+
# MshIO
102+
CPMAddPackage(
103+
NAME mshio
104+
GITHUB_REPOSITORY qnzhou/MshIO
105+
GIT_TAG v0.0.1
106+
)
107+
108+
# SoLoud
109+
CPMAddPackage(
110+
NAME SoLoud
111+
VERSION 20200207
112+
GITHUB_REPOSITORY jarikomppa/soloud
113+
GIT_TAG RELEASE_20200207
114+
DOWNLOAD_ONLY
115+
)
116+
add_compile_definitions(WITH_MINIAUDIO)
117+
include_directories(${SoLoud_SOURCE_DIR}/include)
118+
add_library(SoLoud
119+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/dr_flac.h
120+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/dr_impl.cpp
121+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/dr_mp3.h
122+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/dr_wav.h
123+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/soloud_wav.cpp
124+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/soloud_wavstream.cpp
125+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/stb_vorbis.c
126+
${SoLoud_SOURCE_DIR}/src/audiosource/wav/stb_vorbis.h
127+
${SoLoud_SOURCE_DIR}/src/backend/miniaudio/miniaudio.h
128+
${SoLoud_SOURCE_DIR}/src/backend/miniaudio/soloud_miniaudio.cpp
129+
${SoLoud_SOURCE_DIR}/src/core/soloud.cpp
130+
${SoLoud_SOURCE_DIR}/src/core/soloud_audiosource.cpp
131+
${SoLoud_SOURCE_DIR}/src/core/soloud_bus.cpp
132+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_3d.cpp
133+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_basicops.cpp
134+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_faderops.cpp
135+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_filterops.cpp
136+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_getters.cpp
137+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_setters.cpp
138+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_voicegroup.cpp
139+
${SoLoud_SOURCE_DIR}/src/core/soloud_core_voiceops.cpp
140+
${SoLoud_SOURCE_DIR}/src/core/soloud_fader.cpp
141+
${SoLoud_SOURCE_DIR}/src/core/soloud_fft.cpp
142+
${SoLoud_SOURCE_DIR}/src/core/soloud_fft_lut.cpp
143+
${SoLoud_SOURCE_DIR}/src/core/soloud_file.cpp
144+
${SoLoud_SOURCE_DIR}/src/core/soloud_filter.cpp
145+
${SoLoud_SOURCE_DIR}/src/core/soloud_misc.cpp
146+
${SoLoud_SOURCE_DIR}/src/core/soloud_queue.cpp
147+
${SoLoud_SOURCE_DIR}/src/core/soloud_thread.cpp
148+
)
149+
150+
# stb
151+
CPMAddPackage(
152+
NAME stb
153+
VERSION 5736b15
154+
GITHUB_REPOSITORY nothings/stb
155+
GIT_TAG 5736b15
156+
DOWNLOAD_ONLY
157+
)
158+
include_directories(${stb_SOURCE_DIR})
159+
160+
# tinygltf
161+
add_compile_definitions(TINYGLTF_NO_EXTERNAL_IMAGE)
162+
add_compile_definitions(TINYGLTF_NO_STB_IMAGE)
163+
add_compile_definitions(TINYGLTF_NO_STB_IMAGE_WRITE)
164+
add_compile_definitions(TINYGLTF_USE_CPP14)
165+
CPMAddPackage(
166+
NAME tinygltf
167+
GITHUB_REPOSITORY syoyo/tinygltf
168+
GIT_TAG v2.8.15
169+
OPTIONS
170+
"TINYGLTF_BUILD_LOADER_EXAMPLE OFF"
171+
"TINYGLTF_HEADER_ONLY ON"
172+
"TINYGLTF_INSTALL OFF"
173+
)
174+
175+
# tinyobjloader
176+
CPMAddPackage(
177+
NAME tinyobjloader
178+
GITHUB_REPOSITORY tinyobjloader/tinyobjloader
179+
GIT_TAG v1.0.6
180+
)
181+
182+
# Vulkan Memory Allocator
183+
CPMAddPackage(
184+
NAME VulkanMemoryAllocator
185+
GITHUB_REPOSITORY GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
186+
GIT_TAG v3.0.1
187+
)
188+
CPMAddPackage(
189+
NAME VulkanMemoryAllocator_Hpp
190+
GITHUB_REPOSITORY ruberith/VulkanMemoryAllocator-Hpp
191+
GIT_TAG v3.0.1
192+
DOWNLOAD_ONLY
193+
)
194+
include_directories(${VulkanMemoryAllocator_Hpp_SOURCE_DIR}/include)
195+
196+
# demo
197+
add_executable(demo
198+
demo/main.cpp
199+
demo/Audio.cpp
200+
demo/Audio.h
201+
demo/Buffer.h
202+
demo/Camera.cpp
203+
demo/Camera.h
204+
demo/Data.h
205+
demo/Demo.cpp
206+
demo/Demo.h
207+
demo/Descriptor.h
208+
demo/Engine.cpp
209+
demo/Engine.h
210+
demo/GLFW.cpp
211+
demo/GLFW.h
212+
demo/GPU.cpp
213+
demo/GPU.h
214+
demo/GUI.cpp
215+
demo/GUI.h
216+
demo/Image.cpp
217+
demo/Image.h
218+
demo/Model.h
219+
demo/Player.cpp
220+
demo/Player.h
221+
demo/Shader.cpp
222+
demo/Shader.h
223+
demo/Storage.h
224+
demo/SurfaceMesh.h
225+
demo/TangentSpace.h
226+
demo/Uniform.h
227+
demo/Utils.h
228+
demo/VersionNumber.h
229+
demo/Vertex.h
230+
demo/Vulkan.cpp
231+
demo/VulkanDescriptors.cpp
232+
demo/VulkanMemory.cpp
233+
demo/VulkanModels.cpp
234+
demo/VulkanPipelines.cpp
235+
demo/VulkanRender.cpp
236+
demo/VulkanSim.cpp
237+
demo/Vulkan.h
238+
)
239+
target_link_libraries(demo
240+
Vulkan::Vulkan
241+
Vulkan::dxc_lib
242+
glfw
243+
glm::glm
244+
imgui
245+
ktx
246+
MikkTSpace
247+
mshio
248+
SoLoud
249+
tinygltf
250+
tinyobjloader
251+
VulkanMemoryAllocator
252+
)
253+
254+
# Resources
255+
set(RESOURCE_FILES
256+
README.md
257+
)
258+
set_source_files_properties(${RESOURCE_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
259+
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${RESOURCE_FILES})
260+
target_sources(demo PRIVATE ${RESOURCE_FILES})

CMakeSettings.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"configurations": [
3+
{
4+
"name": "Debug",
5+
"generator": "Ninja",
6+
"configurationType": "Debug",
7+
"buildRoot": "${projectDir}\\build",
8+
"installRoot": "${projectDir}\\install",
9+
"cmakeCommandArgs": "",
10+
"buildCommandArgs": "",
11+
"ctestCommandArgs": "",
12+
"inheritEnvironments": [
13+
"msvc_x64_x64"
14+
]
15+
},
16+
{
17+
"name": "Release",
18+
"generator": "Ninja",
19+
"configurationType": "Release",
20+
"buildRoot": "${projectDir}\\build",
21+
"installRoot": "${projectDir}\\install",
22+
"cmakeCommandArgs": "",
23+
"buildCommandArgs": "",
24+
"ctestCommandArgs": "",
25+
"inheritEnvironments": [
26+
"msvc_x64_x64"
27+
]
28+
}
29+
]
30+
}

LICENSE.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2023 Robin Rademacher
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)