@@ -114,40 +114,61 @@ endfunction()
114114
115115# GenerateVulkanHeaders()
116116
117- add_executable ( VulkanShaderParser "${DAEMON_DIR} /cmake/DaemonVulkan/VulkanShaderParser.cpp" )
118-
119- set ( GRAPHICS_ENGINE_PATH ${DAEMON_DIR} /src/engine/renderer-vulkan/GraphicsEngine/ )
120- set ( GRAPHICS_ENGINE_PROCESSED_PATH ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/ )
121- target_compile_definitions ( VulkanShaderParser PRIVATE "-DDAEMON_VULKAN_GRAPHICS_ENGINE_PATH=\" ${GRAPHICS_ENGINE_PATH} \" " )
122- target_compile_definitions ( VulkanShaderParser PRIVATE "-DDAEMON_VULKAN_GRAPHICS_ENGINE_PROCESSED_PATH=\" ${GRAPHICS_ENGINE_PROCESSED_PATH} \" " )
123-
124- file ( MAKE_DIRECTORY ${GRAPHICS_ENGINE_PROCESSED_PATH} )
125-
126- option ( VULKAN_SPIRV_OUT "Output human-readable SPIR-V files alongside the binary format." ON )
117+ option ( VULKAN_SPIRV_OUT "Output text SPIR-V files alongside the binary format." ON )
127118option ( VULKAN_SPIRV_OPTIMISE "Enable SPIR-V optimisations." ON )
128119option ( VULKAN_SPIRV_LTO "Enable link-time SPIR-V optimisations." ON )
129120
130- set ( VULKAN_SPIRV_DEBUG "default" CACHE STRING "glslangValidator debug options (remove: g0, non-semantic: gV)" )
131- set_property ( CACHE VULKAN_SPIRV_DEBUG PROPERTY STRINGS default remove non-semantic )
121+ if ( USE_VULKAN )
122+ add_executable ( VulkanShaderParser " ${DAEMON_DIR} /cmake/DaemonVulkan/VulkanShaderParser.cpp" )
132123
133- include ( DaemonEmbed )
124+ set ( GRAPHICS_ENGINE_PATH ${DAEMON_DIR} /src/engine/renderer-vulkan/GraphicsEngine/ )
125+ set ( GRAPHICS_ENGINE_PROCESSED_PATH ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/ )
126+ target_compile_definitions ( VulkanShaderParser PRIVATE "-DDAEMON_VULKAN_GRAPHICS_ENGINE_PATH=\" ${GRAPHICS_ENGINE_PATH} \" " )
127+ target_compile_definitions ( VulkanShaderParser PRIVATE "-DDAEMON_VULKAN_GRAPHICS_ENGINE_PROCESSED_PATH=\" ${GRAPHICS_ENGINE_PROCESSED_PATH} \" " )
134128
135- macro ( GenerateVulkanShaders target )
129+ file ( MAKE_DIRECTORY ${GRAPHICS_ENGINE_PROCESSED_PATH} )
130+
136131 file ( MAKE_DIRECTORY ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/processed/ )
137132 file ( MAKE_DIRECTORY ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/spirv/ )
138133 file ( MAKE_DIRECTORY ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/bin/ )
139134
135+ set ( VULKAN_SPIRV_DEBUG "default" CACHE STRING "glslangValidator debug options (remove: g0, non-semantic: gV)" )
136+ set_property ( CACHE VULKAN_SPIRV_DEBUG PROPERTY STRINGS default remove non-semantic )
137+ endif ()
138+
139+ include ( DaemonEmbed )
140+
141+ macro ( GenerateVulkanShaders target )
140142 # Pre-processing for #insert/#include
141143 foreach ( src IN LISTS graphicsEngineList )
142144 set ( graphicsProcessedList ${graphicsProcessedList} ${src} )
143145 list ( APPEND graphicsEngineOutputList ${GRAPHICS_ENGINE_PROCESSED_PATH} processed/${src} )
146+
147+ get_filename_component ( name "${src} " NAME_WE )
148+
149+ if ( VULKAN_SPIRV_OUT )
150+ set ( spirvAsmPath ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/spirv/${name} .spirv )
151+ endif ()
152+
153+ set ( spirvBinPath ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/bin/${name} .spirvBin )
154+
155+ list ( APPEND graphicsEngineOutputList ${spirvAsmPath} )
156+ list ( APPEND graphicsEngineOutputList ${spirvBinPath} )
144157 endforeach ()
158+
159+ list ( APPEND graphicsEngineOutputList ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/spirv/spirv.h )
145160
146161 # glslangValidator
147162 find_program ( glslangV glslangValidator HINTS /usr/bin /usr/local/bin $ENV{VULKAN_SDK} /Bin/ $ENV{VULKAN_SDK} /Bin32/ )
148163
149164 set ( spirvOptions --target-env vulkan1.3 --glsl-version 460 -e main -l -t )
150165
166+ if ( VULKAN_SPIRV_OUT )
167+ set ( spirvOut "ON" )
168+ else ()
169+ set ( spirvOut "OFF" )
170+ endif ()
171+
151172 if ( NOT VULKAN_SPIRV_OPTIMISE )
152173 set ( spirvOptions ${spirvOptions} -Od )
153174 endif ()
@@ -163,7 +184,7 @@ macro( GenerateVulkanShaders target )
163184 endif ()
164185
165186 add_custom_command (
166- COMMAND VulkanShaderParser \"${glslangV} ${spirvOptions} \" ${graphicsProcessedList}
187+ COMMAND VulkanShaderParser \"${glslangV} ${spirvOptions} \" ${spirvOut} ${ graphicsProcessedList}
167188 DEPENDS ${graphicsEngineIDEList}
168189 OUTPUT ${graphicsEngineOutputList}
169190 COMMENT " Generating Vulkan graphics engine: ${graphicsProcessedList} "
@@ -182,8 +203,7 @@ macro( GenerateVulkanShaders target )
182203
183204 set( spirvAsmPath ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/spirv/${name} .spirv )
184205
185- set( spirvBinPath ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/bin/${src} )
186- string( REGEX REPLACE " [.]glsl$ " " .spirvBin " spirvBinPath ${spirvBinPath} )
206+ set( spirvBinPath ${DAEMON_GENERATED_DIR} /DaemonVulkan/GraphicsEngine/bin/${name} .spirvBin )
187207
188208 list( POP_FRONT stagesList stage )
189209
0 commit comments