Skip to content

Commit 22f2a17

Browse files
committed
Fixed project creation of multiple examples
1 parent f85ae80 commit 22f2a17

File tree

16 files changed

+298
-186
lines changed

16 files changed

+298
-186
lines changed

05_StreamingAndBufferDeviceAddressApp/CMakeLists.txt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ set(DEPENDS
3131
target_sources(${EXECUTABLE_NAME} PRIVATE ${DEPENDS})
3232
set_source_files_properties(${DEPENDS} PROPERTIES HEADER_FILE_ONLY ON)
3333

34+
set(SM 6_8)
3435
set(JSON [=[
3536
[
3637
{
@@ -48,23 +49,22 @@ set(COMPILE_OPTIONS
4849
)
4950

5051
NBL_CREATE_NSC_COMPILE_RULES(
51-
TARGET ${EXECUTABLE_NAME}SPIRV
52-
LINK_TO ${EXECUTABLE_NAME}
53-
DEPENDS ${DEPENDS}
54-
BINARY_DIR ${OUTPUT_DIRECTORY}
55-
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
56-
COMMON_OPTIONS -I ${CMAKE_CURRENT_SOURCE_DIR}
57-
OUTPUT_VAR KEYS
58-
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
59-
NAMESPACE nbl::this_example::builtin::build
60-
INPUTS ${JSON}
52+
TARGET ${EXECUTABLE_NAME}SPIRV
53+
LINK_TO ${EXECUTABLE_NAME}
54+
DEPENDS ${DEPENDS}
55+
BINARY_DIR ${OUTPUT_DIRECTORY}
56+
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
57+
COMMON_OPTIONS ${COMPILE_OPTIONS}
58+
OUTPUT_VAR KEYS
59+
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
60+
NAMESPACE nbl::this_example::builtin::build
61+
INPUTS ${JSON}
6162
)
6263

6364
NBL_CREATE_RESOURCE_ARCHIVE(
64-
NAMESPACE nbl::this_example::builtin::build
65-
TARGET ${EXECUTABLE_NAME}_builtinsBuild
66-
LINK_TO ${EXECUTABLE_NAME}
67-
BIND ${OUTPUT_DIRECTORY}
68-
BUILTINS ${KEYS}
69-
COMMON_OPTIONS ${COMPILE_OPTIONS}
65+
NAMESPACE nbl::this_example::builtin::build
66+
TARGET ${EXECUTABLE_NAME}_builtinsBuild
67+
LINK_TO ${EXECUTABLE_NAME}
68+
BIND ${OUTPUT_DIRECTORY}
69+
BUILTINS ${KEYS}
7070
)

07_StagingAndMultipleQueues/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ set(DEPENDS
3131
target_sources(${EXECUTABLE_NAME} PRIVATE ${DEPENDS})
3232
set_source_files_properties(${DEPENDS} PROPERTIES HEADER_FILE_ONLY ON)
3333

34+
set(SM 6_8)
3435
set(JSON [=[
3536
[
3637
{
@@ -53,7 +54,7 @@ NBL_CREATE_NSC_COMPILE_RULES(
5354
DEPENDS ${DEPENDS}
5455
BINARY_DIR ${OUTPUT_DIRECTORY}
5556
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
56-
COMMON_OPTIONS -I ${CMAKE_CURRENT_SOURCE_DIR}
57+
COMMON_OPTIONS ${COMPILE_OPTIONS}
5758
OUTPUT_VAR KEYS
5859
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
5960
NAMESPACE nbl::this_example::builtin::build
@@ -66,5 +67,4 @@ NBL_CREATE_RESOURCE_ARCHIVE(
6667
LINK_TO ${EXECUTABLE_NAME}
6768
BIND ${OUTPUT_DIRECTORY}
6869
BUILTINS ${KEYS}
69-
COMMON_OPTIONS ${COMPILE_OPTIONS}
7070
)

07_StagingAndMultipleQueues/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ class StagingAndMultipleQueuesApp final : public application_templates::BasicMul
280280
}
281281

282282
// LOAD SHADER FROM FILE
283-
smart_refctd_ptr<IShader> shader = loadPreCompiledShader<"comp_shader">("../app_resources/comp_shader.hlsl");
283+
smart_refctd_ptr<IShader> shader = loadPreCompiledShader<"comp_shader">(); // "../app_resources/comp_shader.hlsl"
284284

285285
if (!shader)
286286
logFailAndTerminate("Could not load the precompiled shader!");
@@ -544,7 +544,7 @@ class StagingAndMultipleQueuesApp final : public application_templates::BasicMul
544544
}
545545

546546
template<core::StringLiteral ShaderKey>
547-
core::smart_refctd_ptr<IShader> loadPreCompiledShader(const std::string& path)
547+
core::smart_refctd_ptr<IShader> loadPreCompiledShader()
548548
{
549549
IAssetLoader::SAssetLoadParams lp;
550550
lp.logger = m_logger.get();

11_FFT/CMakeLists.txt

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,50 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
2121
ADD_CUSTOM_BUILTIN_RESOURCES(${_BR_TARGET_} RESOURCES_TO_EMBED "${_SEARCH_DIRECTORIES_}" "${RESOURCE_DIR}" "nbl::this_example::builtin" "${_OUTPUT_DIRECTORY_HEADER_}" "${_OUTPUT_DIRECTORY_SOURCE_}")
2222

2323
LINK_BUILTIN_RESOURCES_TO_TARGET(${EXECUTABLE_NAME} ${_BR_TARGET_})
24-
endif()
24+
endif()
25+
26+
set(OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/auto-gen")
27+
set(DEPENDS
28+
app_resources/common.hlsl
29+
app_resources/shader.comp.hlsl
30+
)
31+
target_sources(${EXECUTABLE_NAME} PRIVATE ${DEPENDS})
32+
set_source_files_properties(${DEPENDS} PROPERTIES HEADER_FILE_ONLY ON)
33+
34+
set(SM 6_8)
35+
set(JSON [=[
36+
[
37+
{
38+
"INPUT": "app_resources/shader.comp.hlsl",
39+
"KEY": "shader",
40+
}
41+
]
42+
]=])
43+
string(CONFIGURE "${JSON}" JSON)
44+
45+
set(COMPILE_OPTIONS
46+
-I "${CMAKE_CURRENT_SOURCE_DIR}"
47+
-O3
48+
-T lib_${SM}
49+
)
50+
51+
NBL_CREATE_NSC_COMPILE_RULES(
52+
TARGET ${EXECUTABLE_NAME}SPIRV
53+
LINK_TO ${EXECUTABLE_NAME}
54+
DEPENDS ${DEPENDS}
55+
BINARY_DIR ${OUTPUT_DIRECTORY}
56+
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
57+
COMMON_OPTIONS ${COMPILE_OPTIONS}
58+
OUTPUT_VAR KEYS
59+
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
60+
NAMESPACE nbl::this_example::builtin::build
61+
INPUTS ${JSON}
62+
)
63+
64+
NBL_CREATE_RESOURCE_ARCHIVE(
65+
NAMESPACE nbl::this_example::builtin::build
66+
TARGET ${EXECUTABLE_NAME}_builtinsBuild
67+
LINK_TO ${EXECUTABLE_NAME}
68+
BIND ${OUTPUT_DIRECTORY}
69+
BUILTINS ${KEYS}
70+
)

11_FFT/main.cpp

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// This file is part of the "Nabla Engine".
33
// For conditions of distribution and use, see copyright notice in nabla.h
44

5+
#include "nbl/this_example/builtin/build/spirv/keys.hpp"
6+
57
#include "nbl/examples/examples.hpp"
68

79
using namespace nbl;
@@ -44,15 +46,6 @@ class FFT_Test final : public application_templates::MonoDeviceApplication, publ
4446
smart_refctd_ptr<ISemaphore> m_timeline;
4547
uint64_t semaphorValue = 0;
4648

47-
inline core::smart_refctd_ptr<asset::IShader> createShader(
48-
const char* includeMainName)
49-
{
50-
std::string prelude = "#include \"";
51-
auto hlslShader = core::make_smart_refctd_ptr<IShader>((prelude + includeMainName + "\"\n").c_str(), IShader::E_CONTENT_TYPE::ECT_HLSL, includeMainName);
52-
assert(hlslShader);
53-
return m_device->compileShader({ hlslShader.get() });
54-
}
55-
5649
public:
5750
// Yay thanks to multiple inheritance we cannot forward ctors anymore
5851
FFT_Test(const path& _localInputCWD, const path& _localOutputCWD, const path& _sharedInputCWD, const path& _sharedOutputCWD) :
@@ -67,28 +60,23 @@ class FFT_Test final : public application_templates::MonoDeviceApplication, publ
6760
if (!asset_base_t::onAppInitialized(std::move(system)))
6861
return false;
6962

70-
// this time we load a shader directly from a file
7163
smart_refctd_ptr<IShader> shader;
72-
/* {
64+
{
7365
IAssetLoader::SAssetLoadParams lp = {};
7466
lp.logger = m_logger.get();
75-
lp.workingDirectory = ""; // virtual root
76-
auto assetBundle = m_assetMgr->getAsset("app_resources/shader.comp.hlsl", lp);
67+
lp.workingDirectory = "app_resources"; // virtual root
68+
auto key = nbl::this_example::builtin::build::get_spirv_key<"shader">(m_device.get());
69+
auto assetBundle = m_assetMgr->getAsset(key.data(), lp);
7770
const auto assets = assetBundle.getContents();
7871
if (assets.empty())
7972
return logFail("Could not load shader!");
8073

8174
// Cast down the asset to its proper type
82-
auto source = IAsset::castDown<IShader>(assets[0]);
83-
// The down-cast should not fail!
84-
assert(source);
85-
86-
// Compile directly to SPIR-V Shader
87-
shader = m_device->compileShader({ source.get() });
75+
shader = IAsset::castDown<IShader>(assets[0]);
76+
8877
if (!shader)
89-
return logFail("Creation of a SPIR-V Shader from HLSL Shader source failed!");
90-
}*/
91-
shader = createShader("app_resources/shader.comp.hlsl");
78+
return logFail("Invalid shader!");
79+
}
9280

9381
// Create massive upload/download buffers
9482
constexpr uint32_t DownstreamBufferSize = sizeof(scalar_t) << 23;

24_ColorSpaceTest/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ set(DEPENDS
4242
target_sources(${EXECUTABLE_NAME} PRIVATE ${DEPENDS})
4343
set_source_files_properties(${DEPENDS} PROPERTIES HEADER_FILE_ONLY ON)
4444

45+
set(SM 6_8)
4546
set(JSON [=[
4647
[
4748
{
@@ -64,7 +65,7 @@ NBL_CREATE_NSC_COMPILE_RULES(
6465
DEPENDS ${DEPENDS}
6566
BINARY_DIR ${OUTPUT_DIRECTORY}
6667
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
67-
COMMON_OPTIONS -I ${CMAKE_CURRENT_SOURCE_DIR}
68+
COMMON_OPTIONS ${COMPILE_OPTIONS}
6869
OUTPUT_VAR KEYS
6970
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
7071
NAMESPACE nbl::this_example::builtin::build
@@ -77,5 +78,4 @@ NBL_CREATE_RESOURCE_ARCHIVE(
7778
LINK_TO ${EXECUTABLE_NAME}
7879
BIND ${OUTPUT_DIRECTORY}
7980
BUILTINS ${KEYS}
80-
COMMON_OPTIONS ${COMPILE_OPTIONS}
8181
)

24_ColorSpaceTest/main.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -161,22 +161,22 @@ class ColorSpaceTestSampleApp final : public SimpleWindowedApplication, public B
161161
return logFail("Failed to create Full Screen Triangle protopipeline or load its vertex shader!");
162162

163163
// Load Custom Shader
164-
auto loadPrecompiledShader = [&]<core::StringLiteral ShaderKey>(const std::string& relPath) -> smart_refctd_ptr<IShader>
165-
{
166-
IAssetLoader::SAssetLoadParams lp = {};
167-
lp.logger = m_logger.get();
168-
lp.workingDirectory = "app_resources";
169-
170-
auto key = nbl::this_example::builtin::build::get_spirv_key<ShaderKey>(m_device.get());
171-
auto assetBundle = m_assetMgr->getAsset(key.data(), lp);
172-
const auto assets = assetBundle.getContents();
173-
if (assets.empty())
174-
return nullptr;
164+
auto loadPrecompiledShader = [&]<core::StringLiteral ShaderKey>() -> smart_refctd_ptr<IShader>
165+
{
166+
IAssetLoader::SAssetLoadParams lp = {};
167+
lp.logger = m_logger.get();
168+
lp.workingDirectory = "app_resources";
169+
170+
auto key = nbl::this_example::builtin::build::get_spirv_key<ShaderKey>(m_device.get());
171+
auto assetBundle = m_assetMgr->getAsset(key.data(), lp);
172+
const auto assets = assetBundle.getContents();
173+
if (assets.empty())
174+
return nullptr;
175175

176-
auto shader = IAsset::castDown<IShader>(assets[0]);
177-
return shader;
178-
};
179-
auto fragmentShader = loadPrecompiledShader.operator()<"present">("app_resources/present.frag.hlsl");
176+
auto shader = IAsset::castDown<IShader>(assets[0]);
177+
return shader;
178+
};
179+
auto fragmentShader = loadPrecompiledShader.operator()<"present">(); // "app_resources/present.frag.hlsl"
180180
if (!fragmentShader)
181181
return logFail("Failed to load precompiled fragment shader!");
182182

62_CAD/CMakeLists.txt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,45 +76,48 @@ set(DEPENDS
7676
shaders/main_pipeline/resolve_alphas.hlsl
7777
shaders/main_pipeline/vertex_shader.hlsl
7878
)
79+
target_sources(${EXECUTABLE_NAME} PRIVATE ${DEPENDS})
80+
set_source_files_properties(${DEPENDS} PROPERTIES HEADER_FILE_ONLY ON)
7981

8082
set(SM 6_8)
81-
8283
set(REQUIRED_CAPS [=[
83-
{
84-
"kind": "features",
85-
"name": "fragmentShaderPixelInterlock",
86-
"type": "bool",
87-
"values": [1]
88-
}
84+
{
85+
"kind": "features",
86+
"name": "fragmentShaderPixelInterlock",
87+
"type": "bool",
88+
"values": [1]
89+
}
8990
]=])
9091

9192
set(JSON [=[
9293
[
9394
{
9495
"INPUT": "shaders/main_pipeline/vertex_shader.hlsl",
9596
"KEY": "main_pipeline_vertex_shader",
96-
"COMPILE_OPTIONS": ["-T", "cs_6_8"],
97-
"DEPENDS": [],
9897
"CAPS": [${REQUIRED_CAPS}]
9998
},
10099
{
101100
"INPUT": "shaders/main_pipeline/fragment.hlsl",
102101
"KEY": "main_pipeline_fragment_shader",
103-
"COMPILE_OPTIONS": ["-T", "cs_6_8"],
104-
"DEPENDS": [],
105102
"CAPS": [${REQUIRED_CAPS}]
106103
}
107104
]
108105
]=])
109106
string(CONFIGURE "${JSON}" JSON)
110107

108+
set(COMPILE_OPTIONS
109+
-I "${CMAKE_CURRENT_SOURCE_DIR}"
110+
-O3
111+
-T lib_${SM}
112+
)
113+
111114
NBL_CREATE_NSC_COMPILE_RULES(
112115
TARGET ${EXECUTABLE_NAME}SPIRV
113116
LINK_TO ${EXECUTABLE_NAME}
114117
DEPENDS ${DEPENDS}
115118
BINARY_DIR ${OUTPUT_DIRECTORY}
116119
MOUNT_POINT_DEFINE NBL_THIS_EXAMPLE_BUILD_MOUNT_POINT
117-
COMMON_OPTIONS -I ${CMAKE_CURRENT_SOURCE_DIR}
120+
COMMON_OPTIONS ${COMPILE_OPTIONS}
118121
OUTPUT_VAR KEYS
119122
INCLUDE nbl/this_example/builtin/build/spirv/keys.hpp
120123
NAMESPACE nbl::this_example::builtin::build

62_CAD/main.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -961,28 +961,28 @@ class ComputerAidedDesign final : public nbl::examples::SimpleWindowedApplicatio
961961
}
962962

963963
// Load Custom Shader
964-
auto loadCompileShader = [&]<core::StringLiteral ShaderKey>(const std::string& relPath) -> smart_refctd_ptr<IShader>
965-
{
966-
IAssetLoader::SAssetLoadParams lp = {};
967-
lp.logger = m_logger.get();
968-
lp.workingDirectory = "shaders";
969-
970-
auto key = nbl::this_example::builtin::build::get_spirv_key<ShaderKey>(m_device.get());
971-
auto assetBundle = m_assetMgr->getAsset(key.data(), lp);
972-
const auto assets = assetBundle.getContents();
973-
if (assets.empty())
974-
return nullptr;
975-
976-
// lets go straight from ICPUSpecializedShader to IGPUSpecializedShader
977-
auto source = IAsset::castDown<IShader>(assets[0]);
978-
if (!source)
979-
return nullptr;
980-
981-
return m_device->compileShader( ILogicalDevice::SShaderCreationParameters { .source = source.get(), .readCache = shaderReadCache.get(), .writeCache = shaderWriteCache.get(), .stage = IShader::E_SHADER_STAGE::ESS_ALL_OR_LIBRARY });
982-
};
964+
auto loadPrecompiledShader = [&]<core::StringLiteral ShaderKey>() -> smart_refctd_ptr<IShader>
965+
{
966+
IAssetLoader::SAssetLoadParams lp = {};
967+
lp.logger = m_logger.get();
968+
lp.workingDirectory = "shaders";
969+
970+
auto key = nbl::this_example::builtin::build::get_spirv_key<ShaderKey>(m_device.get());
971+
auto assetBundle = m_assetMgr->getAsset(key.data(), lp);
972+
const auto assets = assetBundle.getContents();
973+
if (assets.empty())
974+
{
975+
m_logger->log("Failed to load a precompiled ahsder.", ILogger::ELL_ERROR);
976+
return nullptr;
977+
}
978+
979+
980+
auto shader = IAsset::castDown<IShader>(assets[0]);
981+
return shader;
982+
};
983983

984-
mainPipelineFragmentShaders = loadCompileShader.operator()<"main_pipeline_fragment_shader">("../shaders/main_pipeline/fragment.hlsl");
985-
mainPipelineVertexShader = loadCompileShader.operator() <"main_pipeline_vertex_shader"> ("../shaders/main_pipeline/vertex_shader.hlsl");
984+
mainPipelineFragmentShaders = loadPrecompiledShader.operator()<"main_pipeline_fragment_shader">(); // "../shaders/main_pipeline/fragment.hlsl"
985+
mainPipelineVertexShader = loadPrecompiledShader.operator() <"main_pipeline_vertex_shader">(); // "../shaders/main_pipeline/vertex_shader.hlsl"
986986

987987
core::smart_refctd_ptr<system::IFile> shaderWriteCacheFile;
988988
{

0 commit comments

Comments
 (0)