Skip to content

Commit f74a361

Browse files
committed
Master merge
2 parents 493e64f + 1abb6ae commit f74a361

Some content is hidden

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

60 files changed

+7848
-1994
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@
102102
[submodule "3rdparty/imguizmo"]
103103
path = 3rdparty/imguizmo
104104
url = [email protected]:Devsh-Graphics-Programming/ImGuizmo.git
105+
[submodule "3rdparty/imgui_test_engine"]
106+
path = 3rdparty/imgui_test_engine
107+
url = [email protected]:ocornut/imgui_test_engine.git
105108
[submodule "3rdparty/git-version-tracking"]
106109
path = 3rdparty/git-version-tracking
107110
url = [email protected]:Devsh-Graphics-Programming/cmake-git-version-tracking.git

.vsconfig

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"version": "1.0",
3+
"components": [
4+
"Microsoft.VisualStudio.Component.CoreEditor",
5+
"Microsoft.VisualStudio.Workload.CoreEditor",
6+
"Microsoft.Component.MSBuild",
7+
"Microsoft.VisualStudio.Component.VC.CoreIde",
8+
"Microsoft.VisualStudio.Component.Windows10SDK",
9+
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
10+
"Microsoft.VisualStudio.Component.Graphics.Tools",
11+
"Microsoft.VisualStudio.Component.VC.DiagnosticTools",
12+
"Microsoft.VisualStudio.Component.Windows11SDK.22621",
13+
"Microsoft.VisualStudio.Component.VC.ATL",
14+
"Microsoft.VisualStudio.Component.SecurityIssueAnalysis",
15+
"Microsoft.VisualStudio.Component.VC.ATLMFC",
16+
"Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
17+
"Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake",
18+
"Microsoft.VisualStudio.Component.VC.CMake.Project",
19+
"Microsoft.VisualStudio.Component.VC.ASAN",
20+
"Microsoft.VisualStudio.Workload.NativeDesktop",
21+
"Microsoft.Net.ComponentGroup.TargetingPacks.Common"
22+
],
23+
"extensions": []
24+
}

3rdparty/CMakeLists.txt

