Skip to content

Commit eb7e9cd

Browse files
Merge pull request #882 from Devsh-Graphics-Programming/mesh_loaders
New Geometry Asset classes and Mesh Loader replacements
2 parents 9a797a0 + 92d4ea8 commit eb7e9cd

File tree

97 files changed

+4146
-6927
lines changed

Some content is hidden

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

97 files changed

+4146
-6927
lines changed

.github/workflows/build-nabla.yml

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,31 @@ jobs:
129129
--preset ci-build-dynamic-${{ matrix.vendor }} `
130130
-t run-compiler-explorer --config ${{ matrix.config }}
131131
132-
- name: Container – Install NSC
132+
- name: Container – Build Examples
133+
id: build-examples
134+
continue-on-error: true
135+
run: |
136+
docker exec orphan `
137+
${{ env.entry }} ${{ env.cmd }} -Command cmake --build `
138+
--preset ci-build-dynamic-${{ matrix.vendor }} `
139+
-t examples_tests\all --config ${{ matrix.config }} `
140+
-- -k 0
141+
142+
- name: Container – Install Nabla
133143
run: |
134144
docker exec orphan `
135145
${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
136146
${{ env.binary }} --config ${{ matrix.config }} `
137-
--component Runtimes --prefix ${{ env.install }}
147+
--prefix ${{ env.install }}
148+
149+
- name: Container – Install Examples
150+
id: install-examples
151+
continue-on-error: true
152+
run: |
138153
docker exec orphan `
139154
${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
140-
${{ env.binary }} --config ${{ matrix.config }} `
141-
--component Executables --prefix ${{ env.install }}
155+
${{ env.binary }}\examples_tests --config ${{ matrix.config }} `
156+
--prefix ${{ env.install }}
142157
143158
- name: Container – Save NSC Image
144159
run: |

3rdparty/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,8 @@ nbl_adjust_definitions()
520520
add_custom_target(3rdparty)
521521
add_dependencies(3rdparty ${NBL_3RDPARTY_TARGETS})
522522

523+
NBL_ADJUST_FOLDERS(3rdaprty)
524+
523525
nbl_install_dir("${CMAKE_CURRENT_SOURCE_DIR}/parallel-hashmap/parallel_hashmap")
524526

525527
# parent scope exports, must be at the end of the file

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ option(NBL_PCH "Enable pre-compiled header" ON)
181181
option(NBL_FAST_MATH "Enable fast low-precision math" ON)
182182
option(NBL_BUILD_EXAMPLES "Enable building examples" ON)
183183
option(NBL_BUILD_MITSUBA_LOADER "Enable nbl::ext::MitsubaLoader?" OFF) # TODO: once it compies turn this ON by default!
184-
option(NBL_BUILD_IMGUI "Enable nbl::ext::ImGui?" OFF)
184+
option(NBL_BUILD_IMGUI "Enable nbl::ext::ImGui?" ON)
185185

186186
option(NBL_BUILD_OPTIX "Enable nbl::ext::OptiX?" OFF)
187187
if(NBL_COMPILE_WITH_CUDA)
@@ -271,7 +271,7 @@ add_subdirectory(src/nbl)
271271
add_subdirectory("${NBL_PYTHON_MODULE_ROOT_PATH}" tests) # Python Framework
272272
if(NBL_BUILD_EXAMPLES)
273273
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
274-
add_subdirectory(examples_tests)
274+
add_subdirectory(examples_tests EXCLUDE_FROM_ALL)
275275
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY RELEASE RESULT_VARIABLE NBL_LOCK)
276276
endif()
277277
add_subdirectory(tools)

cmake/common.cmake

Lines changed: 40 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -16,131 +16,50 @@ include_guard(GLOBAL)
1616

1717
include(ProcessorCount)
1818

19-
function(nbl_handle_dll_definitions _TARGET_ _SCOPE_)
20-
if(NOT TARGET Nabla)
21-
message(FATAL_ERROR "Internal error, Nabla target must be defined!")
22-
endif()
23-
24-
if(NOT TARGET ${_TARGET_})
25-
message(FATAL_ERROR "Internal error, requsted \"${_TARGET_}\" is not defined!")
26-
endif()
27-
28-
if(NBL_COMPILER_DYNAMIC_RUNTIME)
29-
set(_NABLA_OUTPUT_DIR_ "${NBL_ROOT_PATH_BINARY}/src/nbl/$<CONFIG>/devshgraphicsprogramming.nabla")
30-
31-
target_compile_definitions(${_TARGET_} ${_SCOPE_}
32-
_NABLA_DLL_NAME_="$<PATH:REMOVE_EXTENSION,$<TARGET_FILE_NAME:Nabla>>";_NABLA_OUTPUT_DIR_="${_NABLA_OUTPUT_DIR_}"
33-
)
34-
endif()
35-
36-
target_compile_definitions(${_TARGET_} ${_SCOPE_}
37-
_DXC_DLL_="${DXC_DLL}"
38-
)
39-
endfunction()
40-
41-
function(nbl_handle_runtime_lib_properties _TARGET_)
42-
if(NOT TARGET ${_TARGET_})
43-
message(FATAL_ERROR "Internal error, requsted \"${_TARGET_}\" is not defined!")
44-
endif()
45-
46-
set_target_properties(${_TARGET_} PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>$<$<BOOL:${NBL_COMPILER_DYNAMIC_RUNTIME}>:DLL>")
47-
endfunction()
48-
4919
# Macro creating project for an executable
5020
# Project and target get its name from directory when this macro gets executed (truncating number in the beginning of the name and making all lower case)
5121
# Created because of common cmake code for examples and tools
5222
macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDES _EXTRA_LIBS)
5323
get_filename_component(_NBL_PROJECT_DIRECTORY_ "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)
54-
include("scripts/nbl/projectTargetName") # sets EXECUTABLE_NAME
55-
56-
if(MSVC)
57-
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${EXECUTABLE_NAME})
58-
endif()
24+
get_filename_component(EXECUTABLE_NAME ${_NBL_PROJECT_DIRECTORY_} NAME)
25+
string(REGEX REPLACE "^[0-9]+\." "" EXECUTABLE_NAME ${EXECUTABLE_NAME})
26+
string(TOLOWER ${EXECUTABLE_NAME} EXECUTABLE_NAME)
27+
string(MAKE_C_IDENTIFIER ${EXECUTABLE_NAME} EXECUTABLE_NAME)
5928

6029
project(${EXECUTABLE_NAME})
30+
set_directory_properties(PROPERTIES VS_STARTUP_PROJECT ${EXECUTABLE_NAME})
31+
32+
set(NBL_EXECUTABLE_SOURCES
33+
main.cpp
34+
${_EXTRA_SOURCES}
35+
)
6136

6237
if(ANDROID)
63-
add_library(${EXECUTABLE_NAME} SHARED main.cpp ${_EXTRA_SOURCES})
38+
add_library(${EXECUTABLE_NAME} SHARED ${NBL_EXECUTABLE_SOURCES})
6439
else()
65-
set(NBL_EXECUTABLE_SOURCES
66-
main.cpp
67-
${_EXTRA_SOURCES}
68-
)
69-
7040
add_executable(${EXECUTABLE_NAME} ${NBL_EXECUTABLE_SOURCES})
71-
nbl_handle_runtime_lib_properties(${EXECUTABLE_NAME})
7241
endif()
73-
74-
nbl_handle_dll_definitions(${EXECUTABLE_NAME} PUBLIC)
7542

7643
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC _NBL_APP_NAME_="${EXECUTABLE_NAME}")
77-
78-
if("${EXECUTABLE_NAME}" STREQUAL commonpch)
79-
add_dependencies(${EXECUTABLE_NAME} Nabla)
80-
else()
81-
string(FIND "${_NBL_PROJECT_DIRECTORY_}" "${NBL_ROOT_PATH}/examples_tests" _NBL_FOUND_)
82-
83-
if(NOT "${_NBL_FOUND_}" STREQUAL "-1") # the call was made for a target defined in examples_tests, request common api PCH
84-
if(NOT TARGET ${NBL_EXECUTABLE_COMMON_API_TARGET})
85-
message(FATAL_ERROR "Internal error, NBL_EXECUTABLE_COMMON_API_TARGET target must be defined to create an example target!")
86-
endif()
87-
88-
add_dependencies(${EXECUTABLE_NAME} ${NBL_EXECUTABLE_COMMON_API_TARGET})
89-
target_link_libraries(${EXECUTABLE_NAME} PUBLIC ${NBL_EXECUTABLE_COMMON_API_TARGET})
90-
target_precompile_headers("${EXECUTABLE_NAME}" REUSE_FROM "${NBL_EXECUTABLE_COMMON_API_TARGET}")
91-
endif()
92-
endif()
9344

