WIP | Add slang + compile slang and optimize spirv
This commit is contained in:
+1
-1
@@ -6,6 +6,6 @@ CPMAddPackage (
|
||||
OPTIONS "GLFW_BUILD_DOCS OFF"
|
||||
OPTIONS "GLFW_BUILD_TEST OFF"
|
||||
OPTIONS "GLFW_BUILD_EXAMPLES OFF"
|
||||
OPTIONS "GLFW_BUILD_X11 OFF"
|
||||
OPTIONS "GLFW_BUILD_X11 ON"
|
||||
OPTIONS "GLFW_BUILD_WAYLAND ON"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
function(create_copy_folder_target target_name src dst)
|
||||
add_custom_target(${target_name}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
-E copy_directory
|
||||
${src}
|
||||
${dst}
|
||||
COMMENT "Copying ${src} to ${dst}"
|
||||
)
|
||||
endfunction()
|
||||
@@ -1,37 +0,0 @@
|
||||
option(SHADERS_DIR "Directory to look for GLSL shaders" "assets/shaders")
|
||||
|
||||
find_program(GLSLC_EXECUTABLE NAMES glslc)
|
||||
if(NOT GLSLC_EXECUTABLE)
|
||||
message(FATAL_ERROR "glslc executable not found.")
|
||||
else()
|
||||
message(STATUS "Found glslc executable: ${GLSLC_EXECUTABLE}")
|
||||
endif()
|
||||
|
||||
function(create_glslc_shader_target TARGET SOURCE_DIR OUTPUT_DIR)
|
||||
file(MAKE_DIRECTORY ${OUTPUT_DIR})
|
||||
message(STATUS "GLSL Shader output directory: ${OUTPUT_DIR}")
|
||||
file (GLOB SHADER_FILES "${SOURCE_DIR}/*.vert")
|
||||
file(GLOB FRAG_FILES "${SOURCE_DIR}/*.frag")
|
||||
list(APPEND SHADER_FILES ${FRAG_FILES})
|
||||
message(STATUS "Found glsl shaders: ${SHADER_FILES}")
|
||||
set(OUTPUT_FILES "")
|
||||
foreach(SHADER_FILE ${SHADER_FILES})
|
||||
get_filename_component(SHADER_NAME ${SHADER_FILE} NAME)
|
||||
set(OUTPUT_FILE "${OUTPUT_DIR}/${SHADER_NAME}.spv")
|
||||
list(APPEND OUTPUT_FILES ${OUTPUT_FILE})
|
||||
message(STATUS "Compiling ${SHADER_FILE} to ${OUTPUT_FILE}")
|
||||
add_custom_command (
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${GLSLC_EXECUTABLE} ${SHADER_FILE} -o ${OUTPUT_FILE}
|
||||
DEPENDS ${SHADER_FILE}
|
||||
COMMENT "Compiling ${SHADER_FILE} -> ${OUTPUT_FILE}"
|
||||
VERBATIM
|
||||
)
|
||||
endforeach()
|
||||
add_custom_target(${TARGET} ALL DEPENDS ${OUTPUT_FILES})
|
||||
endfunction()
|
||||
|
||||
create_glslc_shader_target(glsl_shaders
|
||||
"${SHADERS_DIR}"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${SHADERS_DIR}"
|
||||
)
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
set(SLANG_ENABLE_CUDA OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_OPTIX OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_NVAPI OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_XLIB OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_AFTERMATH OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_DX_ON_VK OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_GFX OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_SLANG_RHI OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_SLANGC ON CACHE BOOL "")
|
||||
set(SLANG_ENABLE_SLANGRT ON CACHE BOOL "")
|
||||
set(SLANG_ENABLE_SLANG_GLSLANG OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_TESTS OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_EXAMPLES OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_REPLAYER OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_PREBUILT_BINARIES OFF CACHE BOOL "")
|
||||
set(SLANG_EMBED_CORE_MODULE_SOURCE OFF CACHE BOOL "")
|
||||
set(SLANG_ENABLE_DXIL OFF CACHE BOOL "")
|
||||
set(SLANG_LIB_TYPE STATIC CACHE STRING "")
|
||||
set(SLANG_RHI_ENABLE_D3D11 OFF CACHE BOOL "")
|
||||
set(SLANG_RHI_ENABLE_D3D12 OFF CACHE BOOL "")
|
||||
set(SLANG_RHI_ENABLE_METAL OFF CACHE BOOL "")
|
||||
set(SLANG_RHI_ENABLE_CUDA OFF CACHE BOOL "")
|
||||
set(SLANG_RHI_ENABLE_WGPU OFF CACHE BOOL "")
|
||||
|
||||
CPMAddPackage(
|
||||
URI "gh:shader-slang/slang@2026.14"
|
||||
OPTIONS "SLANG_ENABLE_CUDA OFF"
|
||||
OPTIONS "SLANG_ENABLE_OPTIX OFF"
|
||||
OPTIONS "SLANG_ENABLE_NVAPI OFF"
|
||||
OPTIONS "SLANG_ENABLE_XLIB OFF"
|
||||
OPTIONS "SLANG_ENABLE_AFTERMATH OFF"
|
||||
OPTIONS "SLANG_ENABLE_DX_ON_VK OFF"
|
||||
OPTIONS "SLANG_ENABLE_GFX OFF"
|
||||
OPTIONS "SLANG_ENABLE_SLANG_RHI OFF"
|
||||
OPTIONS "SLANG_ENABLE_SLANGC ON"
|
||||
OPTIONS "SLANG_ENABLE_SLANGRT ON"
|
||||
OPTIONS "SLANG_ENABLE_SLANG_GLSLANG OFF"
|
||||
OPTIONS "SLANG_ENABLE_TESTS OFF"
|
||||
OPTIONS "SLANG_ENABLE_REPLAYER OFF"
|
||||
OPTIONS "SLANG_ENABLE_PREBUILT_BINARIES OFF"
|
||||
OPTIONS "SLANG_EMBED_CORE_MODULE_SOURCE OFF"
|
||||
OPTIONS "SLANG_ENABLE_DXIL OFF"
|
||||
OPTIONS "SLANG_LIB_TYPE STATIC"
|
||||
OPTIONS "SLANG_RHI_ENABLE_D3D11 OFF"
|
||||
OPTIONS "SLANG_RHI_ENABLE_D3D12 OFF"
|
||||
OPTIONS "SLANG_RHI_ENABLE_METAL OFF"
|
||||
OPTIONS "SLANG_RHI_ENABLE_CUDA OFF"
|
||||
OPTIONS "SLANG_RHI_ENABLE_WGPU OFF"
|
||||
)
|
||||
@@ -1,36 +0,0 @@
|
||||
option(SHADERS_DIR "Directory to look for SLANG shaders" "assets/shaders")
|
||||
|
||||
find_program(SLANGC_EXECUTABLE NAMES slangc)
|
||||
if(NOT SLANGC_EXECUTABLE)
|
||||
message(FATAL_ERROR "slangc executable not found.")
|
||||
else()
|
||||
message(STATUS "Found slangc executable: ${SLANGC_EXECUTABLE}")
|
||||
endif()
|
||||
|
||||
function(create_slang_shader_target TARGET SOURCE_DIR OUTPUT_DIR)
|
||||
file(MAKE_DIRECTORY ${OUTPUT_DIR})
|
||||
message(STATUS "Shader output directory: ${OUTPUT_DIR}")
|
||||
file(GLOB SHADER_FILES "${SOURCE_DIR}/*.slang")
|
||||
message(STATUS "Found shaders: ${SHADER_FILES}")
|
||||
set(ENTRY_POINTS -entry vertMain -entry fragMain)
|
||||
set(OUTPUT_FILES "")
|
||||
foreach(SHADER_FILE ${SHADER_FILES})
|
||||
get_filename_component(SHADER_NAME ${SHADER_FILE} NAME_WE)
|
||||
set(OUTPUT_FILE "${OUTPUT_DIR}/${SHADER_NAME}.spv")
|
||||
list(APPEND OUTPUT_FILES ${OUTPUT_FILE})
|
||||
message(STATUS "Compiling ${SHADER_FILE} to ${OUTPUT_FILE}")
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT_FILE}
|
||||
COMMAND ${SLANGC_EXECUTABLE} ${SHADER_FILE} -target spirv -profile spirv_1_4 -emit-spirv-directly -fvk-use-entrypoint-name ${ENTRY_POINTS} -o ${OUTPUT_FILE}
|
||||
DEPENDS ${SHADER_FILE}
|
||||
COMMENT "Compiling ${SHADER_FILE} -> ${OUTPUT_FILE}"
|
||||
VERBATIM
|
||||
)
|
||||
endforeach()
|
||||
add_custom_target(${TARGET} ALL DEPENDS ${OUTPUT_FILES})
|
||||
endfunction()
|
||||
|
||||
create_slang_shader_target(slang_shaders
|
||||
"${SHADERS_DIR}"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${SHADERS_DIR}"
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
CPMAddPackage(
|
||||
URL "https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-1.4.357.0.zip"
|
||||
NAME SPIRV-Headers
|
||||
OPTIONS "SPIRV_SKIP_TESTS TRUE"
|
||||
OPTIONS "SPIRV_SKIP_EXECUTABLES TRUE"
|
||||
OPTIONS "SPIRV_WERROR FALSE"
|
||||
)
|
||||
@@ -0,0 +1,9 @@
|
||||
CPMAddPackage(
|
||||
URI "https://github.com/KhronosGroup/SPIRV-Reflect/archive/refs/tags/vulkan-sdk-1.4.357.0.zip"
|
||||
NAME SPIRV-Reflect
|
||||
OPTIONS "SPIRV_SKIP_TESTS ON"
|
||||
OPTIONS "SPIRV_SKIP_EXECUTABLES ON"
|
||||
OPTIONS "SPIRV_WERROR OFF"
|
||||
OPTIONS "SPIRV_REFLECT_EXECUTABLE OFF"
|
||||
OPTIONS "SPIRV_REFLECT_STATIC_LIB ON"
|
||||
)
|
||||
@@ -0,0 +1,11 @@
|
||||
CPMAddPackage(
|
||||
NAME SPIRV-Tools
|
||||
GIT_REPOSITORY "https://github.com/KhronosGroup/SPIRV-Tools"
|
||||
GIT_TAG "vulkan-sdk-1.4.357"
|
||||
OPTIONS "SPIRV_SKIP_TESTS ON"
|
||||
OPTIONS "SPIRV_SKIP_EXECUTABLES ON"
|
||||
OPTIONS "SPIRV_WERROR OFF"
|
||||
)
|
||||
if (TARGET spirv-tools-check-python-tests)
|
||||
set_target_properties(spirv-tools-check-python-tests PROPERTIES EXCLUDE_FROM_ALL ON)
|
||||
endif ()
|
||||
Reference in New Issue
Block a user