Skip to content

Remove Matrices #760

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
wants to merge 465 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
465 commits
Select commit Hold shift + click to select a range
1edbc38
Merge remote-tracking branch 'origin/master' into bindless_blit
Nov 11, 2024
7ca1e7d
Merge branch 'master' into more_fft_utils
Fletterio Nov 11, 2024
51cbd88
@alichraghi small homework - read https://en.cppreference.com/w/cpp/l…
AnastaZIuk Nov 11, 2024
6c0b3cb
CVulkanSwapchain allow 2 more acquiresInFlight
Erfan-Ahmadi Nov 12, 2024
d37770f
fix and remove assumption that imageCount == acquiresInFlight
Erfan-Ahmadi Nov 12, 2024
997f6f3
looking in empty cache was borken
Nov 12, 2024
9a233c7
fix preload sizes
Nov 12, 2024
6796fa6
move acccessor concepts to their own folder and namespace
Nov 12, 2024
db70f9c
Merge remote-tracking branch 'origin/more_fft_utils' into bindless_blit
Nov 12, 2024
08f54ba
Merge pull request #778 from Devsh-Graphics-Programming/bindless_blit
devshgraphicsprogramming Nov 12, 2024
e2df09a
Merge branch 'master' into more_fft_utils
Fletterio Nov 12, 2024
60b3a8d
fix typo
keptsecret Nov 13, 2024
c5f2fcd
get to latest working example
keptsecret Nov 13, 2024
bd57c8f
Merge branch 'master' of github.com:Devsh-Graphics-Programming/Nabla …
AnastaZIuk Nov 13, 2024
8025337
add new spirv intrinsic unpack
keptsecret Nov 13, 2024
9f25ce5
make Nabla docker build "exec" based with git cache volume
AnastaZIuk Nov 13, 2024
dcc537e
More changes following Bloom PR review
Fletterio Nov 13, 2024
253ffaf
Lets commit entire git history into an image and update incrementally…
AnastaZIuk Nov 13, 2024
cfc8dc9
Saving work
Przemog1 Nov 13, 2024
5585e52
Resolved conflicts, merged master
Przemog1 Nov 13, 2024
93e983e
fix mapping index type with vk
keptsecret Nov 14, 2024
8d044aa
make the git cache work, put all into single compose file with small …
AnastaZIuk Nov 14, 2024
a06c270
ICPUBuffer v2.0
alichraghi Nov 13, 2024
f25b884
asset: several fixes
alichraghi Nov 14, 2024
3398802
asset: reference counted memory_resource
alichraghi Nov 14, 2024
eed29fa
more ICPUBuffer fixes
alichraghi Nov 14, 2024
cf9a866
asset: fix several bugs
alichraghi Nov 14, 2024
22630d0
Identity matrices refactor
Przemog1 Nov 14, 2024
09833d9
Fix build
deprilula28 Nov 14, 2024
eebc9fe
Merge pull request #783 from Devsh-Graphics-Programming/temp-fix-branch
devshgraphicsprogramming Nov 15, 2024
afe18dd
asset: pass correct arg to is_aligned
alichraghi Nov 15, 2024
80e94fb
latest ray query geom creator example
keptsecret Nov 15, 2024
8736be1
ray query geom creator initial complete
keptsecret Nov 15, 2024
2077fba
Merge branch 'master' into ray_query_geometry_creator_example
keptsecret Nov 15, 2024
971a1ed
Merge pull request #775 from Devsh-Graphics-Programming/ali_cbl
devshgraphicsprogramming Nov 15, 2024
82e89a5
Merge pull request #782 from Devsh-Graphics-Programming/ali_pmr3
devshgraphicsprogramming Nov 15, 2024
72f847d
post merge examples_tests pointer correction
Nov 15, 2024
22e86a7
fix for MSVC 17.12.0 regression in handling partial specs constrained…
Nov 16, 2024
6789fa7
use snorm unpack instead
keptsecret Nov 18, 2024
8f5f38e
Merge branch 'master' into ray_query_geometry_creator_example
keptsecret Nov 18, 2024
f36574a
added allocation flag check for device address
keptsecret Nov 18, 2024
932a258
fix IMGUI for new ICPUBuffer API
Nov 18, 2024
ec1db68
update imguizmo with its upstream
AnastaZIuk Nov 18, 2024
b9905c2
latest example and kept in UnpackUnorm4x8
keptsecret Nov 19, 2024
039734a
Merge branch 'master' into ray_query_geometry_creator_example
keptsecret Nov 19, 2024
b252d96
Merge branch 'master' into ngfx-sdk-integration
keptsecret Nov 19, 2024
69cd5d2
restructured integration
keptsecret Nov 19, 2024
65bbad8
Adds ternary op for complex numbers
Fletterio Nov 19, 2024
16d3261
Merge master
Fletterio Nov 19, 2024
13dd52d
Restore submodule pointer
Fletterio Nov 19, 2024
f1b65e9
VectorViewNullMemoryResource fix
Fletterio Nov 19, 2024
b31705d
Merge branch 'master' into more_fft_utils
Fletterio Nov 19, 2024
2617c16
Fixed templated functions
Przemog1 Nov 19, 2024
569cea2
Resolved conflicts, merged master
Przemog1 Nov 19, 2024
7100dac
add position fetch extension feature
keptsecret Nov 20, 2024
3a046cd
Merge remote-tracking branch 'origin/ray_query_geometry_creator_example'
Nov 20, 2024
38491b8
post merge examples_tests submodule pointer set
Nov 20, 2024
8e5ab1a
moved position fetch to limits
keptsecret Nov 20, 2024
b43d4df
spv functions outline
keptsecret Nov 20, 2024
639cf78
add 3rdparty/ngfx/ngfx.cmake capable of finding the NSight GFX SDK & …
AnastaZIuk Nov 20, 2024
048d093
integrate NGFX with Nabla build system, delay load the DLL on windows…
AnastaZIuk Nov 20, 2024
4f029c8
implemented ray query methods
keptsecret Nov 21, 2024
fedac62
some corrections to init
keptsecret Nov 21, 2024
390218a
Merge branch 'master' into ray_query_inline_spirv_example
keptsecret Nov 21, 2024
be03a55
ray query inline spirv working
keptsecret Nov 21, 2024
264dd69
fixed position fetch definition
keptsecret Nov 22, 2024
076128f
added new spirv intrinsic file to builtin
keptsecret Nov 22, 2024
87bf160
minor adjustments and example
keptsecret Nov 22, 2024
8562bcf
removed redundant constants
keptsecret Nov 22, 2024
1f174fe
latest example
keptsecret Nov 22, 2024
48d4440
fast-forward Vulkan-Headers, example
keptsecret Nov 22, 2024
e8f4dca
Merge pull request #788 from Devsh-Graphics-Programming/ray_query_inl…
devshgraphicsprogramming Nov 22, 2024
e618e58
Yet more utils, such as bitreversal
Fletterio Nov 23, 2024
8417652
Implemented nbl::hlsl::mul
Przemog1 Nov 26, 2024
4359f91
Fixed array_get and array_set
Przemog1 Nov 26, 2024
adb4262
Cherry picked matrix_traits.hlsl
Przemog1 Nov 28, 2024
6bcbe56
Extended nbl::hlsl::dot function so it can be used with emulated_vect…
Przemog1 Nov 28, 2024
25ede82
Saving work
Przemog1 Dec 1, 2024
3817408
Updated cmake lists
Przemog1 Dec 1, 2024
58d8929
Add functionality for nabla unpacking trades when doing FFT of packed…
Fletterio Dec 3, 2024
cd07b9b
Share complex types between cpp and hlsl, add mirror trade functional…
Fletterio Dec 3, 2024
ea31887
Also add fast mul by i,-i to cpp
Fletterio Dec 4, 2024
8e94bcc
Refactor
Przemog1 Dec 4, 2024
53541ff
Modify ternary operator in complex and add it as a functional struct …
Fletterio Dec 5, 2024
659f94e
Now every operation on emulated_float64_t flushes denorms to 0
Przemog1 Dec 5, 2024
373a013
Added glsl::findMSB
Przemog1 Dec 5, 2024
fdba8ce
Point at examples test master to merge Nabla master
Fletterio Dec 5, 2024
620e601
Merge branch 'master' into more_fft_utils
Fletterio Dec 5, 2024
600cac8
Saving work
Przemog1 Dec 6, 2024
971f28e
Resolved conflicts, merged master
Przemog1 Dec 6, 2024
4a16b5d
padDimensions and getOutputBufferSize rewritten so they can be shared…
Fletterio Dec 6, 2024
e61ab7a
Forgot what changed
Fletterio Dec 7, 2024
30a8c96
Improvements
Przemog1 Dec 7, 2024
20b4e3a
adds findLSB and findMSB from std.450 to glsl_compat.hlsl
Fletterio Dec 7, 2024
1d8c223
Fix #799
alichraghi Dec 9, 2024
4abf68c
Refactor
Przemog1 Dec 9, 2024
4b34124
Merge pull request #800 from Devsh-Graphics-Programming/ali_cache
devshgraphicsprogramming Dec 9, 2024
52dc613
Fix
Przemog1 Dec 9, 2024
9d00340
Merge branch 'master' of https://github.com/Devsh-Graphics-Programmin…
Przemog1 Dec 9, 2024
d42d7e1
Saving work
Przemog1 Dec 10, 2024
36baa31
Renamed intrinsics.h to intrinsics.hlsl
Przemog1 Dec 10, 2024
62490ee
Added vector_traits.hlsl
Przemog1 Dec 10, 2024
c1dff94
Added array_accessors.hlsl
Przemog1 Dec 10, 2024
9abf1de
Require concepts for Accessors for FFT
Fletterio Dec 10, 2024
f3ad5e8
Change submodule pointer so it's not changed by CMake
Fletterio Dec 10, 2024
975a7b7
Fixed accessor concepts for FFT
Fletterio Dec 11, 2024
2dc70c1
Merge branch 'master' into more_fft_utils
Fletterio Dec 11, 2024
83e0cbd
- Differentiate concepts for FFT based on ElementsPerInvocationLog2,
Fletterio Dec 11, 2024
0dbeb8f
Refactored intrinsics for C++ side
Przemog1 Dec 11, 2024
b3fba14
Added GLSL.std.450.hlsl
Przemog1 Dec 11, 2024
8c94b0c
Added some spirv intrinsics
Przemog1 Dec 11, 2024
59e388a
Fix
Przemog1 Dec 11, 2024
75bec97
Bug fix
Przemog1 Dec 11, 2024
2a7953e
Fully implemented intrinsics.hlsl
Przemog1 Dec 11, 2024
1412b01
Renamed some parameters so they better convey intent
Fletterio Dec 12, 2024
1f6daf1
Fix #798
Dec 12, 2024
5112ade
Merge remote-tracking branch 'remotes/origin/compute_ptr_2'
Dec 12, 2024
ca968cd
post merge `examples_tests` submodule set
Dec 12, 2024
3b9658b
Corrections
Przemog1 Dec 12, 2024
fc9b4d4
Added matrix_traits.hlsl
Przemog1 Dec 12, 2024
99b478b
Moved every GLSL.std.450 intrinsic spriv function from spriv_intrinsi…
Przemog1 Dec 12, 2024
39f5c4b
Resolved conflicts, merged cpp_compat_intrinsics_refactor
Przemog1 Dec 12, 2024
e0e1b8c
Fix
Przemog1 Dec 12, 2024
f278259
Resolved conflicts, merged cpp_compat_intrinsics_refactor
Przemog1 Dec 12, 2024
22ab085
Fixes
Przemog1 Dec 12, 2024
475c65a
Saving work
Przemog1 Dec 13, 2024
5a14fde
ICPUBuffer: remove size field from creation params
alichraghi Dec 13, 2024
aeaa1ce
ICPUBuffer: update remaining usages
alichraghi Dec 13, 2024
9cf08ea
ICPUBuffer: update remaining usages
alichraghi Dec 13, 2024
8e771d0
Some spirv intrinsic function will work with vectors now
Przemog1 Dec 13, 2024
2e151f6
Moved cpp_compat_intrinsics_impl to another file
Przemog1 Dec 13, 2024
3b72975
Comment change
Fletterio Dec 13, 2024
de58ac2
Update examples submodule pointer to latest
Fletterio Dec 13, 2024
6a22158
Update examples submodule pointer
Fletterio Dec 13, 2024
dc10958
Merge branch 'master' into more_fft_utils
Fletterio Dec 13, 2024
c8ac209
Merge remote-tracking branch 'origin' into ali_size
alichraghi Dec 15, 2024
18ec29a
ext::ImGui: Update to latest ICPUBuffer API
alichraghi Dec 15, 2024
e428f21
Merge pull request #802 from Devsh-Graphics-Programming/ali_size
devshgraphicsprogramming Dec 15, 2024
b700c8d
post merge submodule update
Dec 15, 2024
172748a
Corrections
Przemog1 Dec 16, 2024
b8e6d94
Created template findMSB and findLSB template specialization for ever…
Przemog1 Dec 16, 2024
889eabe
Resolved conflicts, merged master
Przemog1 Dec 16, 2024
f44c8d9
Merge branch 'master' into more_fft_utils
Fletterio Dec 17, 2024
c079825
Added findMSB and findLSB specialization for enum types
Przemog1 Dec 17, 2024
af6f0d6
Resolved conflicts, merged cpp_compat_intrinsics_refactor
Przemog1 Dec 17, 2024
46ff7c8
Fix
Przemog1 Dec 17, 2024
6abc6ce
Merge branch 'cpp_compat_intrinsics_refactor' of https://github.com/D…
Przemog1 Dec 17, 2024
7528d4e
Another fix
Przemog1 Dec 17, 2024
20bff2c
Merge branch 'cpp_compat_intrinsics_refactor' of https://github.com/D…
Przemog1 Dec 17, 2024
03c9042
Created transpose partial spec for emulated matrices
Przemog1 Dec 17, 2024
ce9ca3d
Merge pull request #801 from Devsh-Graphics-Programming/cpp_compat_in…
devshgraphicsprogramming Dec 18, 2024
279774c
Intrinsics.hlsl refactor
Przemog1 Dec 18, 2024
e9a5b8e
SharedMemAccessor concept update
Fletterio Dec 18, 2024
a933953
Merge master
Fletterio Dec 18, 2024
c7fb06f
use new preprocessor on MSVC
keptsecret Dec 19, 2024
78fe62a
update DXC submodule (new MSVC preprocessor support)
AnastaZIuk Dec 19, 2024
c7bdd2a
Merge pull request #805 from Devsh-Graphics-Programming/preprocessor_…
devshgraphicsprogramming Dec 19, 2024
36ecbe3
Fixed emulated_float64_t bug
Przemog1 Dec 19, 2024
b2c0537
Refactor
Przemog1 Dec 19, 2024
30aafb3
Fixed substraction of two inf values
Przemog1 Dec 19, 2024
e77d628
Merge branch 'master' of https://github.com/Devsh-Graphics-Programmin…
Przemog1 Dec 19, 2024
f726750
Updated examples
Przemog1 Dec 19, 2024
3359e34
- Make most of intutil shared, deprecate the versions that were in the.h
Fletterio Dec 20, 2024
18931dd
Roll back the GLSL bitreverse change, it was fine after all
Fletterio Dec 20, 2024
f6725ea
Change spirv intrinsic name, add it to cpp compat
Fletterio Dec 20, 2024
d1666d4
Merge branch 'master' into more_fft_utils
Fletterio Dec 20, 2024
9f0713c
Merge branch 'bitreverse_intrinsic' into more_fft_utils
Fletterio Dec 20, 2024
6f74919
Fix new intrinsic
Fletterio Dec 20, 2024
47f018a
Merge branch 'bitreverse_intrinsic' into more_fft_utils
Fletterio Dec 20, 2024
0e6e31a
Change fft bitReverse name, update examples pointer submodule
Fletterio Dec 20, 2024
2db1829
Refactored the bitReverse function
Przemog1 Dec 21, 2024
dbbe7c6
Merge pull request #806 from Devsh-Graphics-Programming/bitreverse_in…
Przemog1 Dec 21, 2024
c1c6b04
cmake: add missing builtin header
alichraghi Dec 21, 2024
f933b2a
Merge pull request #807 from Devsh-Graphics-Programming/ali_cmake_fix
devshgraphicsprogramming Dec 21, 2024
c544d05
update submodule pointer
Dec 22, 2024
f3c777e
Merge pull request #789 from Devsh-Graphics-Programming/ngfx-si-cmake
keptsecret Dec 26, 2024
64ad91a
Merge branch 'master' into ngfx-sdk-integration
keptsecret Dec 26, 2024
c4fd4bb
removed dot_product.hlsl from cmake and added intrinsics_impl.hlsl
Erfan-Ahmadi Dec 28, 2024
58ad120
update examples_tests
Erfan-Ahmadi Dec 28, 2024
b9ae9f8
removed FORCE_EMULATED_FLOAT64
Erfan-Ahmadi Dec 28, 2024
b925bde
update examples_tests
Erfan-Ahmadi Dec 28, 2024
099693e
Merge branch 'emulated_float64_t'
Erfan-Ahmadi Dec 28, 2024
01dcf66
Merge branch 'master' into ngfx-sdk-integration
Dec 30, 2024
12bbe91
refactor
Dec 30, 2024
2b3bdaa
Detect Nsight launching the app through an envvar, attempt to post-in…
Dec 31, 2024
c463fd7
Merge branch 'docker' of github.com:Devsh-Graphics-Programming/Nabla …
AnastaZIuk Jan 1, 2025
0cdd89a
fix NSC binary output write requests causing funny bugs with missing …
AnastaZIuk Jan 1, 2025
c5a5383
Ladies and gentlemen, we officially have a target that will launch a …
AnastaZIuk Jan 1, 2025
f88fa6c
Mount Vulkan Bin to CE godbolt container in bind:ro mode, make sure i…
AnastaZIuk Jan 2, 2025
815ceba
integrate compiler explorer with Nabla CMake build system, update doc…
AnastaZIuk Jan 2, 2025
c8762b5
improve cache runs, validate host exes
AnastaZIuk Jan 2, 2025
e40bff9
create tools/nsc/docker/README.md with instructions how to use it
AnastaZIuk Jan 2, 2025
47ee809
remove oldie stuff tests
AnastaZIuk Jan 2, 2025
76bf038
typo
AnastaZIuk Jan 2, 2025
cde3c03
Merge pull request #808 from Devsh-Graphics-Programming/CE
AnastaZIuk Jan 2, 2025
14dee8f
play with debug CRTs and make nsc_d work with CE containers
AnastaZIuk Jan 2, 2025
2f8c807
Refactor IApplicationFramework global init & update CSystemWin32 dela…
AnastaZIuk Jan 3, 2025
4bf3e18
introduce build info artifacts, create nablaBuildInfo.cmake & ce-gene…
AnastaZIuk Jan 4, 2025
8e95b81
remove old env & mark a todo
AnastaZIuk Jan 4, 2025
619915a
Update core.hlsl
devshgraphicsprogramming Jan 6, 2025
2eb0ffd
Merge master
Fletterio Jan 6, 2025
2b7d087
step towards CE registry
AnastaZIuk Jan 6, 2025
82b517b
forgot to commit one line
AnastaZIuk Jan 6, 2025
eedf04a
IApplicationFramework update
AnastaZIuk Jan 8, 2025
116f377
Updated NSC readme
YasInvolved Jan 8, 2025
7924071
Merge pull request #815 from Devsh-Graphics-Programming/yas_nsc_readm…
AnastaZIuk Jan 8, 2025
e77ae53
TextRendering.cpp small change + update examples
Erfan-Ahmadi Jan 9, 2025
04e7c26
update 3rdparty/dxc/dxc submodule
AnastaZIuk Jan 9, 2025
4b1926b
Update README.md
AnastaZIuk Jan 10, 2025
6401e53
Addressed PR review comments
Fletterio Jan 10, 2025
987a5de
Merge pull request #810 from Devsh-Graphics-Programming/bad_capabilit…
devshgraphicsprogramming Jan 13, 2025
fdb7904
Move some HLSL stuff to CPP-shared
Fletterio Jan 13, 2025
4463278
Merge branch 'master' into more_fft_utils
Fletterio Jan 13, 2025
6b8714d
Moved readme over
Fletterio Jan 14, 2025
d0ed313
Seeing iof this fixes Markdown issue in gh readme
Fletterio Jan 14, 2025
d4dc129
No line break sin latex math for gh readmes
Fletterio Jan 14, 2025
6edab6d
Even worse, no two $ math mode in latex readme
Fletterio Jan 14, 2025
036c7dd
Going insane at GH readme not parding this well
Fletterio Jan 14, 2025
e8f46dd
Fixed
Fletterio Jan 14, 2025
d7a9e13
don't compile HLSL `assert` without `NBL_DEBUG`
Jan 15, 2025
da80234
Merge remote-tracking branch 'remotes/origin/more_fft_utils'
Jan 16, 2025
0e4aef8
post merge submodule update
Jan 16, 2025
6fa23b1
change one thing in FFT Bloom
Jan 16, 2025
eee9904
Update accessor concepts
Fletterio Jan 17, 2025
83db408
move E_TEXTURE_CLAMP into hlsl headers
alichraghi Jan 17, 2025
19973ac
box_blur: move into here from example code
alichraghi Jan 18, 2025
5518e01
Address all PR comments
Fletterio Jan 20, 2025
0f8bcac
Merge pull request #818 from Devsh-Graphics-Programming/more_fft_utils
devshgraphicsprogramming Jan 21, 2025
2e52107
FFT readme update
Fletterio Jan 21, 2025
ae5dbad
Update examples submodule ptr
Fletterio Jan 21, 2025
d2adf17
prefix_sum_blur: address reviews
alichraghi Jan 22, 2025
2782d8d
FFT readme update and accessor concept change to remove memory barriers
Fletterio Jan 22, 2025
a46b9b0
FFT readme update
Fletterio Jan 22, 2025
b65dc7f
box_sampler: rework ETC_REPEAT
alichraghi Jan 23, 2025
6f74af2
box_sampler: simplify ETC_MIRROR
alichraghi Jan 24, 2025
75ffca1
blake3: add reset()
alichraghi Jan 24, 2025
43323a6
Merge pull request #822 from Devsh-Graphics-Programming/ali_blake_reset
AnastaZIuk Jan 24, 2025
b1f2827
box_sampler: update ETC_REPEAT
alichraghi Jan 24, 2025
45d97fd
Merge pull request #819 from Devsh-Graphics-Programming/ali_blur3
devshgraphicsprogramming Jan 24, 2025
bacb479
post Prefix Sum Bloom merge submodule update
Jan 24, 2025
f4b2626
Update submodule pointer
Fletterio Jan 25, 2025
1e05ae4
video: update profiles
alichraghi Jan 30, 2025
68ca358
video: remove bad report and exclude android from core profile
alichraghi Jan 31, 2025
4786926
Merge pull request #824 from Devsh-Graphics-Programming/ali_profiles
devshgraphicsprogramming Jan 31, 2025
eac5159
Fix false positive aspect mask error raising
Crisspl Feb 2, 2025
72bd107
Merge pull request #826 from Crisspl/quick-fix
devshgraphicsprogramming Feb 2, 2025
25ef700
cmake: no longer dies when NBL_SANITIZE_ADDRESS is ON
alichraghi Feb 5, 2025
d8e5751
video: free command buffers when destroyed
alichraghi Feb 5, 2025
8b67720
Merge pull request #830 from Devsh-Graphics-Programming/ali_cmd
devshgraphicsprogramming Feb 5, 2025
4a894fe
Resolved conflicts, merged master
Przemog1 Feb 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,6 @@
[submodule "3rdparty/libdeflate"]
path = 3rdparty/libdeflate
url = git@github.com:Devsh-Graphics-Programming/libdeflate.git
[submodule "docker/compiler-explorer"]
path = docker/compiler-explorer
url = git@github.com:Devsh-Graphics-Programming/Compiler-Explorer-Docker.git
28 changes: 16 additions & 12 deletions 3rdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ set(_OLD_SKIP_INSTALL_ALL ${SKIP_INSTALL_ALL})
set(BUILD_SHARED_LIBS OFF)
set(SKIP_INSTALL_ALL ON)

