@@ -6,6 +6,15 @@ project(Diligent-SuperResolution CXX)
66
77set (DILIGENT_DLSS_SUPPORTED FALSE CACHE INTERNAL "DLSS is not supported" )
88set (DILIGENT_DSR_SUPPORTED FALSE CACHE INTERNAL "DirectSR is not supported" )
9+ set (DILIGENT_FSR_SUPPORTED FALSE CACHE INTERNAL "FSR is not supported" )
10+
11+ if (NOT FILE2STRING_PATH STREQUAL "" )
12+ set (DILIGENT_FSR_SUPPORTED TRUE CACHE INTERNAL "FSR is supported" )
13+ endif ()
14+
15+ if (${DILIGENT_NO_FSR} )
16+ set (DILIGENT_FSR_SUPPORTED FALSE CACHE INTERNAL "FSR is forcibly disabled" )
17+ endif ()
918
1019if (PLATFORM_WIN32 AND NOT MINGW_BUILD AND CMAKE_SIZEOF_VOID_P EQUAL 8)
1120 if (D3D11_SUPPORTED OR D3D12_SUPPORTED OR VULKAN_SUPPORTED)
@@ -61,6 +70,70 @@ set(SOURCE
6170 src/SuperResolutionFactory.cpp
6271)
6372
73+ set (FSR_SHADERS
74+ shaders/FSR_FullQuad.fx
75+ shaders/FSRStructures.fxh
76+ shaders/FSR_EdgeAdaptiveUpsampling.fx
77+ shaders/FSR_ContrastAdaptiveSharpening.fx
78+ shaders/fsr1/ffx_common_types.h
79+ shaders/fsr1/ffx_core.h
80+ shaders/fsr1/ffx_core_glsl.h
81+ shaders/fsr1/ffx_core_gpu_common.h
82+ shaders/fsr1/ffx_core_gpu_common_half.h
83+ shaders/fsr1/ffx_core_hlsl.h
84+ shaders/fsr1/ffx_core_portability.h
85+ shaders/fsr1/ffx_fsr1.h
86+ )
87+ set_source_files_properties (${FSR_SHADERS} PROPERTIES VS_TOOL_OVERRIDE "None" )
88+
89+ set (FSR_SHADER_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} /shaders_inc/FSR)
90+ file (MAKE_DIRECTORY ${FSR_SHADER_OUTPUT_DIR} )
91+
92+ set (FSR_SHADERS_LIST_FILE ${FSR_SHADER_OUTPUT_DIR} /FSRShaderList.h)
93+
94+ if (DILIGENT_FSR_SUPPORTED)
95+ find_package (Python3 REQUIRED )
96+
97+ file (WRITE ${FSR_SHADERS_LIST_FILE}
98+ "static const MemoryShaderSourceFileInfo g_FSRShaders[] =\n "
99+ "{"
100+ )
101+
102+ foreach (FILE ${FSR_SHADERS} )
103+ get_filename_component (FILE_NAME ${FILE} NAME )
104+ set (CONVERTED_FILE ${FSR_SHADER_OUTPUT_DIR} /${FILE_NAME} .h)
105+ add_custom_command (OUTPUT ${CONVERTED_FILE}
106+ COMMAND ${Python3_EXECUTABLE} ${FILE2STRING_PATH} ${CMAKE_CURRENT_SOURCE_DIR} /${FILE} ${CONVERTED_FILE}
107+ MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR} /${FILE}
108+ COMMENT "Processing FSR shader ${FILE} "
109+ VERBATIM )
110+
111+ file (APPEND ${FSR_SHADERS_LIST_FILE}
112+ "\n {"
113+ "\n \" ${FILE_NAME} \" ,"
114+ "\n #include \" ${FILE_NAME} .h\" "
115+ "\n },"
116+ )
117+
118+ list (APPEND FSR_SHADERS_INC_LIST ${CONVERTED_FILE} )
119+ endforeach ()
120+
121+ file (APPEND ${FSR_SHADERS_LIST_FILE}
122+ "\n };\n "
123+ )
124+
125+ set_source_files_properties (${FSR_SHADERS_INC_LIST} PROPERTIES GENERATED TRUE )
126+ else ()
127+ message (WARNING "File2String utility is not found. FSR is disabled." )
128+ endif ()
129+
130+ if (DILIGENT_FSR_SUPPORTED)
131+ list (APPEND SOURCE src/FSRProvider.cpp)
132+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
133+ set_source_files_properties (src/FSRProvider.cpp PROPERTIES COMPILE_OPTIONS "-Wno-unused-function" )
134+ endif ()
135+ endif ()
136+
64137if (DILIGENT_DLSS_SUPPORTED)
65138 list (APPEND INCLUDE include /SuperResolutionDLSS.hpp)
66139 list (APPEND SOURCE src/SuperResolutionDLSS.cpp)
@@ -92,9 +165,17 @@ target_include_directories(Diligent-SuperResolutionInterface INTERFACE interface
92165target_compile_definitions (Diligent-SuperResolutionInterface INTERFACE SUPER_RESOLUTION_SUPPORTED=1 )
93166
94167add_library (Diligent-SuperResolution-static STATIC
95- ${SOURCE} ${INTERFACE} ${INCLUDE}
168+ ${SOURCE}
169+ ${INTERFACE}
170+ ${INCLUDE}
171+ ${FSR_SHADERS}
172+ ${FSR_SHADERS_INC_LIST}
173+ ${FSR_SHADERS_LIST_FILE}
96174 readme.md
97175)
176+ source_group ("shaders/FSR" FILES ${FSR_SHADERS} )
177+ source_group ("generated/FSR" FILES ${FSR_SHADERS_INC_LIST} ${FSR_SHADERS_LIST_FILE} )
178+
98179add_library (Diligent-SuperResolution-shared SHARED
99180 readme.md
100181)
@@ -109,6 +190,7 @@ PRIVATE
109190 ../GraphicsEngine/include
110191 ../GraphicsEngineD3DBase/include
111192 ../GraphicsEngineNextGenBase/include
193+ ${CMAKE_CURRENT_BINARY_DIR} /shaders_inc/FSR
112194)
113195
114196if (DILIGENT_DLSS_SUPPORTED)
@@ -129,6 +211,10 @@ if(DILIGENT_DSR_SUPPORTED)
129211 endif ()
130212endif ()
131213
214+ if (DILIGENT_FSR_SUPPORTED)
215+ target_compile_definitions (Diligent-SuperResolution-static PRIVATE DILIGENT_FSR_SUPPORTED=1 )
216+ endif ()
217+
132218target_compile_definitions (Diligent-SuperResolution-shared PUBLIC DILIGENT_SUPER_RESOLUTION_SHARED=1 )
133219
134220target_link_libraries (Diligent-SuperResolution-static
@@ -139,6 +225,7 @@ PRIVATE
139225 Diligent-Common
140226 Diligent-GraphicsAccessories
141227 Diligent-ShaderTools
228+ Diligent-GraphicsTools
142229)
143230
144231if (DILIGENT_DSR_SUPPORTED)
0 commit comments