Path SDL3 GPU amb PostFX passthrough; Screen amb init/shutdown explicit (v0.4.0)

This commit is contained in:
JailDesigner committed 2026-04-18 22:50:04 +02:00
1 parent 0348acb0eb
commit 6c8ef9ff44
18 files changed
+14213 -38

No files matched your search

+51
View File
@@ -39,6 +39,7 @@ set(APP_SOURCES
source/core/rendering/sprite/sprite.cpp
source/core/rendering/sprite/moving_sprite.cpp
source/core/rendering/sprite/animated_sprite.cpp
source/core/rendering/sdl3gpu/sdl3gpu_shader.cpp
source/core/resources/resource_helper.cpp
source/core/resources/resource_cache.cpp
source/utils/utils.cpp
@@ -49,8 +50,57 @@ set(APP_SOURCES
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
# --- SHADER COMPILATION (Linux/Windows - macOS usa Metal inline) ---
if(NOT APPLE)
find_program(GLSLC_EXE NAMES glslc)
set(SHADERS_DIR "${CMAKE_SOURCE_DIR}/data/shaders")
set(HEADERS_DIR "${CMAKE_SOURCE_DIR}/source/core/rendering/sdl3gpu/spv")
set(ALL_SHADER_SOURCES
"${SHADERS_DIR}/postfx.vert"
"${SHADERS_DIR}/postfx.frag"
)
set(ALL_SHADER_HEADERS
"${HEADERS_DIR}/postfx_vert_spv.h"
"${HEADERS_DIR}/postfx_frag_spv.h"
)
if(GLSLC_EXE)
add_custom_command(
OUTPUT ${ALL_SHADER_HEADERS}
COMMAND ${CMAKE_COMMAND}
-D GLSLC=${GLSLC_EXE}
-D SHADERS_DIR=${SHADERS_DIR}
-D HEADERS_DIR=${HEADERS_DIR}
-P ${CMAKE_SOURCE_DIR}/tools/shaders/compile_spirv.cmake
DEPENDS ${ALL_SHADER_SOURCES}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
COMMENT "Compilant shaders SPIR-V..."
)
add_custom_target(shaders DEPENDS ${ALL_SHADER_HEADERS})
message(STATUS "glslc trobat: els shaders es compilaran automaticament")
else()
# Dummy guards: sense glslc obligem que els headers pre-compilats existisquen.
foreach(HDR ${ALL_SHADER_HEADERS})
if(NOT EXISTS "${HDR}")
message(FATAL_ERROR
"glslc no trobat i el header SPIR-V no existeix: ${HDR}\n"
" Instal·la glslc (Linux: sudo apt install glslang-tools) o\n"
" comprova que el fitxer pre-compilat existeix al repositori."
)
endif()
endforeach()
message(STATUS "glslc no trobat - usant headers SPIR-V pre-compilats")
endif()
endif()
add_executable(${PROJECT_NAME} ${APP_SOURCES})
if(NOT APPLE AND GLSLC_EXE)
add_dependencies(${PROJECT_NAME} shaders)
endif()
target_include_directories(${PROJECT_NAME} PRIVATE
"${CMAKE_SOURCE_DIR}/source"
"${CMAKE_BINARY_DIR}"
@@ -140,6 +190,7 @@ if(CPPCHECK_EXE)
--suppress=missingIncludeSystem
--suppress=toomanyconfigs
--suppress=*:*source/external/*
--suppress=*:*source/core/rendering/sdl3gpu/spv/*
--suppress=normalCheckLevelMaxBranches
-D_DEBUG
-DLINUX_BUILD