make shaders be compiled by cmake instead of a script

This commit is contained in:
Sven Balzer
2026-08-01 09:07:01 +02:00
parent 1ff65cd811
commit e6fa28a18f
4 changed files with 25 additions and 16 deletions
+25
View File
@@ -89,6 +89,29 @@ target_include_directories(stb_image INTERFACE libs/stb)
option(TRACY_ONLY_LOCALHOST "" ON)
add_subdirectory(libs/tracy)
# shaders
find_program(SLANGC_EXECUTABLE slangc)
set(SHADERS_SPV "")
set(SHADERS_WGSL "")
function(add_shader name)
if(SLANGC_EXECUTABLE)
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/spirv/${name}.spv" DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${name}-spv.dep" COMMAND "${SLANGC_EXECUTABLE}" -depfile "${CMAKE_CURRENT_BINARY_DIR}/${name}-spv.dep" "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/src/${name}.slang" -o "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/spirv/${name}.spv" -target spirv -profile spirv_1_0)
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/wgsl/${name}.wgsl" DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${name}-wgsl.dep" COMMAND "${SLANGC_EXECUTABLE}" -depfile "${CMAKE_CURRENT_BINARY_DIR}/${name}-wgsl.dep" "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/src/${name}.slang" -o "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/wgsl/${name}.wgsl" -target wgsl -D__wgsl__)
endif()
set(SHADERS_SPV ${SHADERS_SPV} "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/spirv/${name}.spv" PARENT_SCOPE)
set(SHADERS_WGSL ${SHADERS_WGSL} "${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/wgsl/${name}.wgsl" PARENT_SCOPE)
endfunction()
add_shader(basic)
add_shader(world)
add_shader(grid)
add_custom_target(shaders-spv DEPENDS ${SHADERS_SPV})
add_custom_target(shaders-wgsl DEPENDS ${SHADERS_WGSL})
# game
add_executable(mikemon
src/smol-atlas.cpp
src/change_directory.c
@@ -106,6 +129,7 @@ target_link_libraries(mikemon
TracyClient
wgpu
)
add_dependencies(mikemon shaders-wgsl)
add_executable(mikemon-sdlgpu
src/smol-atlas.cpp
@@ -124,3 +148,4 @@ target_link_libraries(mikemon-sdlgpu
TracyClient
wgpu
)
add_dependencies(mikemon-sdlgpu shaders-spv)