9445
target_include_directories(${EXECUTABLE_NAME}
9546
PUBLIC "${NBL_ROOT_PATH}/examples_tests/common"
96-
PUBLIC "${NBL_ROOT_PATH_BINARY}/include"
97-
PUBLIC ../../include # in macro.. relative to what? TODO: correct
9847
PRIVATE ${_EXTRA_INCLUDES}
9948
)
10049
target_link_libraries(${EXECUTABLE_NAME} PUBLIC Nabla ${_EXTRA_LIBS})
10150

102-
add_compile_options(${_EXTRA_OPTIONS})
103-
104-
if(NBL_SANITIZE_ADDRESS)
105-
if(MSVC)
106-
target_compile_options(${EXECUTABLE_NAME} PUBLIC /fsanitize=address)
107-
else()
108-
target_compile_options(${EXECUTABLE_NAME} PUBLIC -fsanitize=address)
109-
endif()
110-
endif()
111-
112-
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
113-
# add_compile_options("-msse4.2 -mfpmath=sse") ????
114-
add_compile_options(
115-
"$<$<CONFIG:DEBUG>:-fstack-protector-all>"
116-
)
117-
118-
set(COMMON_LINKER_OPTIONS "-msse4.2 -mfpmath=sse -fuse-ld=gold")
119-
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${COMMON_LINKER_OPTIONS}")
120-
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${COMMON_LINKER_OPTIONS} -fstack-protector-strong")
121-
if (NBL_GCC_SANITIZE_ADDRESS)
122-
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address")
123-
endif()
124-
if (NBL_GCC_SANITIZE_THREAD)
125-
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=thread")
126-
endif()
127-
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.1)
128-
add_compile_options(-Wno-error=ignored-attributes)
129-
endif()
130-
endif()
131-
13251
nbl_adjust_flags(TARGET ${EXECUTABLE_NAME} MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug)
133-
nbl_adjust_definitions() # macro defined in root CMakeLists
134-
add_definitions(-D_NBL_PCH_IGNORE_PRIVATE_HEADERS)
52+
nbl_adjust_definitions()
13553

