@@ -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,67 @@ 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+ endif ()
133+
64134if (DILIGENT_DLSS_SUPPORTED)
65135 list (APPEND INCLUDE include /SuperResolutionDLSS.hpp)
66136 list (APPEND SOURCE src/SuperResolutionDLSS.cpp)
@@ -92,9 +162,17 @@ target_include_directories(Diligent-SuperResolutionInterface INTERFACE interface
92162target_compile_definitions (Diligent-SuperResolutionInterface INTERFACE SUPER_RESOLUTION_SUPPORTED=1 )
93163
94164add_library (Diligent-SuperResolution-static STATIC
95- ${SOURCE} ${INTERFACE} ${INCLUDE}
165+ ${SOURCE}
166+ ${INTERFACE}
167+ ${INCLUDE}
168+ ${FSR_SHADERS}
169+ ${FSR_SHADERS_INC_LIST}
170+ ${FSR_SHADERS_LIST_FILE}
96171 readme.md
97172)
173+ source_group ("shaders/FSR" FILES ${FSR_SHADERS} )
174+ source_group ("generated/FSR" FILES ${FSR_SHADERS_INC_LIST} ${FSR_SHADERS_LIST_FILE} )
175+
98176add_library (Diligent-SuperResolution-shared SHARED
99177 readme.md
100178)
@@ -109,6 +187,7 @@ PRIVATE
109187 ../GraphicsEngine/include
110188 ../GraphicsEngineD3DBase/include
111189 ../GraphicsEngineNextGenBase/include
190+ ${CMAKE_CURRENT_BINARY_DIR} /shaders_inc/FSR
112191)
113192
114193if (DILIGENT_DLSS_SUPPORTED)
@@ -129,6 +208,10 @@ if(DILIGENT_DSR_SUPPORTED)
129208 endif ()
130209endif ()
131210
211+ if (DILIGENT_FSR_SUPPORTED)
212+ target_compile_definitions (Diligent-SuperResolution-static PRIVATE DILIGENT_FSR_SUPPORTED=1 )
213+ endif ()
214+
132215target_compile_definitions (Diligent-SuperResolution-shared PUBLIC DILIGENT_SUPER_RESOLUTION_SHARED=1 )
133216
134217target_link_libraries (Diligent-SuperResolution-static
@@ -139,6 +222,7 @@ PRIVATE
139222 Diligent-Common
140223 Diligent-GraphicsAccessories
141224 Diligent-ShaderTools
225+ Diligent-GraphicsTools
142226)
143227
144228if (DILIGENT_DSR_SUPPORTED)
0 commit comments