1
+ nbl_create_executable_project ("" "" "" "" "${NBL_EXECUTABLE_PROJECT_CREATION_PCH_TARGET} " )
2
+
3
+ # shaders IO directories
4
+ set (NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /shaders" )
5
+ get_filename_component (_THIS_EXAMPLE_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_ "${CMAKE_CURRENT_BINARY_DIR} /shaders/include" ABSOLUTE )
6
+ get_filename_component (_THIS_EXAMPLE_SPIRV_BR_OUTPUT_DIRECTORY_HEADER_ "${CMAKE_CURRENT_BINARY_DIR} /builtin/include" ABSOLUTE )
7
+ get_filename_component (_THIS_EXAMPLE_SPIRV_BR_OUTPUT_DIRECTORY_SOURCE_ "${CMAKE_CURRENT_BINARY_DIR} /builtin/src" ABSOLUTE )
8
+ set (NBL_THIS_EXAMPLE_OUTPUT_SPIRV_DIRECTORY "${_THIS_EXAMPLE_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_} /nbl/gizmo/spirv" )
9
+
10
+ # list of input source shaders
11
+ set (NBL_THIS_EXAMPLE_INPUT_SHADERS
12
+ "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY} /vertex.hlsl"
13
+ "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY} /fragment.hlsl"
14
+ )
15
+
16
+ set (NBL_THIS_EXAMPLE_INPUT_COMMONS
17
+ "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY} /common.hlsl"
18
+ )
19
+
20
+ include ("${NBL_ROOT_PATH} /src/nbl/builtin/utils.cmake" )
21
+
22
+ foreach (NBL_INPUT_SHADER IN LISTS NBL_THIS_EXAMPLE_INPUT_SHADERS )
23
+ cmake_path (GET NBL_INPUT_SHADER STEM NBL_SHADER_STEM )
24
+ set (NBL_OUTPUT_SPIRV_FILENAME "${NBL_SHADER_STEM} .spv" )
25
+ set (NBL_OUTPUT_SPIRV_PATH "${NBL_THIS_EXAMPLE_OUTPUT_SPIRV_DIRECTORY} /${NBL_OUTPUT_SPIRV_FILENAME} " )
26
+
27
+ if (NBL_SHADER_STEM STREQUAL vertex )
28
+ set (NBL_NSC_COMPILE_OPTIONS -T vs_6_7 -E VSMain )
29
+ elseif (NBL_SHADER_STEM STREQUAL fragment )
30
+ set (NBL_NSC_COMPILE_OPTIONS -T ps_6_7 -E PSMain )
31
+ else ()
32
+ message (FATAL_ERROR "internal error" )
33
+ endif ()
34
+
35
+ set (NBL_NSC_COMPILE_COMMAND
36
+ "$<TARGET_FILE:nsc>"
37
+ -Fc "${NBL_OUTPUT_SPIRV_PATH} "
38
+ ${NBL_NSC_COMPILE_OPTIONS} # this should come from shader's [#pragma WAVE <compile options>] but our NSC doesn't seem to work properly currently
39
+ "${NBL_INPUT_SHADER} "
40
+ )
41
+
42
+ set (NBL_DEPENDS
43
+ "${NBL_INPUT_SHADER} "
44
+ ${NBL_THIS_EXAMPLE_INPUT_COMMONS}
45
+ )
46
+
47
+ add_custom_command (OUTPUT "${NBL_OUTPUT_SPIRV_PATH} "
48
+ COMMAND ${NBL_NSC_COMPILE_COMMAND}
49
+ DEPENDS ${NBL_DEPENDS}
50
+ WORKING_DIRECTORY "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY} "
51
+ COMMENT "Generating \" ${NBL_OUTPUT_SPIRV_PATH} \" "
52
+ VERBATIM
53
+ COMMAND_EXPAND_LISTS
54
+ )
55
+
56
+ list (APPEND NBL_THIS_EXAMPLE_OUTPUT_SPIRV_BUILTINS "${NBL_OUTPUT_SPIRV_PATH} " )
57
+ LIST_BUILTIN_RESOURCE (IMGUI_EXT_SPIRV_RESOURCES_TO_EMBED "gizmo/spirv/${NBL_OUTPUT_SPIRV_FILENAME} " )
58
+ endforeach ()
59
+
60
+ ADD_CUSTOM_BUILTIN_RESOURCES (extGizmoSpirvBuiltinResourceData IMGUI_EXT_SPIRV_RESOURCES_TO_EMBED "${_THIS_EXAMPLE_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_} " "nbl" "this_example::spirv::builtin" "${_THIS_EXAMPLE_SPIRV_BR_OUTPUT_DIRECTORY_HEADER_} " "${_THIS_EXAMPLE_SPIRV_BR_OUTPUT_DIRECTORY_SOURCE_} " "STATIC" "INTERNAL" )
61
+ LINK_BUILTIN_RESOURCES_TO_TARGET (${EXECUTABLE_NAME} extGizmoSpirvBuiltinResourceData )
0 commit comments