136-
set_target_properties(${EXECUTABLE_NAME} PROPERTIES DEBUG_POSTFIX _d)
137-
set_target_properties(${EXECUTABLE_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX _rwdi)
138-
set_target_properties(${EXECUTABLE_NAME}
139-
PROPERTIES
54+
add_compile_options(${_EXTRA_OPTIONS})
55+
add_definitions(-D_NBL_PCH_IGNORE_PRIVATE_HEADERS) # TODO: wipe when we finally make Nabla PCH work as its supposed to
56+
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
57+
DEBUG_POSTFIX _d
58+
RELWITHDEBINFO_POSTFIX _rwdi
14059
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/bin"
14160
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_SOURCE_DIR}/bin"
14261
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/bin"
143-
VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/bin" # for visual studio
62+
VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/bin"
14463
)
14564
if(MSVC)
14665
# nothing special
@@ -248,66 +167,28 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
248167
nbl_project_process_test_module()
249168
endmacro()
250169

251-
# TODO this macro needs more love
252170
macro(nbl_create_ext_library_project EXT_NAME LIB_HEADERS LIB_SOURCES LIB_INCLUDES LIB_OPTIONS DEF_OPTIONS)
253171
set(LIB_NAME "NblExt${EXT_NAME}")
254172
project(${LIB_NAME})
255173

