2021-10-17 03:33:58 +02:00
|
|
|
set(FIDELITYFX_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/externals/FidelityFX-FSR/ffx-fsr)
|
|
|
|
|
|
|
|
set(GLSL_INCLUDES
|
|
|
|
fidelityfx_fsr.comp
|
|
|
|
${FIDELITYFX_INCLUDE_DIR}/ffx_a.h
|
|
|
|
${FIDELITYFX_INCLUDE_DIR}/ffx_fsr1.h
|
|
|
|
)
|
|
|
|
|
2020-12-30 05:29:04 +01:00
|
|
|
set(SHADER_FILES
|
2021-02-13 21:52:21 +01:00
|
|
|
astc_decoder.comp
|
2020-12-30 05:39:05 +01:00
|
|
|
block_linear_unswizzle_2d.comp
|
|
|
|
block_linear_unswizzle_3d.comp
|
2021-11-19 03:17:02 +01:00
|
|
|
convert_abgr8_to_d24s8.frag
|
|
|
|
convert_d24s8_to_abgr8.frag
|
2022-03-15 23:38:53 +01:00
|
|
|
convert_s8d24_to_abgr8.frag
|
2020-12-30 05:48:44 +01:00
|
|
|
convert_depth_to_float.frag
|
|
|
|
convert_float_to_depth.frag
|
2020-12-30 05:44:09 +01:00
|
|
|
full_screen_triangle.vert
|
2021-10-21 01:36:06 +02:00
|
|
|
fxaa.frag
|
|
|
|
fxaa.vert
|
2020-12-30 05:47:08 +01:00
|
|
|
opengl_copy_bc4.comp
|
2020-08-24 02:28:15 +02:00
|
|
|
opengl_present.frag
|
|
|
|
opengl_present.vert
|
2021-10-23 06:09:29 +02:00
|
|
|
opengl_present_scaleforce.frag
|
2020-12-30 05:41:42 +01:00
|
|
|
pitch_unswizzle.comp
|
2021-09-10 05:01:39 +02:00
|
|
|
present_bicubic.frag
|
2021-10-21 01:27:54 +02:00
|
|
|
present_gaussian.frag
|
2020-12-30 06:00:48 +01:00
|
|
|
vulkan_blit_color_float.frag
|
2020-12-30 06:02:07 +01:00
|
|
|
vulkan_blit_depth_stencil.frag
|
2021-10-23 06:09:29 +02:00
|
|
|
vulkan_fidelityfx_fsr_easu_fp16.comp
|
|
|
|
vulkan_fidelityfx_fsr_easu_fp32.comp
|
|
|
|
vulkan_fidelityfx_fsr_rcas_fp16.comp
|
|
|
|
vulkan_fidelityfx_fsr_rcas_fp32.comp
|
2020-12-30 05:59:12 +01:00
|
|
|
vulkan_present.frag
|
|
|
|
vulkan_present.vert
|
2021-10-23 06:09:29 +02:00
|
|
|
vulkan_present_scaleforce_fp16.frag
|
|
|
|
vulkan_present_scaleforce_fp32.frag
|
2020-12-30 06:03:50 +01:00
|
|
|
vulkan_quad_indexed.comp
|
|
|
|
vulkan_uint8.comp
|
2020-08-24 02:28:15 +02:00
|
|
|
)
|
|
|
|
|
2021-06-13 07:15:54 +02:00
|
|
|
find_program(GLSLANGVALIDATOR "glslangValidator")
|
|
|
|
if ("${GLSLANGVALIDATOR}" STREQUAL "GLSLANGVALIDATOR-NOTFOUND")
|
|
|
|
message(FATAL_ERROR "Required program `glslangValidator` not found.")
|
|
|
|
endif()
|
2020-12-30 05:29:04 +01:00
|
|
|
|
|
|
|
set(GLSL_FLAGS "")
|
2021-02-02 01:36:10 +01:00
|
|
|
set(QUIET_FLAG "--quiet")
|
2020-12-30 05:29:04 +01:00
|
|
|
|
2020-08-24 02:28:15 +02:00
|
|
|
set(SHADER_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/include)
|
|
|
|
set(SHADER_DIR ${SHADER_INCLUDE}/video_core/host_shaders)
|
2020-09-24 02:38:05 +02:00
|
|
|
set(HOST_SHADERS_INCLUDE ${SHADER_INCLUDE} PARENT_SCOPE)
|
2020-08-24 02:28:15 +02:00
|
|
|
|
|
|
|
set(INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/source_shader.h.in)
|
|
|
|
set(HEADER_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/StringShaderHeader.cmake)
|
|
|
|
|
2021-02-02 01:36:10 +01:00
|
|
|
# Check if `--quiet` is available on host's glslangValidator version
|
|
|
|
# glslangValidator prints to STDERR iff an unrecognized flag is passed to it
|
|
|
|
execute_process(
|
|
|
|
COMMAND
|
|
|
|
${GLSLANGVALIDATOR} ${QUIET_FLAG}
|
|
|
|
ERROR_VARIABLE
|
|
|
|
GLSLANG_ERROR
|
|
|
|
# STDOUT variable defined to silence unnecessary output during CMake configuration
|
|
|
|
OUTPUT_VARIABLE
|
|
|
|
GLSLANG_OUTPUT
|
|
|
|
)
|
|
|
|
|
|
|
|
if (NOT GLSLANG_ERROR STREQUAL "")
|
|
|
|
message(WARNING "Refusing to use unavailable flag `${QUIET_FLAG}` on `${GLSLANGVALIDATOR}`")
|
|
|
|
set(QUIET_FLAG "")
|
|
|
|
endif()
|
|
|
|
|
2020-12-30 05:29:04 +01:00
|
|
|
foreach(FILENAME IN ITEMS ${SHADER_FILES})
|
2020-08-24 02:28:15 +02:00
|
|
|
string(REPLACE "." "_" SHADER_NAME ${FILENAME})
|
|
|
|
set(SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME})
|
2020-12-30 05:29:04 +01:00
|
|
|
# Skip generating source headers on Vulkan exclusive files
|
|
|
|
if (NOT ${FILENAME} MATCHES "vulkan.*")
|
|
|
|
set(SOURCE_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}.h)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT
|
|
|
|
${SOURCE_HEADER_FILE}
|
|
|
|
COMMAND
|
|
|
|
${CMAKE_COMMAND} -P ${HEADER_GENERATOR} ${SOURCE_FILE} ${SOURCE_HEADER_FILE} ${INPUT_FILE}
|
|
|
|
MAIN_DEPENDENCY
|
|
|
|
${SOURCE_FILE}
|
|
|
|
DEPENDS
|
|
|
|
${INPUT_FILE}
|
|
|
|
# HEADER_GENERATOR should be included here but msbuild seems to assume it's always modified
|
|
|
|
)
|
|
|
|
set(SHADER_HEADERS ${SHADER_HEADERS} ${SOURCE_HEADER_FILE})
|
|
|
|
endif()
|
|
|
|
# Skip compiling to SPIR-V OpenGL exclusive files
|
|
|
|
if (NOT ${FILENAME} MATCHES "opengl.*")
|
|
|
|
string(TOUPPER ${SHADER_NAME}_SPV SPIRV_VARIABLE_NAME)
|
|
|
|
set(SPIRV_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}_spv.h)
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT
|
|
|
|
${SPIRV_HEADER_FILE}
|
|
|
|
COMMAND
|
2021-10-17 03:33:58 +02:00
|
|
|
${GLSLANGVALIDATOR} -V ${QUIET_FLAG} -I"${FIDELITYFX_INCLUDE_DIR}" ${GLSL_FLAGS} --variable-name ${SPIRV_VARIABLE_NAME} -o ${SPIRV_HEADER_FILE} ${SOURCE_FILE}
|
2020-12-30 05:29:04 +01:00
|
|
|
MAIN_DEPENDENCY
|
|
|
|
${SOURCE_FILE}
|
|
|
|
)
|
|
|
|
set(SHADER_HEADERS ${SHADER_HEADERS} ${SPIRV_HEADER_FILE})
|
|
|
|
endif()
|
2020-08-24 02:28:15 +02:00
|
|
|
endforeach()
|
|
|
|
|
2021-10-17 03:33:58 +02:00
|
|
|
set(SHADER_SOURCES ${SHADER_FILES})
|
|
|
|
list(APPEND SHADER_SOURCES ${GLSL_INCLUDES})
|
|
|
|
|
2020-08-24 02:28:15 +02:00
|
|
|
add_custom_target(host_shaders
|
|
|
|
DEPENDS
|
|
|
|
${SHADER_HEADERS}
|
|
|
|
SOURCES
|
2021-10-17 03:33:58 +02:00
|
|
|
${SHADER_SOURCES}
|
2020-08-24 02:28:15 +02:00
|
|
|
)
|