corregit compile_spirv.cmake y la system_folder per a shaders

This commit is contained in:
2026-03-29 13:45:29 +02:00
parent 1bb2142d19
commit ad467847b9
8 changed files with 10479 additions and 897 deletions

View File

@@ -9,19 +9,65 @@
# cmake -D GLSLC=glslc -D SHADERS_DIR=data/shaders -D HEADERS_DIR=source/core/rendering/sdl3gpu -P tools/shaders/compile_spirv.cmake
cmake_minimum_required(VERSION 3.10)
cmake_policy(SET CMP0007 NEW)
foreach(SHADER vert frag)
set(SRC "${SHADERS_DIR}/postfx.${SHADER}")
set(SPV "${HEADERS_DIR}/postfx_${SHADER}.spv")
set(HDR "${HEADERS_DIR}/postfx_${SHADER}_spv.h")
set(VAR "kpostfx_${SHADER}_spv")
# Lista de shaders: fuente relativa a SHADERS_DIR
set(SHADER_SOURCES
"postfx.vert"
"postfx.frag"
"upscale.frag"
"downscale.frag"
"crtpi_frag.glsl"
)
# Nombre de la variable C++ para cada shader (mismo orden)
set(SHADER_VARS
"kpostfx_vert_spv"
"kpostfx_frag_spv"
"kupscale_frag_spv"
"kdownscale_frag_spv"
"kcrtpi_frag_spv"
)
# Flags extra de glslc para cada shader (vacío si no hay)
set(SHADER_FLAGS
""
""
""
""
"-fshader-stage=frag"
)
list(LENGTH SHADER_SOURCES NUM_SHADERS)
math(EXPR LAST_IDX "${NUM_SHADERS} - 1")
foreach(IDX RANGE ${LAST_IDX})
list(GET SHADER_SOURCES ${IDX} SRC_NAME)
list(GET SHADER_VARS ${IDX} VAR)
list(GET SHADER_FLAGS ${IDX} EXTRA_FLAG)
# Derivar nombre del header desde la variable: kpostfx_vert_spv → postfx_vert_spv.h
string(REGEX REPLACE "^k" "" HDR_BASE "${VAR}")
set(SRC "${SHADERS_DIR}/${SRC_NAME}")
set(SPV "${HEADERS_DIR}/${HDR_BASE}.spv")
set(HDR "${HEADERS_DIR}/${HDR_BASE}.h")
message(STATUS "Compilando ${SRC} ...")
execute_process(
COMMAND "${GLSLC}" "${SRC}" -o "${SPV}"
RESULT_VARIABLE GLSLC_RESULT
ERROR_VARIABLE GLSLC_ERROR
)
if(EXTRA_FLAG)
execute_process(
COMMAND "${GLSLC}" "${EXTRA_FLAG}" "${SRC}" -o "${SPV}"
RESULT_VARIABLE GLSLC_RESULT
ERROR_VARIABLE GLSLC_ERROR
)
else()
execute_process(
COMMAND "${GLSLC}" "${SRC}" -o "${SPV}"
RESULT_VARIABLE GLSLC_RESULT
ERROR_VARIABLE GLSLC_ERROR
)
endif()
if(NOT GLSLC_RESULT EQUAL 0)
message(FATAL_ERROR "glslc falló para ${SRC}:\n${GLSLC_ERROR}")
endif()