Lines changed: 84 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -287,54 +287,113 @@ add_library(spirv_cross OBJECT
287287
target_compile_definitions(spirv_cross PUBLIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS)
288288

289289
# cmake-git-version-tracking
290+
# note that checking if a repository is dirty may cost build time (especially a lot if like us you have a lot of submodules) - by default we run with all checks but if you want to increase build time iterations I recommend to exclude this check
291+
option(GIT_EXCLUDE_IS_DIRTY "Exclude IS_DIRTY from git tracking checks, will increase build time iterations at the expense of the meta information loss" OFF)
290292
add_subdirectory(git-version-tracking EXCLUDE_FROM_ALL)
291293
NBL_ADD_GIT_TRACKING_META_LIBRARY(nabla "${NBL_ROOT_PATH}")
292294
NBL_ADD_GIT_TRACKING_META_LIBRARY(dxc "${CMAKE_CURRENT_SOURCE_DIR}/dxc/dxc")
293295
NBL_GENERATE_GIT_TRACKING_META()
294296

295297
if(NBL_BUILD_IMGUI)
298+
set(NBL_IMGUI_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/imgui")
299+
set(NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT "${THIRD_PARTY_SOURCE_DIR}/imgui_test_engine")
300+
set(NBL_IMGUI_TEST_ENGINE_ROOT "${NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT}/imgui_test_engine")
301+
set(NBL_IMGUI_TEST_SUITE_ROOT "${NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT}/imgui_test_suite")
302+
set(NBL_IMPLOT_ROOT "${NBL_IMGUI_TEST_SUITE_ROOT}/thirdparty/implot")
303+
296304
add_library(imgui STATIC
297-
"imgui/imconfig.h"
298-
"imgui/imgui_demo.cpp"
299-
"imgui/imgui_draw.cpp"
300-
"imgui/imgui_internal.h"
301-
"imgui/imgui_tables.cpp"
302-
"imgui/imgui_widgets.cpp"
303-
"imgui/imgui.cpp"
304-
"imgui/imgui.h"
305-
"imgui/misc/cpp/imgui_stdlib.cpp"
306-
"imgui/misc/cpp/imgui_stdlib.h"
307-
"imgui/imstb_rectpack.h"
308-
"imgui/imstb_textedit.h"
309-
"imgui/imstb_truetype.h"
305+
"${NBL_IMGUI_ROOT}/imconfig.h"
306+
"${NBL_IMGUI_ROOT}/imgui_demo.cpp"
307+
"${NBL_IMGUI_ROOT}/imgui_draw.cpp"
308+
"${NBL_IMGUI_ROOT}/imgui_internal.h"
309+
"${NBL_IMGUI_ROOT}/imgui_tables.cpp"
310+
"${NBL_IMGUI_ROOT}/imgui_widgets.cpp"
311+
"${NBL_IMGUI_ROOT}/imgui.cpp"
312+
"${NBL_IMGUI_ROOT}/misc/freetype/imgui_freetype.cpp"
313+
"${NBL_IMGUI_ROOT}/imgui.h"
314+
"${NBL_IMGUI_ROOT}/misc/cpp/imgui_stdlib.cpp"
315+
"${NBL_IMGUI_ROOT}/misc/cpp/imgui_stdlib.h"
316+
"${NBL_IMGUI_ROOT}/imstb_rectpack.h"
317+
"${NBL_IMGUI_ROOT}/imstb_textedit.h"
318+
"${NBL_IMGUI_ROOT}/imstb_truetype.h"
310319
)
311-
target_include_directories(imgui
312-
PUBLIC "imgui"
313-
PUBLIC "imgui/misc/cpp"
314-
PUBLIC "imgui/backends"
320+
321+
target_link_libraries(imgui PUBLIC freetype)
322+
323+
target_include_directories(imgui PUBLIC
324+
"${NBL_IMGUI_ROOT}"
325+
"${NBL_IMGUI_ROOT}/misc/cpp"
326+
"${NBL_IMGUI_ROOT}/backends"
327+
"${NBL_IMGUI_TEST_SUITE_ROOT}"
328+
$<TARGET_PROPERTY:freetype,INCLUDE_DIRECTORIES>
315329
)
316330

317-
# ImPlot
318331
add_library(implot STATIC
319-
"implot/implot.h"
320-
"implot/implot_internal.h"
321-
"implot/implot.cpp"
322-
"implot/implot_items.cpp"
332+
"${NBL_IMPLOT_ROOT}/implot.h"
333+
"${NBL_IMPLOT_ROOT}/implot_internal.h"
334+
"${NBL_IMPLOT_ROOT}/implot.cpp"
335+
"${NBL_IMPLOT_ROOT}/implot_items.cpp"
336+
"${NBL_IMPLOT_ROOT}/implot_demo.cpp"
323337
)
338+
324339
target_include_directories(implot
325-
PUBLIC "imgui"
340+
PUBLIC $<TARGET_PROPERTY:imgui,INCLUDE_DIRECTORIES>
341+
PUBLIC "${NBL_IMPLOT_ROOT}"
326342
)
343+
327344
target_link_libraries(implot PUBLIC imgui)
328345
target_compile_definitions(implot PUBLIC IMPLOT_DEBUG IMPLOT_DLL_EXPORT)
329-
set_property(TARGET implot PROPERTY CXX_STANDARD 11)
346+
set_target_properties(implot PROPERTIES CXX_STANDARD 20)
347+
330348
if(MSVC)
331349
target_compile_options(implot PRIVATE /MT /W4 /WX /arch:AVX2 /fp:fast /permissive-)
332350
else()
333351
target_compile_options(implot PRIVATE -Wall -Wextra -pedantic -Werror -mavx2 -Ofast)
334352
endif()
353+
354+
file(GLOB_RECURSE NBL_TEST_SUITE_SOURCES CONFIGURE_DEPENDS "${NBL_IMGUI_TEST_SUITE_ROOT}/imgui_test*.cpp")
355+
file(GLOB_RECURSE NBL_TEST_SUITE_SOURCES CONFIGURE_DEPENDS "${NBL_IMGUI_TEST_SUITE_ROOT}/imgui_test*.cpp")
356+
357+
add_library(imtestsuite STATIC
358+
${NBL_TEST_SUITE_SOURCES}
359+
)
360+
361+
target_include_directories(imtestsuite PUBLIC
362+
"${NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT}"
363+
"${NBL_IMGUI_TEST_ENGINE_ROOT}"
364+
"${NBL_IMGUI_TEST_SUITE_ROOT}"
365+
$<TARGET_PROPERTY:imgui,INCLUDE_DIRECTORIES>
366+
$<TARGET_PROPERTY:implot,INCLUDE_DIRECTORIES>
367+
)
368+
369+
set_target_properties(imtestsuite PROPERTIES CXX_STANDARD 14) # NOTE! THOSE TESTS DO NOT COMPILE WITH HIGHER STANDARDS SO WE WRAP SOURCES INTO LIBRARY COMPILED WITH LOWER ONE
370+
target_link_libraries(imtestsuite PUBLIC implot)
371+
372+
file(GLOB_RECURSE NBL_TEST_ENGINE_SOURCES CONFIGURE_DEPENDS "${NBL_IMGUI_TEST_ENGINE_ROOT}/*.cpp")
373+
374+
add_library(imtestengine STATIC
375+
${NBL_TEST_ENGINE_SOURCES}
376+
)
377+
378+
target_include_directories(imtestengine PUBLIC
379+
$<TARGET_PROPERTY:imtestsuite,INCLUDE_DIRECTORIES>
380+
)
381+
382+
target_link_libraries(imtestengine PUBLIC imtestsuite)
335383

336384
set(IMGUIZMO_BUILD_EXAMPLE OFF)
337385
add_subdirectory(imguizmo EXCLUDE_FROM_ALL)
386+
387+
# note we override imgui config with our own
388+
set(NBL_IMGUI_USER_CONFIG_FILEPATH "${NBL_IMGUI_ROOT}/nabla_imconfig.h")
389+
390+
if(NOT EXISTS "${NBL_IMGUI_USER_CONFIG_FILEPATH}")
391+
message(FATAL_ERROR "\"${NBL_IMGUI_USER_CONFIG_FILEPATH}\" doesn't exist!")
392+
endif()
393+
394+
target_compile_definitions(imgui PUBLIC
395+
IMGUI_USER_CONFIG="${NBL_IMGUI_USER_CONFIG_FILEPATH}"
396+
)
338397
endif()
339398

340399
add_library(aesGladman OBJECT
@@ -425,7 +484,7 @@ if (NBL_BUILD_MITSUBA_LOADER)
425484
list(APPEND NBL_3RDPARTY_TARGETS expat)
426485
endif()
427486
if (NBL_BUILD_IMGUI)
428-
list(APPEND NBL_3RDPARTY_TARGETS imgui implot imguizmo)
487+
list(APPEND NBL_3RDPARTY_TARGETS imgui implot imtestsuite imtestengine imguizmo)
429488
endif()
430489
if(ENABLE_HLSL)
431490
list(APPEND NBL_3RDPARTY_TARGETS HLSL)

3rdparty/imgui

Submodule imgui updated 115 files

3rdparty/imgui_test_engine

Submodule imgui_test_engine added at 60b295c

CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ set(NBL_BUILTIN_RESOURCES_DIRECTORY_PATH "${NBL_ROOT_PATH}/include/nbl/builtin")
6666
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${NBL_ROOT_PATH}/cmake" CACHE PATH "")
6767
get_property(NBL_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
6868

69+
include(common)
70+
71+
option(NBL_ENABLE_VS_CONFIG_IMPORT "Request import of .vsconfig file with VS components required to build Nabla" OFF)
72+
73+
if(NBL_ENABLE_VS_CONFIG_IMPORT)
74+
NBL_IMPORT_VS_CONFIG()
75+
endif()
76+
6977
# Configure CCache if available
7078
find_program(CCACHE_FOUND ccache)
7179
if(CCACHE_FOUND)
@@ -189,7 +197,6 @@ get_filename_component(NBL_MEDIA_DIRECTORY_ABS "${NBL_MEDIA_DIRECTORY}" ABSOLUTE
189197

190198
include(submodules/update)
191199
find_package(Python3 COMPONENTS Interpreter REQUIRED)
192-
include(common)
193200

194201
add_subdirectory(${THIRD_PARTY_SOURCE_DIR})
195202

cmake/common.cmake

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
258258
nbl_project_process_test_module()
259259
endmacro()
260260

261+
# TODO this macro needs more love
261262
macro(nbl_create_ext_library_project EXT_NAME LIB_HEADERS LIB_SOURCES LIB_INCLUDES LIB_OPTIONS DEF_OPTIONS)
262263
set(LIB_NAME "NblExt${EXT_NAME}")
263264
project(${LIB_NAME})
@@ -1281,4 +1282,43 @@ endmacro()
12811282

12821283
macro(write_source_definitions NBL_FILE NBL_WRAPPER_CODE_TO_WRITE)
12831284
file(WRITE "${NBL_FILE}" "${NBL_WRAPPER_CODE_TO_WRITE}")
1284-
endmacro()
1285+
endmacro()
1286+
1287+
function(NBL_GET_ALL_TARGETS NBL_OUTPUT_VAR)
1288+
set(NBL_TARGETS)
1289+
NBL_GET_ALL_TARGETS_RECURSIVE(NBL_TARGETS ${CMAKE_CURRENT_SOURCE_DIR})
1290+
set(${NBL_OUTPUT_VAR} ${NBL_TARGETS} PARENT_SCOPE)
1291+
endfunction()
1292+
1293+
macro(NBL_GET_ALL_TARGETS_RECURSIVE NBL_TARGETS NBL_DIRECTORY)
1294+
get_property(NBL_SUBDIRECTORIES DIRECTORY ${NBL_DIRECTORY} PROPERTY SUBDIRECTORIES)
1295+
foreach(NBL_SUBDIRECTORY ${NBL_SUBDIRECTORIES})
1296+
NBL_GET_ALL_TARGETS_RECURSIVE(${NBL_TARGETS} ${NBL_SUBDIRECTORY})
1297+
endforeach()
1298+
1299+
get_property(NBL_GATHERED_TARGETS DIRECTORY ${NBL_DIRECTORY} PROPERTY BUILDSYSTEM_TARGETS)
1300+
list(APPEND ${NBL_TARGETS} ${NBL_GATHERED_TARGETS})
1301+
endmacro()
1302+
1303+
function(NBL_IMPORT_VS_CONFIG)
1304+
if(WIN32 AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
1305+
message(STATUS "Requesting import of .vsconfig file! Configuration will continue after Visual Studio Installer is closed.")
1306+
set(NBL_DEVENV_ISOLATION_INI_PATH "${CMAKE_GENERATOR_INSTANCE}/Common7/IDE/devenv.isolation.ini")
1307+
file(READ ${NBL_DEVENV_ISOLATION_INI_PATH} NBL_DEVENV_ISOLATION_INI_CONTENT)
1308+
string(REPLACE "/" "\\" NBL_VS_INSTALLATION_PATH ${CMAKE_GENERATOR_INSTANCE})
1309+
string(REGEX MATCH "SetupEngineFilePath=\"([^\"]*)\"" _match "${NBL_DEVENV_ISOLATION_INI_CONTENT}")
1310+
set(NBL_VS_INSTALLER_PATH "${CMAKE_MATCH_1}")
1311+
1312+
execute_process(COMMAND "${NBL_VS_INSTALLER_PATH}" modify --installPath "${NBL_VS_INSTALLATION_PATH}" --config "${NBL_ROOT_PATH}/.vsconfig" --allowUnsignedExtensions
1313+
ERROR_VARIABLE vsconfig_error
1314+
RESULT_VARIABLE vsconfig_result
1315+
)
1316+
1317+
if(NOT vsconfig_result EQUAL 0)
1318+
message(FATAL_ERROR "Visual Studio Installer error: ${vsconfig_error}")
1319+
endif()
1320+
else()
1321+
message(FATAL_ERORR "Cannot request importing VS config, doesn't meet requirements!")
1322+
endif()
1323+
1324+
endfunction()

examples_tests

Submodule examples_tests updated 69 files

include/nbl/asset/ICPUDescriptorSetLayout.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class ICPUDescriptorSetLayout : public IDescriptorSetLayout<ICPUSampler>, public
2424
public:
2525
_NBL_STATIC_INLINE_CONSTEXPR uint32_t IMMUTABLE_SAMPLER_HIERARCHYLEVELS_BELOW = 1u;
2626

27-
ICPUDescriptorSetLayout(const SBinding* const _begin, const SBinding* const _end) : base_t({_begin,_end}) {}
27+
[[deprecated("Use contructor with std::span!")]] ICPUDescriptorSetLayout(const SBinding* const _begin, const SBinding* const _end) : base_t({_begin,_end}) {}
28+
ICPUDescriptorSetLayout(const std::span<const SBinding> bindings) : base_t(bindings) {}
2829

2930
core::smart_refctd_ptr<IAsset> clone(uint32_t _depth = ~0u) const override
3031
{

include/nbl/asset/ICPURenderpass.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
#ifndef _NBL_I_CPU_RENDERPASS_H_INCLUDED_
22
#define _NBL_I_CPU_RENDERPASS_H_INCLUDED_
33

4-
54
#include "nbl/asset/IAsset.h"
65
#include "nbl/asset/IRenderpass.h"
76

8-
97
namespace nbl::asset
108
{
119

@@ -17,7 +15,8 @@ class ICPURenderpass : public IRenderpass, public IAsset
1715
const SCreationParamValidationResult validation = validateCreationParams(_params);
1816
if (!validation)
1917
return nullptr;
20-
return core::smart_refctd_ptr<ICPURenderpass>(new ICPURenderpass(_params,validation), core::dont_grab);
18+
19+
return core::smart_refctd_ptr<ICPURenderpass>(new ICPURenderpass(_params, validation), core::dont_grab);
2120
}
2221

2322
inline core::smart_refctd_ptr<IAsset> clone(uint32_t _depth = ~0u) const override
@@ -42,7 +41,7 @@ class ICPURenderpass : public IRenderpass, public IAsset
4241
inline size_t getDependantCount() const override {return 0ull;}
4342

4443
protected:
45-
using IRenderpass::IRenderpass;
44+
inline ICPURenderpass(const SCreationParams& _params, const SCreationParamValidationResult& _validation) : IRenderpass(_params, _validation) {}
4645
inline ~ICPURenderpass() = default;
4746

4847
inline IAsset* getDependant_impl(const size_t ix) override {return nullptr;}

0 commit comments

Comments
 (0)