add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/zconf.h.included")
execute_process(COMMAND "${CMAKE_COMMAND}" -E rename zconf.h.included zconf.h
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib"
Expand Down Expand Up @@ -161,11 +161,6 @@ target_include_directories(SPIRV PUBLIC "${GLSLANG_GENERATED_INCLUDEDIR}")
set(SHADERC_SKIP_TESTS ON CACHE INTERNAL "Skip shaderc tests?")
set(SHADERC_SKIP_INSTALL ON CACHE INTERNAL "Install shaderc?")

# if it doesn't work without the `touch` on Linux, then fetch the latest submodule head of shaderc and try again
# https://github.com/google/shaderc/issues/568
if (UNIX)
file(WRITE ${THIRD_PARTY_SOURCE_DIR}/shaderc/libshaderc/libshaderc_combined.a "")
endif()
add_subdirectory(shaderc shaderc EXCLUDE_FROM_ALL)

# libjpeg-turbo
Expand Down Expand Up @@ -235,6 +230,7 @@ if(_NBL_COMPILE_WITH_OPEN_EXR_)
set(BUILD_TESTING ${_OLD_BUILD_TESTING})
endif()


#gli
option(_NBL_COMPILE_WITH_GLI_ "Build with GLI library" ON)
if(_NBL_COMPILE_WITH_GLI_)
Expand Down Expand Up @@ -295,6 +291,9 @@ NBL_ADD_GIT_TRACKING_META_LIBRARY(nabla "${NBL_ROOT_PATH}")
NBL_ADD_GIT_TRACKING_META_LIBRARY(dxc "${CMAKE_CURRENT_SOURCE_DIR}/dxc/dxc")
NBL_GENERATE_GIT_TRACKING_META()

# NGFX
include(ngfx/ngfx.cmake)

if(NBL_BUILD_IMGUI)
set(NBL_IMGUI_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/imgui")
set(NBL_IMGUI_TEST_ENGINE_PROJECT_ROOT "${THIRD_PARTY_SOURCE_DIR}/imgui_test_engine")
Expand Down Expand Up @@ -382,8 +381,17 @@ if(NBL_BUILD_IMGUI)

target_link_libraries(imtestengine PUBLIC imtestsuite)

set(IMGUIZMO_BUILD_EXAMPLE OFF)
add_subdirectory(imguizmo EXCLUDE_FROM_ALL)
# imguizmo
add_library(imguizmo
"${CMAKE_CURRENT_SOURCE_DIR}/imguizmo/GraphEditor.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/imguizmo/ImCurveEdit.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/imguizmo/ImGradient.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/imguizmo/ImGuizmo.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/imguizmo/ImSequencer.cpp"
)

target_include_directories(imguizmo PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/imguizmo>)
target_link_libraries(imguizmo PUBLIC imgui)

# note we override imgui config with our own
set(NBL_IMGUI_USER_CONFIG_FILEPATH "${NBL_IMGUI_ROOT}/nabla_imconfig.h")
Expand Down Expand Up @@ -461,7 +469,6 @@ set(NBL_3RDPARTY_TARGETS
simdjson
nlohmann_json
glslang
OGLCompiler
OSDependent
MachineIndependent
GenericCodeGen
Expand All @@ -487,9 +494,6 @@ endif()
if (NBL_BUILD_IMGUI)
list(APPEND NBL_3RDPARTY_TARGETS imgui implot imtestsuite imtestengine imguizmo)
endif()
if(ENABLE_HLSL)
list(APPEND NBL_3RDPARTY_TARGETS HLSL)
endif()

foreach(trgt IN LISTS NBL_3RDPARTY_TARGETS)
if(NBL_DYNAMIC_MSVC_RUNTIME)
Expand Down
2 changes: 1 addition & 1 deletion 3rdparty/Vulkan-Headers
Submodule Vulkan-Headers updated 84 files
+0 −34 .cmake-format.py
+8 −0 .gitattributes
+26 −6 .github/ISSUE_TEMPLATE/bug_report.md
+12 −0 .github/dependabot.yml
+18 −0 .github/pull_request_template.md
+41 −0 .github/workflows/ci.yml
+8 −0 .gitignore
+15 −0 .reuse/dep5
+24 −16 BUILD.gn
+25 −253 BUILD.md
+59 −45 CMakeLists.txt
+10 −0 CODE_OF_CONDUCT.adoc
+0 −1 CODE_OF_CONDUCT.md
+40 −0 CONTRIBUTING.md
+18 −0 LICENSE.md
+0 −0 LICENSES/Apache-2.0.txt
+9 −0 LICENSES/MIT.txt
+43 −69 README.md
+11 −0 SECURITY.md
+0 −126 cmake/Copyright_cmake.txt
+0 −21 cmake/cmake_uninstall.cmake.in
+392 −0 include/vk_video/vulkan_video_codec_av1std.h
+109 −0 include/vk_video/vulkan_video_codec_av1std_decode.h
+44 −37 include/vk_video/vulkan_video_codec_h264std.h
+10 −36 include/vk_video/vulkan_video_codec_h264std_decode.h
+46 −31 include/vk_video/vulkan_video_codec_h264std_encode.h
+144 −55 include/vk_video/vulkan_video_codec_h265std.h
+9 −8 include/vk_video/vulkan_video_codec_h265std_decode.h
+55 −33 include/vk_video/vulkan_video_codec_h265std_encode.h
+6 −1 include/vk_video/vulkan_video_codecs_common.h
+23 −24 include/vulkan/vk_icd.h
+6 −27 include/vulkan/vk_layer.h
+1 −1 include/vulkan/vk_platform.h
+0 −69 include/vulkan/vk_sdk_platform.h
+4,829 −0 include/vulkan/vulkan.cppm
+9 −2 include/vulkan/vulkan.h
+8,290 −2,170 include/vulkan/vulkan.hpp
+29 −1 include/vulkan/vulkan_android.h
+149 −927 include/vulkan/vulkan_beta.h
+8,784 −3,963 include/vulkan/vulkan_core.h
+2 −1 include/vulkan/vulkan_directfb.h
+3,970 −12,349 include/vulkan/vulkan_enums.hpp
+2,988 −0 include/vulkan/vulkan_extension_inspection.hpp
+955 −619 include/vulkan/vulkan_format_traits.hpp
+5 −1 include/vulkan/vulkan_fuchsia.h
+12,401 −5,833 include/vulkan/vulkan_funcs.hpp
+3 −1 include/vulkan/vulkan_ggp.h
+6,285 −3,644 include/vulkan/vulkan_handles.hpp
+4,375 −836 include/vulkan/vulkan_hash.hpp
+297 −0 include/vulkan/vulkan_hpp_macros.hpp
+2 −1 include/vulkan/vulkan_ios.h
+2 −1 include/vulkan/vulkan_macos.h
+3 −1 include/vulkan/vulkan_metal.h
+14,024 −8,387 include/vulkan/vulkan_raii.hpp
+55 −1 include/vulkan/vulkan_screen.h
+1,087 −0 include/vulkan/vulkan_shared.hpp
+7,487 −0 include/vulkan/vulkan_static_assertions.hpp
+69,709 −45,738 include/vulkan/vulkan_structs.hpp
+9,075 −0 include/vulkan/vulkan_to_string.hpp
+2 −1 include/vulkan/vulkan_vi.h
+3,716 −0 include/vulkan/vulkan_video.hpp
+2 −1 include/vulkan/vulkan_wayland.h
+28 −1 include/vulkan/vulkan_win32.h
+2 −1 include/vulkan/vulkan_xcb.h
+2 −1 include/vulkan/vulkan_xlib.h
+2 −1 include/vulkan/vulkan_xlib_xrandr.h
+12 −2 registry/apiconventions.py
+110 −21 registry/cgenerator.py
+208 −45 registry/generator.py
+0 −818 registry/genvk.py
+403 −0 registry/parse_dependency.py
+390 −0 registry/profiles/VP_KHR_roadmap.json
+275 −179 registry/reg.py
+195 −17 registry/spec_tools/conventions.py
+2 −3 registry/spec_tools/util.py
+42 −0 registry/stripAPI.py
+81,089 −29,259 registry/validusage.json
+802 −210 registry/video.xml
+11,061 −5,452 registry/vk.xml
+58 −24 registry/vkconventions.py
+33 −0 tests/CMakeLists.txt
+73 −0 tests/integration/CMakeLists.txt
+14 −0 tests/vk_icd.c
+14 −0 tests/vk_layer.c
3 changes: 3 additions & 0 deletions 3rdparty/dxc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
option(NBL_LLVM_ENABLE_ASSERTIONS "LLVM_ENABLE_ASSERTIONS" ON)

list(APPEND NBL_DXC_CMAKE_OPTIONS "-DLLVM_ENABLE_ASSERTIONS:BOOL=${NBL_LLVM_ENABLE_ASSERTIONS}")
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_OPTIONAL_PROJS_IN_DEFAULT:BOOL=OFF")
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_ENABLE_ANALYZE:BOOL=OFF")
list(APPEND NBL_DXC_CMAKE_OPTIONS "-DHLSL_OFFICIAL_BUILD:BOOL=OFF")
Expand Down
2 changes: 1 addition & 1 deletion 3rdparty/dxc/dxc
Submodule dxc updated 247 files
2 changes: 1 addition & 1 deletion 3rdparty/glslang
68 changes: 68 additions & 0 deletions 3rdparty/ngfx/ngfx.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
option(NBL_BUILD_WITH_NGFX "Enable NGFX build" OFF)

# NOTE: on windows default installation path is:
# "C:/Program Files/NVIDIA Corporation/Nsight Graphics <version>/SDKs/NsightGraphicsSDK" <- define as "NGFX_SDK" environment variable
# then you can pick SDK version with "NGFX_SDK_VERSION" cache variable (CMake GUI list supported)

if(NBL_BUILD_WITH_NGFX)
if(NOT DEFINED NGFX_SDK)
if(NOT DEFINED ENV{NGFX_SDK})
message(FATAL_ERROR "\"NGFX_SDK\" environment variable must be defined to build with NBL_BUILD_WITH_NGFX enabled!")
endif()
set(NGFX_SDK "$ENV{NGFX_SDK}")
endif()
cmake_path(NORMAL_PATH NGFX_SDK OUTPUT_VARIABLE NGFX_SDK)

if(NOT EXISTS "${NGFX_SDK}")
message(FATAL_ERROR "Found \"NGFX_SDK\" environment variable but it is invalid, env:NGFX_SDK=\"${NGFX_SDK}\" doesn't exist!")
endif()

file(GLOB ENTRIES "${NGFX_SDK}/*")

set(NGFX_VERSIONS "")
foreach(ENTRY ${ENTRIES})
if(IS_DIRECTORY ${ENTRY})
list(APPEND NGFX_VERSIONS ${ENTRY})
endif()
endforeach()

if(NOT NGFX_VERSIONS)
message(FATAL_ERROR "Could not find any NGFX SDK Version!")
endif()

list(TRANSFORM NGFX_VERSIONS REPLACE "${NGFX_SDK}/" "")
list(SORT NGFX_VERSIONS)
list(GET NGFX_VERSIONS -1 LATEST_NGFX_VERSION)

# on the cache variable init pick the latest version, then let user pick from list
set(NGFX_SDK_VERSION "${LATEST_NGFX_VERSION}" CACHE STRING "NGFX SDK Version")
set_property(CACHE NGFX_SDK_VERSION PROPERTY STRINGS ${NGFX_VERSIONS})

set(NGFX_SDK_VERSION "$CACHE{NGFX_SDK_VERSION}")
set(NGFX_SDK_BASE "${NGFX_SDK}/${NGFX_SDK_VERSION}")

# TODO: wanna support more *host* platforms? (*)
# NOTE: also I'm hardcoding windows x64 library requests till I know the answer for (*)
find_file(NBL_NGFX_INJECTION_HEADER NGFX_Injection.h PATHS ${NGFX_SDK_BASE}/include)
find_file(NBL_NGFX_INJECTION_DLL NGFX_Injection.dll PATHS ${NGFX_SDK_BASE}/lib/x64)
find_file(NBL_NGFX_INJECTION_IMPORT_LIBRARY NGFX_Injection.lib PATHS ${NGFX_SDK_BASE}/lib/x64)

if(NBL_NGFX_INJECTION_HEADER AND NBL_NGFX_INJECTION_DLL AND NBL_NGFX_INJECTION_IMPORT_LIBRARY)
message(STATUS "Enabled build with NVIDIA Nsight Graphics SDK ${NGFX_SDK_VERSION}\nlocated in: \"${NGFX_SDK_BASE}\"")
else()
message(STATUS "Could not enable build with NVIDIA Nsight Graphics SDK ${NGFX_SDK_VERSION} - invalid components!")
message(STATUS "Located in: \"${NGFX_SDK_BASE}\"")
message(STATUS "NBL_NGFX_INJECTION_HEADER=\"${NBL_NGFX_INJECTION_HEADER}\"")
message(STATUS "NBL_NGFX_INJECTION_DLL=\"${NBL_NGFX_INJECTION_DLL}\"")
message(STATUS "NBL_NGFX_INJECTION_IMPORT_LIBRARY=\"${NBL_NGFX_INJECTION_IMPORT_LIBRARY}\"")
message(FATAL_ERROR "You installation may be corupted, please fix it and re-run CMake or disable NBL_BUILD_WITH_NGFX!")
endif()

add_library(ngfx INTERFACE)
target_sources(ngfx INTERFACE "${NBL_NGFX_INJECTION_HEADER}")
target_include_directories(ngfx INTERFACE "${NGFX_SDK_BASE}/include")
target_link_libraries(ngfx INTERFACE "${NBL_NGFX_INJECTION_IMPORT_LIBRARY}")
target_link_options(ngfx INTERFACE "/DELAYLOAD:NGFX_Injection.dll")
target_compile_definitions(ngfx INTERFACE NGFX_INJECTION_DLL_DIR="${NGFX_SDK_BASE}/lib/x64")
target_compile_definitions(ngfx INTERFACE NGFX_VERSION="${NGFX_SDK_VERSION}")
endif()
2 changes: 1 addition & 1 deletion 3rdparty/shaderc
Submodule shaderc updated 76 files
+66 −0 .github/workflows/autoroll.yml
+2 −0 .gitignore
+20 −30 Android.mk
+113 −2 CHANGES
+13 −17 CMakeLists.txt
+11 −6 DEPS
+15 −33 README.md
+3 −1 android_test/jni/Application.mk
+1 −75 cmake/setup_build.cmake
+4 −45 cmake/utils.cmake
+3 −3 downloads.md
+3 −2 glslc/CMakeLists.txt
+13 −0 glslc/README.asciidoc
+15 −1 glslc/src/main.cc
+3 −3 glslc/test/CMakeLists.txt
+1 −1 glslc/test/assembly.py
+1 −1 glslc/test/expect.py
+11 −11 glslc/test/line.py
+17 −17 glslc/test/option_dash_D.py
+20 −20 glslc/test/option_dash_E.py
+2 −2 glslc/test/option_dash_M.py
+94 −68 glslc/test/option_dash_cap_O.py
+1 −1 glslc/test/option_dash_o.py
+7 −5 glslc/test/option_fauto_bind_uniforms.py
+46 −0 glslc/test/option_fhlsl_16bit_types.py
+243 −1 glslc/test/option_flimit.py
+70 −0 glslc/test/option_fpreserve_bindings.py
+16 −16 glslc/test/option_fresource_set_binding.py
+1 −1 glslc/test/option_mfmt.py
+10 −0 glslc/test/option_target_env.py
+27 −1 glslc/test/parameter_tests.py
+60 −0 kokoro/android-release/build-docker.sh
+23 −44 kokoro/android-release/build.sh
+0 −0 kokoro/android-release/build_arm.sh
+0 −0 kokoro/android-release/build_x86.sh
+4 −3 kokoro/linux/build-docker.sh
+0 −16 kokoro/linux/continuous_gcc_coverage.cfg
+1 −1 kokoro/linux/presubmit_mingw_release.cfg
+2 −2 kokoro/macos/build.sh
+71 −0 kokoro/ndk-build/build-docker.sh
+32 −40 kokoro/ndk-build/build.sh
+5 −8 kokoro/windows/build.bat
+2 −2 kokoro/windows/build_debug_2019.bat
+0 −24 kokoro/windows/build_release_2015.bat
+2 −3 kokoro/windows/build_release_2019.bat
+2 −2 kokoro/windows/continuous_debug_2019.cfg
+0 −22 kokoro/windows/continuous_release_2015.cfg
+2 −2 kokoro/windows/continuous_release_2019.cfg
+2 −2 kokoro/windows/presubmit_debug_2019.cfg
+0 −16 kokoro/windows/presubmit_release_2015.cfg
+2 −2 kokoro/windows/presubmit_release_2019.cfg
+2 −2 libshaderc/Android.mk
+3 −15 libshaderc/CMakeLists.txt
+2 −5 libshaderc/README.md
+1 −0 libshaderc/include/shaderc/env.h
+34 −0 libshaderc/include/shaderc/shaderc.h
+19 −1 libshaderc/include/shaderc/shaderc.hpp
+3 −3 libshaderc/src/common_shaders_for_test.h
+21 −0 libshaderc/src/shaderc.cc
+4 −3 libshaderc/src/shaderc_cpp_test.cc
+2 −2 libshaderc/src/shaderc_test.cc
+2 −2 libshaderc_util/Android.mk
+1 −1 libshaderc_util/CMakeLists.txt
+27 −0 libshaderc_util/include/libshaderc_util/compiler.h
+36 −0 libshaderc_util/include/libshaderc_util/resources.inc
+1 −0 libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h
+1 −1 libshaderc_util/include/libshaderc_util/string_piece.h
+40 −5 libshaderc_util/src/compiler.cc
+25 −1 libshaderc_util/src/compiler_test.cc
+9 −0 libshaderc_util/src/resources.cc
+14 −4 libshaderc_util/src/spirv_tools_wrapper.cc
+24 −1 third_party/CMakeLists.txt
+1 −1 utils/add_copyright.py
+1 −1 utils/remove-file-by-suffix.py
+24 −20 utils/roll-deps
+2 −2 utils/update_build_version.py
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ enable_language(C CXX ASM ASM_NASM)

if(MSVC)
enable_language(ASM_MASM)
link_libraries(delayimp)
endif()

option(NBL_STATIC_BUILD "" OFF) # ON for static builds, OFF for shared
Expand Down Expand Up @@ -222,4 +223,4 @@ add_subdirectory(artifacts)
option(NBL_CPACK_INCLUDE_EXAMPLES "CPack with examples and media" ON)
include(cpack/package)

export(TARGETS ${_NBL_3RDPARTY_TARGETS_} Nabla NAMESPACE Nabla:: APPEND FILE ${NBL_ROOT_PATH_BINARY}/NablaExport.cmake)
export(TARGETS ${_NBL_3RDPARTY_TARGETS_} Nabla NAMESPACE Nabla:: APPEND FILE ${NBL_ROOT_PATH_BINARY}/NablaExport.cmake)
39 changes: 39 additions & 0 deletions cmake/FindNabla.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Define NBL_CONFIG_ROOT_DIRECTORY
# variable to help the module find
# Nabla package

if(NOT DEFINED CMAKE_CONFIGURATION_TYPES)
set(CMAKE_CONFIGURATION_TYPES Release;RelWithDebInfo;Debug)
endif()

if(NOT DEFINED NBL_PACKAGE_STATIC) # turn ON NBL_PACKAGE_STATIC to look for package with STATIC library type, turn off to look for DYNAMIC
if(${NBL_STATIC_BUILD}) # internal, if called with Nabla's build system it will get detected autoamtically
set(NBL_PACKAGE_STATIC ON)
else()
message(FATAL_ERROR "NBL_PACKAGE_STATIC must be defined!")
endif()
endif()

if(NBL_PACKAGE_STATIC)
set(NBL_LIBRARY_TYPE static)
else()
set(NBL_LIBRARY_TYPE dynamic)
endif()

foreach(X IN LISTS CMAKE_CONFIGURATION_TYPES)
if(NOT "${X}" STREQUAL "")
string(TOLOWER "nabla-${NBL_LIBRARY_TYPE}-${X}" _NBL_TARGET_PACKAGE_)

if(DEFINED NBL_CONFIG_ROOT_DIRECTORY)
file(GLOB_RECURSE _NBL_G_CONFIG_ROOT_DIRECTORY_ "${NBL_CONFIG_ROOT_DIRECTORY}/*/${_NBL_TARGET_PACKAGE_}Config.cmake")
cmake_path(GET _NBL_G_CONFIG_ROOT_DIRECTORY_ PARENT_PATH _NBL_G_CONFIG_ROOT_DIRECTORY_)
else()
unset(_NBL_G_CONFIG_ROOT_DIRECTORY_)
endif()

find_package(${_NBL_TARGET_PACKAGE_} QUIET
GLOBAL
PATHS ${_NBL_G_CONFIG_ROOT_DIRECTORY_}
)
endif()
endforeach()
2 changes: 1 addition & 1 deletion cmake/adjust/flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,6 @@ function(nbl_adjust_flags)
list(APPEND _D_NBL_COMPILE_OPTIONS_ $<$<CONFIG:${NBL_MAP_CONFIGURATION_FROM}>:${NBL_TO_CONFIG_COMPILE_OPTIONS}>)
endforeach()

set_directory_properties(PROPERTIES COMPILE_OPTIONS ${_D_NBL_COMPILE_OPTIONS_})
set_directory_properties(PROPERTIES COMPILE_OPTIONS "${_D_NBL_COMPILE_OPTIONS_}")
endif()
endfunction()
2 changes: 2 additions & 0 deletions cmake/adjust/template/windows/msvc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ if(NBL_REQUEST_SSE_AXV2)
NBL_REQUEST_COMPILE_OPTION_SUPPORT("/arch:AVX2")
endif()

NBL_REQUEST_COMPILE_OPTION_SUPPORT(/Zc:preprocessor)

# Debug
set(NBL_C_DEBUG_COMPILE_OPTIONS
/Ob0 /Od /MP${_NBL_JOBS_AMOUNT_} /fp:fast /Zc:wchar_t /INCREMENTAL
Expand Down
6 changes: 4 additions & 2 deletions cmake/common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ function(nbl_handle_dll_definitions _TARGET_ _SCOPE_)
set(_NABLA_OUTPUT_DIR_ "${NBL_ROOT_PATH_BINARY}/src/nbl/$<CONFIG>/devshgraphicsprogramming.nabla")

target_compile_definitions(${_TARGET_} ${_SCOPE_}
_NABLA_DLL_NAME_="$<TARGET_FILE_NAME:Nabla>";_NABLA_OUTPUT_DIR_="${_NABLA_OUTPUT_DIR_}";_NABLA_INSTALL_DIR_="${CMAKE_INSTALL_PREFIX}"
)
_NABLA_DLL_NAME_="$<PATH:REMOVE_EXTENSION,$<TARGET_FILE_NAME:Nabla>>";_NABLA_OUTPUT_DIR_="${_NABLA_OUTPUT_DIR_}"
)
endif()

target_compile_definitions(${_TARGET_} ${_SCOPE_}
Expand Down Expand Up @@ -252,6 +252,8 @@ macro(nbl_create_executable_project _EXTRA_SOURCES _EXTRA_OPTIONS _EXTRA_INCLUDE
target_compile_definitions(${EXECUTABLE_NAME}
PRIVATE "-DNBL_CPACK_PACKAGE_NABLA_DLL_DIR=\"${_NBL_NABLA_PACKAGE_RUNTIME_DLL_DIR_PATH_REL_TO_TARGET_}\""
PRIVATE "-DNBL_CPACK_PACKAGE_DXC_DLL_DIR=\"${_NBL_DXC_PACKAGE_RUNTIME_DLL_DIR_PATH_REL_TO_TARGET_}\""
PRIVATE "-DNBL_CPACK_PACKAGE_NABLA_DLL_DIR_ABS_KEY=\"${_NBL_NABLA_PACKAGE_RUNTIME_DLL_DIR_PATH_}\""
PRIVATE "-DNBL_CPACK_PACKAGE_DXC_DLL_DIR_ABS_KEY=\"${_NBL_DXC_PACKAGE_RUNTIME_DLL_DIR_PATH_}\""
)
endif()

Expand Down
6 changes: 6 additions & 0 deletions cmake/cpack/find/compoment/template.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
list(TRANSFORM @_NBL_PROXY_@ PREPEND "${CMAKE_CURRENT_LIST_DIR}/")

set(@_NBL_COMPOMENT_D_@ "${CMAKE_CURRENT_LIST_DIR}/@_NBL_COMPOMENT_D_V_@")

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(@_NBL_PACKAGE_@ DEFAULT_MSG @_NBL_PROXY_@ @_NBL_COMPOMENT_D_@)
15 changes: 15 additions & 0 deletions cmake/cpack/find/config/template.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
find_package(@_NBL_PACKAGE_@
REQUIRED
CONFIG
GLOBAL
PATHS "${CMAKE_CURRENT_LIST_DIR}/compoment"
NO_DEFAULT_PATH
NO_PACKAGE_ROOT_PATH
NO_CMAKE_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_PACKAGE_REGISTRY
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_INSTALL_PREFIX
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)
3 changes: 3 additions & 0 deletions cmake/cpack/find/licence/template.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Copyright (C) 2018-2025 - DevSH Graphics Programming Sp. z O.O.
# This file is part of the "Nabla Engine".
# For conditions of distribution and use, see copyright notice in nabla.h
97 changes: 97 additions & 0 deletions cmake/cpack/find/nabla.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
function(NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL _COMPOMENT_ _SPATH_)
string(APPEND NBL_FIND_NABLA_IMPL "set(_COMPOMENT_ ${_COMPOMENT_})\nset(_SPATH_ ${_SPATH_})\nset(NBL_ROOT_PATH ${NBL_ROOT_PATH})\nset(NBL_STATIC_BUILD ${NBL_STATIC_BUILD})\n\n")
string(APPEND NBL_FIND_NABLA_IMPL
[=[
if(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Dd][Ee][Bb][Uu][Gg])$")
set(NBL_CONFIG_PREFIX_PATH debug)
elseif(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$")
set(NBL_CONFIG_PREFIX_PATH relwithdebinfo)
elseif(CMAKE_INSTALL_CONFIG_NAME MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$")
unset(NBL_CONFIG_PREFIX_PATH)
else()
message(FATAL_ERROR "Internal error, requested \"${CMAKE_INSTALL_CONFIG_NAME}\" configuration is invalid!")
endif()

string(TOUPPER "${_COMPOMENT_}" _Cu_)
string(TOLOWER "${_COMPOMENT_}" _Cl_)

string(TOUPPER "${_SPATH_}" _Su_)
string(TOLOWER "${_SPATH_}" _Sl_)

string(TOUPPER "${CMAKE_INSTALL_CONFIG_NAME}" _NBL_CONFIG_)
string(TOLOWER "${CMAKE_INSTALL_CONFIG_NAME}" _NBL_CONFIG_L_)

if(NBL_STATIC_BUILD)
set(NBL_LIBRARY_TYPE STATIC)
else()
set(NBL_LIBRARY_TYPE DYNAMIC)
endif()

string(TOUPPER "${NBL_LIBRARY_TYPE}" _LTu_)
string(TOLOWER "${NBL_LIBRARY_TYPE}" _LTl_)

set(_NBL_PACKAGE_ nabla-${_Cl_}-${_LTl_}-${_NBL_CONFIG_L_})
set(_NBL_COMPLETE_P_CONFIG_ nabla-${_LTl_}-${_NBL_CONFIG_L_})

set(NBL_CMAKE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${NBL_CONFIG_PREFIX_PATH}/cmake")
set(NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY "${NBL_CMAKE_OUTPUT_DIRECTORY}/compoment")

string(REPLACE "${CMAKE_INSTALL_PREFIX}" "" NBL_CMAKE_INSTALL_MANIFEST_CONTENT "${CMAKE_INSTALL_MANIFEST_FILES}")
list(REMOVE_DUPLICATES NBL_CMAKE_INSTALL_MANIFEST_CONTENT)

set(_NBL_PREFIX_ "${CMAKE_INSTALL_PREFIX}/${NBL_CONFIG_PREFIX_PATH}")

set(NBL_CMAKE_COMPOMENT_OUTPUT_FILE "${NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY}/${_NBL_PACKAGE_}Config.cmake")
set(NBL_CMAKE_CONFIG_OUTPUT_FILE "${NBL_CMAKE_OUTPUT_DIRECTORY}/${_NBL_COMPLETE_P_CONFIG_}Config.cmake")

cmake_path(RELATIVE_PATH CMAKE_INSTALL_PREFIX BASE_DIRECTORY "${NBL_CMAKE_COMPOMENT_OUTPUT_DIRECTORY}" OUTPUT_VARIABLE _NBL_REL_TO_PREFIX_)

set(_NBL_PROXY_ NABLA_INSTALL_${_Cu_}_${_LTu_}_${_NBL_CONFIG_})
set(_NBL_COMPOMENT_D_ "NABLA_INSTALL_${_Cu_}_DIRECTORY_${_LTu_}_${_NBL_CONFIG_}")
set(_NBL_COMPOMENT_D_V_ "${_NBL_REL_TO_PREFIX_}")

foreach(_MANIFEST_INSTALL_REL_FILE_ IN LISTS NBL_CMAKE_INSTALL_MANIFEST_CONTENT)
string(FIND "${_MANIFEST_INSTALL_REL_FILE_}" "/${_SPATH_}/" _NBL_FOUND_)

if(NOT "${_NBL_FOUND_}" STREQUAL "-1")
set(_X_ "${_NBL_REL_TO_PREFIX_}/${_MANIFEST_INSTALL_REL_FILE_}")
cmake_path(NORMAL_PATH _X_ OUTPUT_VARIABLE _X_)

list(APPEND ${_NBL_PROXY_} "${_X_}")
endif()
endforeach()

string(APPEND NBL_MANIFEST_IMPL "set(${_NBL_PROXY_}\n\t${${_NBL_PROXY_}}\n)")
string(REPLACE ";" "\n\t" NBL_MANIFEST_IMPL "${NBL_MANIFEST_IMPL}")
string(CONFIGURE "${NBL_MANIFEST_IMPL}" NBL_MANIFEST_IMPL_CONF)
file(WRITE "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}" "${NBL_MANIFEST_IMPL_CONF}")

# the reason behind this weird looking thing is you cannot nest bracket arguments https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#bracket-argument
# some variables need evaluation but some not and must be literals, to make this code read-able & work we do a small workaround

# Compoment
configure_file("${NBL_ROOT_PATH}/cmake/cpack/find/compoment/template.cmake" "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp" @ONLY)
file(READ "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp" _NBL_COMPOMENT_INCLUDE_LIST_TRANFORM_)
file(REMOVE "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}.tmp")
file(APPEND "${NBL_CMAKE_COMPOMENT_OUTPUT_FILE}" "\n${_NBL_COMPOMENT_INCLUDE_LIST_TRANFORM_}")

# Config
if(NOT EXISTS "${NBL_CMAKE_CONFIG_OUTPUT_FILE}")
file(READ "${NBL_ROOT_PATH}/cmake/cpack/find/licence/template.cmake" _NBL_LICENCE_)
file(APPEND "${NBL_CMAKE_CONFIG_OUTPUT_FILE}" "${_NBL_LICENCE_}")
endif()

configure_file("${NBL_ROOT_PATH}/cmake/cpack/find/config/template.cmake" "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp" @ONLY)
file(READ "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp" _NBL_CONFIG_FILE_CONTENT_)
file(REMOVE "${NBL_CMAKE_CONFIG_OUTPUT_FILE}.tmp")
file(APPEND "${NBL_CMAKE_CONFIG_OUTPUT_FILE}" "\n\n${_NBL_CONFIG_FILE_CONTENT_}")
]=]
)

install(CODE "${NBL_FIND_NABLA_IMPL}" COMPONENT ${_COMPOMENT_})
endfunction()

# Generate compoment configurations
NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Headers include)
NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Libraries lib)
NBL_GEN_FIND_NABLA_COMPONENT_CODE_IMPL(Runtimes runtime)
Loading