aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--shaders/CMakeLists.txt26
-rw-r--r--shaders/compute.comp2
-rw-r--r--src/CMakeLists.txt1
4 files changed, 30 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4cf5438..347cb6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,3 +8,4 @@ project(path-tracer VERSION 1.0 LANGUAGES CXX)
find_package(Vulkan REQUIRED)
add_subdirectory(src)
+add_subdirectory(shaders)
diff --git a/shaders/CMakeLists.txt b/shaders/CMakeLists.txt
new file mode 100644
index 0000000..99284e5
--- /dev/null
+++ b/shaders/CMakeLists.txt
@@ -0,0 +1,26 @@
+file(GLOB_RECURSE GLSL_SOURCE_FILES
+ "./*.frag"
+ "./*.vert"
+ "./*.geom"
+ "./*.comp"
+ "./*.glsl"
+)
+
+message(STATUS ${GLSL_SOURCE_FILES})
+
+foreach(GLSL ${GLSL_SOURCE_FILES})
+ get_filename_component(FILE_NAME ${GLSL} NAME)
+ set(SPIRV "${PROJECT_BINARY_DIR}/shaders/${FILE_NAME}.spv")
+ add_custom_command(
+ OUTPUT ${SPIRV}
+ COMMAND glslc --target-env=vulkan1.2 -std=460 ${GLSL} -o ${SPIRV} -I "../shaders/include" # relative to build directory
+ DEPENDS ${GLSL})
+ list(APPEND SPIRV_BINARY_FILES ${SPIRV})
+endforeach(GLSL)
+
+add_custom_target(
+ shaders
+ DEPENDS ${SPIRV_BINARY_FILES}
+ )
+
+add_dependencies(path-tracer shaders)
diff --git a/shaders/compute.comp b/shaders/compute.comp
new file mode 100644
index 0000000..34f46e2
--- /dev/null
+++ b/shaders/compute.comp
@@ -0,0 +1,2 @@
+void main() {
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 75c689b..801d4f1 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -14,6 +14,7 @@ add_executable(
metal.cpp
dielectric.cpp
vulkan-loader.cpp
+ utils.cpp
)
if(UNIX)