Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
c0e265b
Add deluxe mapping and specular scale to Vulkan renderer
timfox Feb 17, 2026
b0dccdb
Add X11 support for Unix platforms and implement error message display
timfox Feb 17, 2026
73b2fd7
Refactor Vulkan shader and rendering code for improved consistency an…
timfox Feb 17, 2026
0f00d46
Enhance Vulkan rendering capabilities with mip LOD bias and multi-sca…
timfox Feb 17, 2026
22e2de8
Add incremental LTC support for area lights in Vulkan renderer
timfox Feb 17, 2026
1e83419
Add canonical LTC lookup tables and integrate into Vulkan renderer
timfox Feb 17, 2026
09d0c59
Add Vulkan shader tooling and increase texture size limit
timfox Feb 17, 2026
65438b8
Refactor texture resampling and enhance Vulkan initialization
timfox Feb 17, 2026
af90161
Remove commented-out PBR_HAS_EMISSIVE flag updates in shader parsing …
timfox Feb 17, 2026
bfbd8bd
Enhance Vulkan shader descriptor management for emissive maps
timfox Feb 17, 2026
45b2899
Enhance Vulkan shader descriptor management for clearcoat, sheen, ani…
timfox Feb 17, 2026
6fbd250
Refactor Vulkan fragment shader for improved normal mapping and specu…
timfox Feb 18, 2026
881ce14
Add bloom and tonemapping controls to Vulkan renderer
timfox Feb 18, 2026
3115421
Add specular anti-aliasing controls to Vulkan renderer
timfox Feb 18, 2026
0c18ca2
Enhance Vulkan SSAO rendering with additional color attachment and ma…
timfox Feb 18, 2026
89f8531
Enhance Vulkan rendering with post-processing and exposure adjustments
timfox Feb 18, 2026
c25219d
Refactor Vulkan renderer to improve color handling and introduce new …
timfox Feb 18, 2026
602ddf1
Add Panini projection support to Vulkan renderer
timfox Feb 18, 2026
ca05024
Add r_panini support to Vulkan renderer
timfox Feb 18, 2026
1f86e9c
Implement gamma post-processing and bloom adjustments in Vulkan renderer
timfox Feb 18, 2026
8538610
Revert "Implement gamma post-processing and bloom adjustments in Vulk…
timfox Feb 18, 2026
d77fcb7
Reset renderer to 0f00d463 baseline
timfox Feb 18, 2026
8443b6b
Add Vulkan shader tooling and increase texture size limit
timfox Feb 17, 2026
505749d
Add Panini projection support to Vulkan renderer
timfox Feb 18, 2026
1563609
Add r_panini support to Vulkan renderer
timfox Feb 18, 2026
dd25432
Add new cvars for advanced post-processing controls in Vulkan renderer
timfox Feb 18, 2026
22d64a7
Refactor Vulkan renderer and shader code for improved post-processing
timfox Feb 18, 2026
1166e99
Add Vulkan shader generation support in CMake configuration
timfox Feb 19, 2026
d0e2c03
Enhance shader compilation and macOS app bundling support
timfox Feb 19, 2026
8ad63ed
Add Vulkan pipeline debug cvar and enhance swapchain handling
timfox Feb 19, 2026
58d24ff
Refactor Vulkan shader and pipeline handling for improved texture man…
timfox Feb 19, 2026
311fb48
Enhance Vulkan renderer with improved PBR debugging and texture manag…
timfox Feb 19, 2026
d06c6f0
Refactor Vulkan renderer for improved descriptor set management and s…
timfox Feb 19, 2026
4c4b668
Add new Panini projection parameters to Vulkan renderer
timfox Feb 19, 2026
ef7c6ad
Enhance Vulkan shader functionality with circle blending and gamma sh…
timfox Feb 19, 2026
f14fdec
Enhance Vulkan renderer with LTC support and post-processing improvem…
timfox Feb 19, 2026
1d1674d
Add Panini projection enhancements and Vulkan pipeline debug features
timfox Feb 19, 2026
60c4a5f
Enhance FreeType font rendering support in CMake and renderer
timfox Feb 19, 2026
f803a2f
Enhance FreeType font management and Panini console integration
timfox Feb 19, 2026
311dbfa
Update font management and console integration in Vulkan renderer
timfox Feb 19, 2026
4d10a3e
Refactor FreeType font rendering and console management in Vulkan ren…
timfox Feb 19, 2026
cebed1c
Refactor Vulkan renderer and font management
timfox Feb 19, 2026
480dd13
Add r_paniniBrightness variable to Vulkan renderer
timfox Feb 19, 2026
429e988
Enhance Vulkan post-processing pipeline with additional parameters
timfox Feb 19, 2026
7101252
Update Vulkan renderer for enhanced tonemapping and HDR support
timfox Feb 19, 2026
a3fb1bd
Update shader build metadata and add backup files for generated shaders
timfox Feb 19, 2026
bbaf86c
ci: install glslang validator
timfox Feb 19, 2026
873c97d
ci: add glslang validator for ARM
timfox Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ jobs:
sudo rm -f /etc/apt/sources.list.d/azure-cli.list
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get -qq update
sudo apt-get -y install cmake ninja-build libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev libsdl2-dev libopenal-dev libfreetype6-dev lua5.4 liblua5.4-dev
sudo apt-get -y install cmake ninja-build libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev libsdl2-dev libopenal-dev libfreetype6-dev lua5.4 liblua5.4-dev glslang-tools

