Skip to content

Commit cc781d9

Browse files
authored
Formalize sub-directories as library targets (#37)
* Move Renderer to render/; DearImGui to src/detail/ * Move util/ to library * Move vk, glfw to library targets * Move render to library target; fix errors; cleanup scripts * Move scene to library target * WIP: Move engine, editor to library targets * Remove facade-lib, finalize libs, move ext * Optimize PCH: maximize reuse * Move misc/launch.json to wiki * Remove cmake/ (in lib/interface now)
1 parent 768080c commit cc781d9

File tree

117 files changed

+660
-334
lines changed

Some content is hidden

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

117 files changed

+660
-334
lines changed

CMakeLists.txt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ set(CMAKE_CXX_STANDARD 20)
44
set(CMAKE_CXX_STANDARD_REQUIRED ON)
55
set(CMAKE_DEBUG_POSTFIX "-d")
66

7+
set(target_prefix facade)
8+
79
project(facade)
810

911
option(FACADE_BUILD_SHADERS "Build facade shaders" ON)
12+
option(FACADE_PCH "Use PCH" ON)
1013

1114
if(FACADE_BUILD_SHADERS)
1215
find_program(glslc glslc)
@@ -17,14 +20,8 @@ if(FACADE_BUILD_SHADERS)
1720
endif()
1821
endif()
1922

20-
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
21-
try_compile(has_make_unique_for_overwrite "${CMAKE_CURRENT_BINARY_DIR}" SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/src/make_unique_for_overwrite.cpp")
22-
23-
add_subdirectory(ext)
24-
add_subdirectory(cmake/interface)
2523
add_subdirectory(tools/embed_shader)
26-
27-
add_subdirectory(facade-lib)
24+
add_subdirectory(lib)
2825

2926
if(FACADE_BUILD_SHADERS)
3027
message(STATUS "Adding build step to embed shaders")
@@ -57,5 +54,16 @@ target_sources(${PROJECT_NAME} PRIVATE
5754
src/bin/unlit_frag.spv.hpp
5855
)
5956

60-
target_link_libraries(${PROJECT_NAME} PRIVATE facade::lib facade::compile-options)
57+
target_link_libraries(${PROJECT_NAME} PRIVATE
58+
facade::context
59+
facade::editor
60+
facade::compile-options
61+
)
62+
63+
string(TOUPPER ${target_prefix} target_prefix_upper)
64+
65+
if(${${target_prefix_upper}_PCH})
66+
target_precompile_headers(${PROJECT_NAME} REUSE_FROM ${target_prefix}-vk)
67+
endif()
68+
6169
target_include_directories(${PROJECT_NAME} PRIVATE src)

cmake/interface/CMakeLists.txt

Lines changed: 0 additions & 18 deletions
This file was deleted.

facade-lib/CMakeLists.txt

Lines changed: 0 additions & 177 deletions
This file was deleted.

lib/CMakeLists.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
2+
3+
if("${target_prefix}" STREQUAL "")
4+
message(FATAL_ERROR "target_prefix unset")
5+
endif()
6+
7+
set(CMAKE_CXX_STANDARD 20)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
set(CMAKE_DEBUG_POSTFIX "-d")
10+
11+
project(${target_prefix}-lib)
12+
13+
add_subdirectory(ext)
14+
add_subdirectory(interface)
15+
add_subdirectory(util)
16+
add_subdirectory(vk)
17+
add_subdirectory(glfw)
18+
add_subdirectory(render)
19+
add_subdirectory(scene)
20+
add_subdirectory(engine)
21+
add_subdirectory(editor)
22+
add_subdirectory(context)

lib/context/CMakeLists.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
if("${target_prefix}" STREQUAL "")
2+
message(FATAL_ERROR "target_prefix unset")
3+
endif()
4+
5+
project(${target_prefix}-context)
6+
7+
add_library(${PROJECT_NAME})
8+
add_library(${target_prefix}::context ALIAS ${PROJECT_NAME})
9+
10+
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20)
11+
12+
target_include_directories(${PROJECT_NAME}
13+
PUBLIC
14+
include
15+
16+
PRIVATE
17+
src
18+
)
19+
20+
target_link_libraries(${PROJECT_NAME}
21+
PUBLIC
22+
${target_prefix}::engine
23+
${target_prefix}::scene
24+
25+
PRIVATE
26+
${target_prefix}::compile-options
27+
)
28+
29+
string(TOUPPER ${target_prefix} target_prefix_upper)
30+
31+
if(${${target_prefix_upper}_PCH})
32+
target_precompile_headers(${PROJECT_NAME} REUSE_FROM ${target_prefix}-vk)
33+
endif()
34+
35+
target_sources(${PROJECT_NAME} PRIVATE
36+
include/${target_prefix}/context/context.hpp
37+
38+
src/context.cpp
39+
)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
#include <facade/engine/engine.hpp>
3+
#include <facade/scene/scene.hpp>
4+
#include <facade/util/time.hpp>
5+
6+
namespace facade {
7+
class Context {
8+
public:
9+
Context(Engine::CreateInfo const& create_info = {});
10+
11+
void add_shader(Shader shader);
12+
13+
void show(bool reset_dt);
14+
15+
bool running() const { return engine.running(); }
16+
float next_frame();
17+
18+
void request_stop() { engine.request_stop(); }
19+
20+
Engine engine;
21+
Scene scene;
22+
23+
private:
24+
DeltaTime m_dt{};
25+
vk::CommandBuffer m_cb{};
26+
bool m_ready_to_render{};
27+
};
28+
} // namespace facade

lib/context/src/context.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include <facade/context/context.hpp>
2+
3+
namespace facade {
4+
Context::Context(Engine::CreateInfo const& create_info) : engine(create_info), scene(engine.gfx()) {}
5+
6+
void Context::add_shader(Shader shader) { engine.add_shader(std::move(shader)); }
7+
8+
void Context::show(bool reset_dt) {
9+
engine.show_window();
10+
if (reset_dt) { m_dt = {}; }
11+
}
12+
13+
float Context::next_frame() {
14+
if (m_ready_to_render) {
15+
if (m_cb) { scene.render(engine.renderer(), m_cb); }
16+
engine.submit();
17+
}
18+
if (!engine.next_frame(m_cb)) { m_cb = vk::CommandBuffer{}; }
19+
m_ready_to_render = true;
20+
return m_dt();
21+
}
22+
} // namespace facade

0 commit comments

Comments
 (0)