aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/post_processing/GenerateBundledEffects.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/post_processing/GenerateBundledEffects.cmake')
-rw-r--r--src/video_core/post_processing/GenerateBundledEffects.cmake50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/video_core/post_processing/GenerateBundledEffects.cmake b/src/video_core/post_processing/GenerateBundledEffects.cmake
new file mode 100644
index 0000000000..d3aca02571
--- /dev/null
+++ b/src/video_core/post_processing/GenerateBundledEffects.cmake
@@ -0,0 +1,50 @@
+# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+set(EFFECT_DIR ${CMAKE_ARGV3})
+set(HEADER_FILE ${CMAKE_ARGV4})
+
+file(GLOB EFFECT_FILES ${EFFECT_DIR}/*.fx)
+list(SORT EFFECT_FILES)
+
+set(ENTRIES "")
+foreach(EFFECT_FILE IN LISTS EFFECT_FILES)
+ get_filename_component(EFFECT_NAME ${EFFECT_FILE} NAME)
+ file(READ ${EFFECT_FILE} EFFECT_BODY)
+
+ string(REGEX REPLACE ";" "{{SEMICOLON}}" EFFECT_BODY "${EFFECT_BODY}")
+ string(REGEX REPLACE "\n" ";" EFFECT_BODY "${EFFECT_BODY}")
+
+ set(EFFECT_TEXT "")
+ foreach(LINE IN LISTS EFFECT_BODY)
+ string(CONCAT EFFECT_TEXT "${EFFECT_TEXT}" " R\"(${LINE}\n)\"\n")
+ endforeach()
+ string(REGEX REPLACE "{{SEMICOLON}}" ";" EFFECT_TEXT "${EFFECT_TEXT}")
+
+ string(CONCAT ENTRIES "${ENTRIES}"
+ " {\n \"${EFFECT_NAME}\",\n${EFFECT_TEXT} },\n")
+endforeach()
+
+get_filename_component(OUTPUT_DIR ${HEADER_FILE} DIRECTORY)
+make_directory(${OUTPUT_DIR})
+
+file(WRITE ${HEADER_FILE}
+"// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <string_view>
+
+namespace VideoCore {
+
+struct BundledFxEffect {
+ std::string_view name;
+ std::string_view source;
+};
+
+constexpr BundledFxEffect BUNDLED_FX_EFFECTS[]{
+${ENTRIES}};
+
+} // namespace VideoCore
+")