@@ -11,7 +11,6 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${BINARY_DIR})
1111make_directory (${BINARY_DIR} )
1212
1313add_subdirectory (lib/SDL )
14-
1514add_executable (blocks WIN32
1615 lib/sqlite3/sqlite3.c
1716 lib/stb/stb.c
@@ -21,11 +20,63 @@ add_executable(blocks WIN32
2120 src/chunk.c
2221 src/main.c
2322 src/map.c
23+ src/voxel.c
2424 src/world.c
2525)
26+ set_target_properties (blocks PROPERTIES C_STANDARD 11 )
27+ target_link_libraries (blocks PRIVATE SDL3::SDL3 )
2628
27- target_link_libraries (blocks PRIVATE
28- SDL3::SDL3
29- )
30-
31- set_target_properties (blocks PROPERTIES C_STANDARD 11 )
29+ function (add_shader FILE )
30+ set (DEPENDS ${ARGN} )
31+ set (HLSL ${CMAKE_SOURCE_DIR} /shaders/${FILE} )
32+ set (SPV ${CMAKE_SOURCE_DIR} /shaders/bin/${FILE} .spv)
33+ set (DXIL ${CMAKE_SOURCE_DIR} /shaders/bin/${FILE} .dxil)
34+ set (MSL ${CMAKE_SOURCE_DIR} /shaders/bin/${FILE} .msl)
35+ set (JSON ${CMAKE_SOURCE_DIR} /shaders/bin/${FILE} .json)
36+ if (MSVC )
37+ set (SHADERCROSS lib/SDL_shadercross/msvc /shadercross.exe)
38+ endif ()
39+ function (compile OUTPUT )
40+ add_custom_command (
41+ OUTPUT ${OUTPUT}
42+ COMMAND ${SHADERCROSS} ${HLSL} -s hlsl -o ${OUTPUT} -I src
43+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
44+ DEPENDS ${HLSL} ${DEPENDS}
45+ COMMENT ${OUTPUT}
46+ )
47+ get_filename_component (NAME ${OUTPUT} NAME )
48+ string (REPLACE . _ NAME ${NAME} )
49+ set (NAME compile_${NAME} )
50+ add_custom_target (${NAME} DEPENDS ${OUTPUT} )
51+ add_dependencies (blocks ${NAME} )
52+ endfunction ()
53+ if (MSVC )
54+ compile (${SPV} )
55+ compile (${DXIL} )
56+ compile (${MSL} )
57+ compile (${JSON} )
58+ endif ()
59+ function (package OUTPUT )
60+ get_filename_component (NAME ${OUTPUT} NAME )
61+ set (BINARY ${BINARY_DIR} /${NAME} )
62+ add_custom_command (
63+ OUTPUT ${BINARY}
64+ COMMAND ${CMAKE_COMMAND} -E copy ${OUTPUT} ${BINARY}
65+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
66+ DEPENDS ${OUTPUT}
67+ COMMENT ${BINARY}
68+ )
69+ string (REPLACE . _ NAME ${NAME} )
70+ set (NAME package_${NAME} )
71+ add_custom_target (${NAME} DEPENDS ${BINARY} )
72+ add_dependencies (blocks ${NAME} )
73+ endfunction ()
74+ if (APPLE )
75+ package (${MSL} )
76+ else ()
77+ package (${SPV} )
78+ endif ()
79+ package (${JSON} )
80+ endfunction ()
81+ add_shader (chunk.vert shaders/voxel.hlsl src/voxel_config.h )
82+ add_shader (chunk.frag )
0 commit comments