- uses: actions/checkout@v4

Expand Down Expand Up @@ -316,7 +316,7 @@ jobs:

apt-get -qq update
apt-get install -y make gcc g++ cmake ninja-build
apt-get -y install libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev libsdl2-dev libopenal-dev libfreetype6-dev lua5.4 liblua5.4-dev
apt-get -y install libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev libsdl2-dev libopenal-dev libfreetype6-dev lua5.4 liblua5.4-dev glslang-tools

OUTDIR="${GITHUB_WORKSPACE}/bin"
mkdir -p "$OUTDIR"
Expand Down
80 changes: 80 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,7 @@ endif()

if(USE_FLAC)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/external/src/flac/CMakeLists.txt")
set(BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(BUILD_CXXLIBS OFF CACHE BOOL "" FORCE)
set(BUILD_PROGRAMS OFF CACHE BOOL "" FORCE)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
Expand Down Expand Up @@ -759,6 +760,19 @@ set(EXTERNAL_ZLIB_SRC "${EXTERNAL_SRC}/zlib")
set(EXTERNAL_LIBPNG_SRC "${EXTERNAL_SRC}/libpng")
set(EXTERNAL_GLM_INCLUDE "${EXTERNAL_SRC}/glm")

if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
if(TARGET X11::X11)
set(IDTECH3_X11_LIBS X11::X11)
else()
set(IDTECH3_X11_LIBS ${X11_LIBRARIES})
endif()
set(IDTECH3_X11_INCLUDE ${X11_INCLUDE_DIR})
else()
set(IDTECH3_X11_LIBS "")
set(IDTECH3_X11_INCLUDE "")
endif()

# Add cflux2 external library
if(USE_FLUX)
add_subdirectory(src/external/src/cflux2)
Expand Down Expand Up @@ -1101,6 +1115,42 @@ AUX_SOURCE_DIRECTORY(src/renderers/vulkanrenderer RENDERER_VK_SRCS)
list(APPEND RENDERER_VK_SRCS
src/renderers/vulkanrenderer/utils/mikktspace/mikktspace.c
)
set(VK_SHADER_DIR "${CMAKE_SOURCE_DIR}/src/renderers/vulkanrenderer/shaders")
set(VK_SPIRV_DIR "${VK_SHADER_DIR}/spirv")
set(VK_GEN_DIR "${VK_SPIRV_DIR}/generated")

set(VK_SHADER_DATA_GEN "${VK_GEN_DIR}/shader_data.c")
set(VK_SHADER_BINDING_GEN "${VK_GEN_DIR}/shader_binding.c")
set(VK_SHADER_GENERATED_SRCS ${VK_SHADER_DATA_GEN} ${VK_SHADER_BINDING_GEN})

file(GLOB VK_SHADER_GLSL_FILES
"${VK_SHADER_DIR}/glsl/*.frag"
"${VK_SHADER_DIR}/glsl/*.vert"
"${VK_SHADER_DIR}/glsl/*.geom"
"${VK_SHADER_DIR}/glsl/*.tmpl"
)

set(VK_SHADER_TOOL_SOURCES
"${VK_SHADER_DIR}/tools/bin2hex.c"
"${VK_SHADER_DIR}/tools/bindshader.c"
)

add_custom_command(
OUTPUT ${VK_SHADER_GENERATED_SRCS}
COMMAND "${CMAKE_SOURCE_DIR}/scripts/compile_shaders.sh"
--generated-dir "${VK_GEN_DIR}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
DEPENDS
"${CMAKE_SOURCE_DIR}/scripts/compile_shaders.sh"
${VK_SHADER_GLSL_FILES}
${VK_SHADER_TOOL_SOURCES}
COMMENT "Generating Vulkan shader blobs"
VERBATIM
)

add_custom_target(vk_shaders_autogen
DEPENDS ${VK_SHADER_GENERATED_SRCS}
)
# Suppress shadow warnings for MikkTSpace third-party code
if(MSVC)
set_source_files_properties(src/renderers/vulkanrenderer/utils/mikktspace/mikktspace.c PROPERTIES
Expand Down Expand Up @@ -1132,6 +1182,7 @@ IF(USE_RENDERER_DLOPEN)

ADD_LIBRARY(${RENDERER_PREFIX}_vulkan${RENDEXT} SHARED ${RENDERER_VK_SRCS} ${RENDERER_COMMON_SRCS} ${AUX_SRCS})
TARGET_COMPILE_DEFINITIONS(${RENDERER_PREFIX}_vulkan${RENDEXT} PRIVATE USE_RENDERER_DLOPEN RENDERER_VULKAN)
add_dependencies(${RENDERER_PREFIX}_vulkan${RENDEXT} vk_shaders_autogen)
IF(BUILD_FREETYPE)
target_link_libraries(${RENDERER_PREFIX}_vulkan${RENDEXT} PRIVATE idtech3_freetype)
ENDIF()
Expand Down Expand Up @@ -1162,6 +1213,7 @@ ELSE()
IF(USE_VULKAN)
ADD_LIBRARY(${RENDERER_PREFIX}_vulkan OBJECT ${RENDERER_VK_SRCS} ${RENDERER_COMMON_SRCS})
TARGET_COMPILE_DEFINITIONS(${RENDERER_PREFIX}_vulkan PRIVATE RENDERER_VULKAN)
add_dependencies(${RENDERER_PREFIX}_vulkan vk_shaders_autogen)
IF(BUILD_FREETYPE)
target_link_libraries(${RENDERER_PREFIX}_vulkan PRIVATE idtech3_freetype)
ENDIF()
Expand Down Expand Up @@ -1447,3 +1499,31 @@ ELSE()
TARGET_LINK_LIBRARIES(${CNAME}${BINEXT} PRIVATE m ${CMAKE_DL_LIBS})
TARGET_LINK_LIBRARIES(${DNAME}${BINEXT} PRIVATE m ${CMAKE_DL_LIBS})
ENDIF()

if(UNIX AND NOT APPLE AND IDTECH3_X11_LIBS)
if(IDTECH3_X11_INCLUDE)
target_include_directories(${CNAME}${BINEXT} PRIVATE ${IDTECH3_X11_INCLUDE})
target_include_directories(${DNAME}${BINEXT} PRIVATE ${IDTECH3_X11_INCLUDE})
endif()
target_link_libraries(${CNAME}${BINEXT} PRIVATE ${IDTECH3_X11_LIBS})
target_link_libraries(${DNAME}${BINEXT} PRIVATE ${IDTECH3_X11_LIBS})
endif()

# Deterministic Vulkan shader codegen/check tooling.
# Usage:
# cmake --build <build-dir> --target vk_shader_regen
# cmake --build <build-dir> --target vk_shader_check
find_package(Python3 COMPONENTS Interpreter QUIET)
if(Python3_Interpreter_FOUND)
add_custom_target(vk_shader_regen
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/vk_shader_tool.py regen
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Regenerating Vulkan shader_data.c and shader_binding.c deterministically")

add_custom_target(vk_shader_check
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/vk_shader_tool.py check --ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Checking Vulkan generated shader blobs are up-to-date with GLSL")
else()
message(STATUS "Python3 not found: vk_shader_regen/vk_shader_check targets are unavailable.")
endif()
16 changes: 16 additions & 0 deletions fonts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
This directory hosts the TrueType fonts the renderer uses with `BUILD_FREETYPE`.
Source Sans 3 is downloaded during configure so the console has a modern glyph set.
Place any custom `.ttf` files here and rerun the game; the loader checks `fonts/` before system directories.
This directory contains the TrueType fonts the renderer uses when `BUILD_FREETYPE` is enabled.
Source Sans 3 is downloaded automatically during configuration and serves as the default font for the console/UI.
Drop any other `.ttf` files here if you prefer a different typography; the loader scans `fonts/` before searching system directories.
This directory holds the TrueType fonts used for FreeType font generation.

Source Sans 3 (regular + bold) is downloaded automatically when you configure the project with FreeType enabled. The renderer falls back to those fonts when rendering UI text.

If your environment lacks network access or you prefer different fonts, place replacement `.ttf` files here and rerun the renderer. The font loader will scan this folder before checking system paths.
This folder hosts the TrueType fonts used by the renderer when `BUILD_FREETYPE` is enabled.

Two Source Sans 3 fonts (`SourceSans3-Regular.ttf` and `SourceSans3-Bold.ttf`) are downloaded automatically by CMake when they are missing, so you usually do not need to add files manually.

If you prefer other fonts, place them here and update your UI scripts accordingly. The renderer will pick the first available font in `fonts/` before falling back to common system fonts (DejaVu, Liberation, Arial, etc.).
Empty file added fonts/SourceSans3-Bold.ttf
Empty file.
Empty file added fonts/SourceSans3-Regular.ttf
Empty file.
Loading
Loading