Skip to content

Commit daea3f9

Browse files
authored
Merge pull request #120 from Devsh-Graphics-Programming/gizmo
Geometry Creator port & ImGuizmo UI example integration
2 parents d478a92 + 8131d0e commit daea3f9

22 files changed

+1329
-597
lines changed

35_GeometryCreator/CMakeLists.txt

Lines changed: 67 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,69 @@
1+
nbl_create_executable_project("" "" "" "" "${NBL_EXECUTABLE_PROJECT_CREATION_PCH_TARGET}")
12

2-
include(common RESULT_VARIABLE RES)
3-
if(NOT RES)
4-
message(FATAL_ERROR "common.cmake not found. Should be in {repo_root}/cmake directory")
5-
endif()
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/geometryCreator/spirv")
69

7-
nbl_create_executable_project("" "" "" "" "${NBL_EXECUTABLE_PROJECT_CREATION_PCH_TARGET}")
10+
# list of input source shaders
11+
set(NBL_THIS_EXAMPLE_INPUT_SHADERS
12+
# geometry creator
13+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/gc.basic.fragment.hlsl"
14+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/gc.basic.vertex.hlsl"
15+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/gc.cone.vertex.hlsl"
16+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/gc.ico.vertex.hlsl"
17+
18+
# grid
19+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/grid.vertex.hlsl"
20+
"${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/grid.fragment.hlsl"
21+
)
22+
23+
file(GLOB_RECURSE NBL_THIS_EXAMPLE_INPUT_COMMONS CONFIGURE_DEPENDS "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}/template/*.hlsl")
24+
25+
include("${NBL_ROOT_PATH}/src/nbl/builtin/utils.cmake")
26+
27+
foreach(NBL_INPUT_SHADER IN LISTS NBL_THIS_EXAMPLE_INPUT_SHADERS)
28+
cmake_path(GET NBL_INPUT_SHADER FILENAME NBL_INPUT_SHADER_FILENAME)
29+
cmake_path(GET NBL_INPUT_SHADER_FILENAME STEM LAST_ONLY NBL_SHADER_STEM) # filename without .hlsl extension
30+
cmake_path(GET NBL_SHADER_STEM EXTENSION LAST_ONLY NBL_SHADER_TYPE) # .<shader type>
31+
32+
set(NBL_OUTPUT_SPIRV_FILENAME "${NBL_SHADER_STEM}.spv")
33+
set(NBL_OUTPUT_SPIRV_PATH "${NBL_THIS_EXAMPLE_OUTPUT_SPIRV_DIRECTORY}/${NBL_OUTPUT_SPIRV_FILENAME}")
34+
35+
if(NBL_SHADER_TYPE STREQUAL .vertex)
36+
set(NBL_NSC_COMPILE_OPTIONS -T vs_6_7 -E VSMain)
37+
elseif(NBL_SHADER_TYPE STREQUAL .fragment)
38+
set(NBL_NSC_COMPILE_OPTIONS -T ps_6_7 -E PSMain)
39+
else()
40+
message(FATAL_ERROR "Input shader is supposed to be <name>.<shader type>.hlsl!")
41+
endif()
42+
43+
set(NBL_NSC_COMPILE_COMMAND
44+
"$<TARGET_FILE:nsc>"
45+
-Fc "${NBL_OUTPUT_SPIRV_PATH}"
46+
${NBL_NSC_COMPILE_OPTIONS} # this should come from shader's [#pragma WAVE <compile options>] but our NSC doesn't seem to work properly currently
47+
"${NBL_INPUT_SHADER}"
48+
)
49+
50+
set(NBL_DEPENDS
51+
"${NBL_INPUT_SHADER}"
52+
${NBL_THIS_EXAMPLE_INPUT_COMMONS}
53+
)
54+
55+
add_custom_command(OUTPUT "${NBL_OUTPUT_SPIRV_PATH}"
56+
COMMAND ${NBL_NSC_COMPILE_COMMAND}
57+
DEPENDS ${NBL_DEPENDS}
58+
WORKING_DIRECTORY "${NBL_THIS_EXAMPLE_INPUT_SHADERS_DIRECTORY}"
59+
COMMENT "Generating \"${NBL_OUTPUT_SPIRV_PATH}\""
60+
VERBATIM
61+
COMMAND_EXPAND_LISTS
62+
)
63+
64+
list(APPEND NBL_THIS_EXAMPLE_OUTPUT_SPIRV_BUILTINS "${NBL_OUTPUT_SPIRV_PATH}")
65+
LIST_BUILTIN_RESOURCE(IMGUI_EXT_SPIRV_RESOURCES_TO_EMBED "geometryCreator/spirv/${NBL_OUTPUT_SPIRV_FILENAME}")
66+
endforeach()
67+
68+
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")
69+
LINK_BUILTIN_RESOURCES_TO_TARGET(${EXECUTABLE_NAME} extGizmoSpirvBuiltinResourceData)

35_GeometryCreator/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Geometry Creator
2+
3+
Use WASD/arrows to move camera and mouse scroll to change geometry.
4+
5+
![](https://github.com/Devsh-Graphics-Programming/Nabla-Site-Media/blob/master/examples/GeometryCreator/demo.gif?raw=true)

35_GeometryCreator/config.json.template

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)