256174
add_library(${LIB_NAME} ${LIB_SOURCES})
257-
258-
target_include_directories(${LIB_NAME}
259-
PUBLIC $<TARGET_PROPERTY:Nabla,INCLUDE_DIRECTORIES>
260-
PRIVATE ${LIB_INCLUDES}
261-
)
262-
263-
if(NBL_EMBED_BUILTIN_RESOURCES)
264-
get_target_property(_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_ nblBuiltinResourceData BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
265-
266-
target_include_directories(${LIB_NAME}
267-
PUBLIC ${_BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY_}
268-
)
269-
endif()
270175

271-
add_dependencies(${LIB_NAME} Nabla)
272176
target_link_libraries(${LIB_NAME} PUBLIC Nabla)
273-
target_compile_options(${LIB_NAME} PUBLIC ${LIB_OPTIONS})
274-
target_compile_definitions(${LIB_NAME} PUBLIC ${DEF_OPTIONS})
275-
276-
nbl_handle_dll_definitions(${LIB_NAME} PUBLIC)
277-
nbl_handle_runtime_lib_properties(${LIB_NAME})
278-
279-
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
280-
add_compile_options(
281-
"$<$<CONFIG:DEBUG>:-fstack-protector-all>"
282-
)
283-
284-
set(COMMON_LINKER_OPTIONS "-msse4.2 -mfpmath=sse -fuse-ld=gold")
285-
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${COMMON_LINKER_OPTIONS}")
286-
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${COMMON_LINKER_OPTIONS} -fstack-protector-strong -fsanitize=address")
287-
endif()
177+
target_include_directories(${LIB_NAME} PRIVATE ${LIB_INCLUDES})
288178

289179
nbl_adjust_flags(TARGET ${LIB_NAME} MAP_RELEASE Release MAP_RELWITHDEBINFO RelWithDebInfo MAP_DEBUG Debug)
290-
nbl_adjust_definitions() # macro defined in root CMakeLists
180+
nbl_adjust_definitions()
291181

292-
set_target_properties(${LIB_NAME} PROPERTIES DEBUG_POSTFIX "")
293-
set_target_properties(${LIB_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX _rwdb)
294-
set_target_properties(${LIB_NAME}
295-
PROPERTIES
296-
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin"
182+
target_compile_options(${LIB_NAME} PUBLIC ${LIB_OPTIONS})
183+
target_compile_definitions(${LIB_NAME} PUBLIC ${DEF_OPTIONS})
184+
set_target_properties(${LIB_NAME} PROPERTIES
185+
DEBUG_POSTFIX _d
186+
RELWITHDEBINFO_POSTFIX _rwdi
297187
)
298-
if(MSVC)
299-
set_target_properties(${LIB_NAME}
300-
PROPERTIES
301-
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/bin"
302-
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/bin"
303-
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_SOURCE_DIR}/bin"
304-
VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/bin" # seems like has no effect
305-
)
306-
endif()
307188

308189
if(LIB_HEADERS)
309190
nbl_install_file_spec(${LIB_HEADERS} "nbl/ext/${EXT_NAME}")
310-
endif()
191+
endif()
311192

312193
nbl_install_lib_spec(${LIB_NAME} "nbl/ext/${EXT_NAME}")
313194

@@ -1334,4 +1215,17 @@ macro(NBL_DOCKER)
13341215
RESULT_VARIABLE DOCKER_EXIT_CODE
13351216
OUTPUT_VARIABLE DOCKER_OUTPUT_VAR
13361217
)
1337-
endmacro()
1218+
endmacro()
1219+
1220+
function(NBL_ADJUST_FOLDERS NS)
1221+
NBL_GET_ALL_TARGETS(TARGETS)
1222+
foreach(T IN LISTS TARGETS)
1223+
get_target_property(NBL_FOLDER ${T} FOLDER)
1224+
1225+
if(NBL_FOLDER)
1226+
set_target_properties(${T} PROPERTIES FOLDER "nabla/${NS}/${NBL_FOLDER}")
1227+
else()
1228+
set_target_properties(${T} PROPERTIES FOLDER "nabla/${NS}")
1229+
endif()
1230+
endforeach()
1231+
endfunction()

examples_tests

Submodule examples_tests updated 103 files

include/nbl/application_templates/BasicMultiQueueApplication.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
// Copyright (C) 2023-2023 - DevSH Graphics Programming Sp. z O.O.
22
// This file is part of the "Nabla Engine".
33
// For conditions of distribution and use, see copyright notice in nabla.h
4-
#ifndef _NBL_EXAMPLES_APPLICATION_TEMPLATES_BASIC_MULTI_QUEUE_APPLICATION_HPP_INCLUDED_
5-
#define _NBL_EXAMPLES_APPLICATION_TEMPLATES_BASIC_MULTI_QUEUE_APPLICATION_HPP_INCLUDED_
4+
#ifndef _NBL_APPLICATION_TEMPLATES_BASIC_MULTI_QUEUE_APPLICATION_HPP_INCLUDED_
5+
#define _NBL_APPLICATION_TEMPLATES_BASIC_MULTI_QUEUE_APPLICATION_HPP_INCLUDED_
6+
67

78
// Build on top of the previous one
8-
#include "MonoDeviceApplication.hpp"
9+
#include "nbl/application_templates/MonoDeviceApplication.hpp"
10+
911

1012
namespace nbl::application_templates
1113
{
@@ -263,5 +265,4 @@ class BasicMultiQueueApplication : public virtual MonoDeviceApplication
263265
};
264266

265267
}
266-
267-
#endif // _CAMERA_IMPL_
268+
#endif

include/nbl/application_templates/MonoAssetManagerAndBuiltinResourceApplication.hpp

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

0 commit comments

Comments
 (0)