From e5da351b3bff6aebce6e872594def0472901cafe Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Wed, 22 Oct 2025 14:58:21 +0200 Subject: [PATCH 01/12] Resolved conflicts, cherry picked 9381491 --- cmake/common.cmake | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 645837aaaa..6c7722a41b 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1277,17 +1277,22 @@ namespace @IMPL_NAMESPACE@ { foreach(INDEX RANGE ${LAST_INDEX}) string(JSON INPUT GET "${IMPL_INPUTS}" ${INDEX} INPUT) string(JSON BASE_KEY GET "${IMPL_INPUTS}" ${INDEX} KEY) - string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS) - + set(COMPILE_OPTIONS "") - math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1") - foreach(COMP_IDX RANGE 0 ${LAST_CO}) - string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX}) - list(APPEND COMPILE_OPTIONS "${COMP_ITEM}") - endforeach() + string(JSON HAS_COMPILE_OPTIONS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS) + if(HAS_COMPILE_OPTIONS STREQUAL "ARRAY") + string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS) + if(NOT COMPILE_OPTIONS_LENGTH EQUAL 0) + math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1") + foreach(COMP_IDX RANGE 0 ${LAST_CO}) + string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX}) + list(APPEND COMPILE_OPTIONS "${COMP_ITEM}") + endforeach() + endif() + endif() set(DEPENDS_ON "") - string(JSON HAS_DEPENDS TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS) + string(JSON HAS_DEPENDS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS) if(HAS_DEPENDS STREQUAL "ARRAY") string(JSON DEPENDS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} DEPENDS) if(NOT DEPENDS_LENGTH EQUAL 0) @@ -1305,7 +1310,7 @@ namespace @IMPL_NAMESPACE@ { set(HAS_CAPS FALSE) set(CAPS_LENGTH 0) - string(JSON CAPS_TYPE TYPE "${IMPL_INPUTS}" ${INDEX} CAPS) + string(JSON CAPS_TYPE ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} CAPS) if(CAPS_TYPE STREQUAL "ARRAY") string(JSON CAPS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} CAPS) if(NOT CAPS_LENGTH EQUAL 0) From d7da234c506658675beac2e9049415f909201c26 Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Fri, 24 Oct 2025 13:34:58 +0200 Subject: [PATCH 02/12] Updated examples --- examples_tests | 2 +- include/nbl/builtin/hlsl/ieee754.hlsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples_tests b/examples_tests index 2b4db21239..f85ae8045c 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit 2b4db2123918f380cc0a35f6889315a02f84ea73 +Subproject commit f85ae8045c13380ace4c124d8a07349b4fd5fb62 diff --git a/include/nbl/builtin/hlsl/ieee754.hlsl b/include/nbl/builtin/hlsl/ieee754.hlsl index 6bdfcf2514..65db917883 100644 --- a/include/nbl/builtin/hlsl/ieee754.hlsl +++ b/include/nbl/builtin/hlsl/ieee754.hlsl @@ -159,7 +159,7 @@ struct flipSign_helper(asUint ^ spirv::select(AsUint(0ull), ieee754::traits::signMask, flip)); + return bit_cast(asUint ^ spirv::select(flip, ieee754::traits::signMask, AsUint(0ull))); #else return bit_cast(asUint ^ (flip ? ieee754::traits::signMask : AsUint(0ull))); #endif From 9e4c75ee1d7afcc3164aa8c680efe08058508249 Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Fri, 10 Oct 2025 09:33:03 +0200 Subject: [PATCH 03/12] cap kind args --- cmake/common.cmake | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 6c7722a41b..4bcbee1c4e 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1210,7 +1210,7 @@ struct DeviceConfigCaps get_target_property(HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE) if(NOT HEADER_RULE_GENERATED) - set(INCLUDE_DIR "$/${IMPL_TARGET}/.cmake/include") + set(INCLUDE_DIR "$/${IMPL_TARGET}/.cmake/include") set(INCLUDE_FILE "${INCLUDE_DIR}/$") set(INCLUDE_CONTENT $) @@ -1328,12 +1328,27 @@ namespace @IMPL_NAMESPACE@ { set(CAP_NAMES "") set(CAP_TYPES "") + set(CAP_KINDS "") if(HAS_CAPS) math(EXPR LAST_CAP "${CAPS_LENGTH} - 1") foreach(CAP_IDX RANGE 0 ${LAST_CAP}) + string(JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} kind) string(JSON CAP_NAME GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} name) string(JSON CAP_TYPE GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} type) + # -> TODO: improve validation, input should be string + if(CAP_TYPE_ERROR) + set(CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently) + else() + if(NOT CAP_KIND MATCHES "^(limits|features)$") + ERROR_WHILE_PARSING_ITEM( + "Invalid CAP kind \"${CAP_KIND}\" for ${CAP_NAME}\n" + "Allowed kinds are: limits, features" + ) + endif() + endif() + # <- + if(NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$") ERROR_WHILE_PARSING_ITEM( "Invalid CAP type \"${CAP_TYPE}\" for ${CAP_NAME}\n" @@ -1371,6 +1386,7 @@ namespace @IMPL_NAMESPACE@ { set(CAP_VALUES_${CAP_IDX} "${VALUES}") list(APPEND CAP_NAMES "${CAP_NAME}") list(APPEND CAP_TYPES "${CAP_TYPE}") + list(APPEND CAP_KINDS "${CAP_KIND}") endforeach() endif() @@ -1410,12 +1426,16 @@ namespace @IMPL_NAMESPACE@ { ]=]) unset(RETVAL_EVAL) - foreach(CAP ${CAP_NAMES}) + list(LENGTH CAP_NAMES CAP_COUNT) + math(EXPR CAP_COUNT "${CAP_COUNT} - 1") + foreach(i RANGE ${CAP_COUNT}) + list(GET CAP_NAMES ${i} CAP) + list(GET CAP_KINDS ${i} KIND) string(CONFIGURE [=[ - retval += ".@CAP@_" + std::to_string(limits.@CAP@); + retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@); ]=] RETVALUE_VIEW @ONLY) string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") - endforeach(CAP) + endforeach() string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY) set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}") @@ -1466,6 +1486,7 @@ namespace @IMPL_NAMESPACE@ { list(GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP) list(GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE) + list(GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND) set(VAR_NAME "CAP_VALUES_${CAP_INDEX}") set(VALUES "${${VAR_NAME}}") From 639e2d4d73ef8691591434f1388c2e07447cda8f Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Fri, 10 Oct 2025 10:23:00 +0200 Subject: [PATCH 04/12] fix a bug after my NSC rules update --- cmake/common.cmake | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 4bcbee1c4e..ab215a59e3 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1427,15 +1427,18 @@ namespace @IMPL_NAMESPACE@ { ]=]) unset(RETVAL_EVAL) list(LENGTH CAP_NAMES CAP_COUNT) - math(EXPR CAP_COUNT "${CAP_COUNT} - 1") - foreach(i RANGE ${CAP_COUNT}) - list(GET CAP_NAMES ${i} CAP) - list(GET CAP_KINDS ${i} KIND) - string(CONFIGURE [=[ + if(CAP_COUNT GREATER 0) + math(EXPR LAST_CAP "${CAP_COUNT} - 1") + foreach(i RANGE ${LAST_CAP}) + list(GET CAP_NAMES ${i} CAP) + list(GET CAP_KINDS ${i} KIND) + string(CONFIGURE [=[ retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@); -]=] RETVALUE_VIEW @ONLY) - string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") - endforeach() +]=] RETVALUE_VIEW @ONLY) + string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") + endforeach() + endif() + string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY) set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}") From baa6b4af6a3c37cf8937357625fb02fdabf10955 Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Fri, 10 Oct 2025 09:33:03 +0200 Subject: [PATCH 05/12] Resolved conflicts, cherry-picked e3129939c8253ec04525bdb726578cfe61b754ac --- cmake/common.cmake | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index ab215a59e3..4bcbee1c4e 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1427,18 +1427,15 @@ namespace @IMPL_NAMESPACE@ { ]=]) unset(RETVAL_EVAL) list(LENGTH CAP_NAMES CAP_COUNT) - if(CAP_COUNT GREATER 0) - math(EXPR LAST_CAP "${CAP_COUNT} - 1") - foreach(i RANGE ${LAST_CAP}) - list(GET CAP_NAMES ${i} CAP) - list(GET CAP_KINDS ${i} KIND) - string(CONFIGURE [=[ + math(EXPR CAP_COUNT "${CAP_COUNT} - 1") + foreach(i RANGE ${CAP_COUNT}) + list(GET CAP_NAMES ${i} CAP) + list(GET CAP_KINDS ${i} KIND) + string(CONFIGURE [=[ retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@); -]=] RETVALUE_VIEW @ONLY) - string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") - endforeach() - endif() - +]=] RETVALUE_VIEW @ONLY) + string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") + endforeach() string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY) set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}") From 0bd968e543e879c737bf264e446cbdd91976af38 Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Fri, 10 Oct 2025 10:23:00 +0200 Subject: [PATCH 06/12] fix a bug after my NSC rules update --- cmake/common.cmake | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 4bcbee1c4e..ab215a59e3 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1427,15 +1427,18 @@ namespace @IMPL_NAMESPACE@ { ]=]) unset(RETVAL_EVAL) list(LENGTH CAP_NAMES CAP_COUNT) - math(EXPR CAP_COUNT "${CAP_COUNT} - 1") - foreach(i RANGE ${CAP_COUNT}) - list(GET CAP_NAMES ${i} CAP) - list(GET CAP_KINDS ${i} KIND) - string(CONFIGURE [=[ + if(CAP_COUNT GREATER 0) + math(EXPR LAST_CAP "${CAP_COUNT} - 1") + foreach(i RANGE ${LAST_CAP}) + list(GET CAP_NAMES ${i} CAP) + list(GET CAP_KINDS ${i} KIND) + string(CONFIGURE [=[ retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@); -]=] RETVALUE_VIEW @ONLY) - string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") - endforeach() +]=] RETVALUE_VIEW @ONLY) + string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}") + endforeach() + endif() + string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY) set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}") From 0c57c4e2e6c3cbfa5d41c0079cacc82a191b2437 Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Wed, 22 Oct 2025 14:58:21 +0200 Subject: [PATCH 07/12] Resolved conflicts, cherry-picked 93814913e84eb86e4c625d9e32d83221c62965c9 From 15a91b4a584892a1115fb583402c5155a97ddafa Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Mon, 27 Oct 2025 15:52:36 +0100 Subject: [PATCH 08/12] Updated examples --- examples_tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples_tests b/examples_tests index f85ae8045c..22f2a17401 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit f85ae8045c13380ace4c124d8a07349b4fd5fb62 +Subproject commit 22f2a17401e8e70dddff477e11db12ebd1dea2bd From 33e742842f6b9fe9d23f101af63b647d00f4b6b2 Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Wed, 29 Oct 2025 17:12:05 +0100 Subject: [PATCH 09/12] Update examples --- examples_tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples_tests b/examples_tests index 22f2a17401..eb1e29f4d0 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit 22f2a17401e8e70dddff477e11db12ebd1dea2bd +Subproject commit eb1e29f4d071956d8397108680cb0256ec012b5b From b4ce8f6999c92d38a5fd0f4446c850fe239eebc2 Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Thu, 30 Oct 2025 18:37:37 +0100 Subject: [PATCH 10/12] Updated examples --- examples_tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples_tests b/examples_tests index eb1e29f4d0..e1e8dd6fb0 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit eb1e29f4d071956d8397108680cb0256ec012b5b +Subproject commit e1e8dd6fb0c46612defeea46c960a6b85f4b4155 From 265100c26324b88cbcac5727862c0b14cac84847 Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Fri, 5 Dec 2025 13:02:04 +0100 Subject: [PATCH 11/12] Extended NBL_CREATE_NSC_COMPILE_RULES function, now it creates precompiled shaders per build configuration --- cmake/common.cmake | 113 +++++++++++++++++++++++++++++---------------- examples_tests | 2 +- 2 files changed, 75 insertions(+), 40 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index ab215a59e3..010c7409dc 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1144,6 +1144,12 @@ define_property(TARGET PROPERTY NBL_MOUNT_POINT_DEFINES BRIEF_DOCS "List of preprocessor defines with mount points" ) +option(NSC_DEBUG_EDIF_FILE_BIT "Add \"-fspv-debug=file\" to NSC Debug CLI" ON) +option(NSC_DEBUG_EDIF_SOURCE_BIT "Add \"-fspv-debug=source\" to NSC Debug CLI" OFF) +option(NSC_DEBUG_EDIF_LINE_BIT "Add \"-fspv-debug=line\" to NSC Debug CLI" OFF) +option(NSC_DEBUG_EDIF_TOOL_BIT "Add \"-fspv-debug=tool\" to NSC Debug CLI" ON) +option(NSC_DEBUG_EDIF_NON_SEMANTIC_BIT "Add \"-fspv-debug=vulkan-with-source\" to NSC Debug CLI" OFF) + function(NBL_CREATE_NSC_COMPILE_RULES) set(COMMENT "this code has been autogenerated with Nabla CMake NBL_CREATE_HLSL_COMPILE_RULES utility") set(DEVICE_CONFIG_VIEW @@ -1178,9 +1184,34 @@ struct DeviceConfigCaps -enable-16bit-types -Zpr -spirv - -fspv-target-env=vulkan1.3 + -fspv-target-env=vulkan1.3 + -WShadow + -WConversion + $<$:-O0> + $<$:-O3> + $<$:-O3> ) + if(NSC_DEBUG_EDIF_FILE_BIT) + list(APPEND REQUIRED_OPTIONS $<$:-fspv-debug=file>) + endif() + + if(NSC_DEBUG_EDIF_SOURCE_BIT) + list(APPEND REQUIRED_OPTIONS $<$:-fspv-debug=source>) + endif() + + if(NSC_DEBUG_EDIF_LINE_BIT) + list(APPEND REQUIRED_OPTIONS $<$:-fspv-debug=line>) + endif() + + if(NSC_DEBUG_EDIF_TOOL_BIT) + list(APPEND REQUIRED_OPTIONS $<$:-fspv-debug=tool>) + endif() + + if(NSC_DEBUG_EDIF_NON_SEMANTIC_BIT) + list(APPEND REQUIRED_OPTIONS $<$:-fspv-debug=vulkan-with-source>) + endif() + if(NOT NBL_EMBED_BUILTIN_RESOURCES) list(APPEND REQUIRED_OPTIONS -I "${NBL_ROOT_PATH}/include" @@ -1210,12 +1241,12 @@ struct DeviceConfigCaps get_target_property(HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE) if(NOT HEADER_RULE_GENERATED) - set(INCLUDE_DIR "$/${IMPL_TARGET}/.cmake/include") + set(INCLUDE_DIR "$/${IMPL_TARGET}/.cmake/include/$") set(INCLUDE_FILE "${INCLUDE_DIR}/$") set(INCLUDE_CONTENT $) file(GENERATE OUTPUT ${INCLUDE_FILE} - CONTENT ${INCLUDE_CONTENT} + CONTENT $ TARGET ${IMPL_TARGET} ) @@ -1420,7 +1451,7 @@ namespace @IMPL_NAMESPACE@ { nbl::core::string retval = "@BASE_KEY@"; @RETVAL_EVAL@ retval += ".spv"; - return retval; + return "$/" + retval; } } @@ -1444,46 +1475,50 @@ namespace @IMPL_NAMESPACE@ { function(GENERATE_KEYS PREFIX CAP_INDEX CAPS_EVAL_PART) if(NUM_CAPS EQUAL 0 OR CAP_INDEX EQUAL ${NUM_CAPS}) + # generate .config file set(FINAL_KEY "${BASE_KEY}${PREFIX}.spv") # always add ext even if its already there to make sure asset loader always is able to load as IShader - - set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY}") - set(CONFIG_FILE "${TARGET_OUTPUT}.config") + set(CONFIG_FILE_TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY}") + set(CONFIG_FILE "${CONFIG_FILE_TARGET_OUTPUT}.config") set(CAPS_EVAL "${CAPS_EVAL_PART}") - string(CONFIGURE "${DEVICE_CONFIG_VIEW}" CONFIG_CONTENT @ONLY) file(WRITE "${CONFIG_FILE}" "${CONFIG_CONTENT}") - set(NBL_NSC_COMPILE_COMMAND - "$" - -Fc "${TARGET_OUTPUT}" - ${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS} - "${CONFIG_FILE}" - ) - - add_custom_command(OUTPUT "${TARGET_OUTPUT}" - COMMAND ${NBL_NSC_COMPILE_COMMAND} - DEPENDS ${DEPENDS_ON} - COMMENT "Creating \"${TARGET_OUTPUT}\"" - VERBATIM - COMMAND_EXPAND_LISTS - ) - - set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}") - target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE}) - - set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES - HEADER_FILE_ONLY ON - VS_TOOL_OVERRIDE None - ) - - set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES - NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}" - NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}" - NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}" - NBL_SPIRV_ACCESS_KEY "${FINAL_KEY}" - ) - - set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}") + # generate keys and commands for compiling shaders + foreach(BUILD_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES}) + set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${BUILD_CONFIGURATION}/${FINAL_KEY}") + + set(NBL_NSC_COMPILE_COMMAND + "$" + -Fc "${TARGET_OUTPUT}" + ${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS} + "${CONFIG_FILE}" + ) + + add_custom_command(OUTPUT "${TARGET_OUTPUT}" + COMMAND ${NBL_NSC_COMPILE_COMMAND} + DEPENDS ${DEPENDS_ON} + COMMENT "Creating \"${TARGET_OUTPUT}\"" + VERBATIM + COMMAND_EXPAND_LISTS + ) + + set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}") + target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE}) + + set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES + HEADER_FILE_ONLY ON + VS_TOOL_OVERRIDE None + ) + + set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES + NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}" + NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}" + NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}" + NBL_SPIRV_ACCESS_KEY "${FINAL_KEY}" + ) + + set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}") + endforeach() return() endif() diff --git a/examples_tests b/examples_tests index e1e8dd6fb0..eb7d4fe788 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit e1e8dd6fb0c46612defeea46c960a6b85f4b4155 +Subproject commit eb7d4fe788fb5e88b8b475c979586e050e202b00 From 87e2cff9efd25500101ba58479b1dfdf7a70c318 Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Fri, 12 Dec 2025 17:26:19 +0100 Subject: [PATCH 12/12] Fixed keys --- cmake/common.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 010c7409dc..c61c13714f 100755 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1485,7 +1485,8 @@ namespace @IMPL_NAMESPACE@ { # generate keys and commands for compiling shaders foreach(BUILD_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES}) - set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${BUILD_CONFIGURATION}/${FINAL_KEY}") + set(FINAL_KEY_REL_PATH "${BUILD_CONFIGURATION}/${FINAL_KEY}") + set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY_REL_PATH}") set(NBL_NSC_COMPILE_COMMAND "$" @@ -1514,7 +1515,7 @@ namespace @IMPL_NAMESPACE@ { NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}" NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}" NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}" - NBL_SPIRV_ACCESS_KEY "${FINAL_KEY}" + NBL_SPIRV_ACCESS_KEY "${FINAL_KEY_REL_PATH}" ) set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}")