8000 Releases · ec-/Quake3e · GitHub
[go: up one dir, main page]

Skip to content
  • Releases

    Latest Build

    Choose a tag to compare

    @github-actions github-actions released this 05 Nov 00:59
    4b9ee0d

    Commits

    • d95fe08: Disable x86 MINGW32 - deprecated because 32-bit environments are being phased out (KG7x) #452

    2026-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 07:33
    • Client: make sure a local server is ACTUALLY killed before starting demo playback
    • Client: don't warn about g_sync if autoRecord
    • Vulkan: fix texture bind regression on flames map
    • Common: use more explicit hunk memory control, remove CL_ClearMemory()
    • FS: increase \fs_basegame folder limit from 4 to 8
    • FS: always report the filename extension from FS_AllowedExtension()
    • Client: avoid duplicate download URL separator
    • botlib: reject missing jump candidates before midpoint calculation
    • Renderers: give PNG chunk headers byte alignment
    • Sound: use pthread-compatible ALSA callbacks
    • QVM: initialize unused native call arguments
    • Qcommon: match zlib allocator callback signatures
    • FS: validate extension before pointer arithmetic
    • botlib: initialize the complete movement result
    • SDL: include Windows declarations independently of curl
    • Common: validate affinity hex digits before widening
    • Common: preserve affinity expression operators
    • Botlib: preserve the signed chat offset sentinel
    • Common: simplify and use more explicit hunk zone memory management
    • Renderers: apply client-side CM + BSP hunk memory load optimization
    • Win32: set WASAPI thread termination timeout to 10s
    • Win32: fixed WIN32 ARM64 build
    • Client: use named pipes for \video-pipe redirection on Win32
    • Client: allow setting target file extension for \video-pipe via adding "|" suffix ("|mkv" for example) at the end of \cl_aviPipeFormat
    • CM: fixed another tiny precision loss/misprediction on q3dm12
    • CM: fixed precision for curve mesh collisions
    • CM: fix root of MAX_PATCH_PLANES error, reduce definition MAX_PATCH_PLANES to the original value
    • x86: enforce x87 double precision by default for all platforms to unify behavior/IEEE-754 compliance
    • VM_x86: implemented new x87 JIT compiler
    • VM_x86: use more explicit x87 precision/rounding control for better determination
    • VM_x86: corrected NaN-checks for CPUs without fast FPU comparisons
    • VM_x86: optimized some int->float SSE conversions
    • FS: refined filesystem checks (e.g. check extensions of a short source file not whole ospath)
    • QVM: explicitly mark all jump targets with unsafe bit
    • VM_x86: add more const optimizations
    • VM_x86: improve VM_FindSameLoad4()
    • VM_x86: implement instruction length detection for RIP-related offsets instead of using hardcoded values
    • VM_x86: call FlushInstructionCache() for generated bytecode in win32, allocate initial memory with RW permissions instead of RWX
    • VM_x86: fixed out-of-bounds access with macro optimization enabled
    • VM_x86: added more macro optimizations
    • Win32: apply Win key hooks only if key is bound
    • FS: keep qvm-referenced paks always locked
    • FS: reduce simultaneously opened file handle limit to 250
    • FS: refactor/cleanup FS_TouchFileInPak()
    • Misc: raize description limit for Cvar_SetDescription2() from MAX_CVAR_VALUE_STRING (256) to MAX_STRING_CHARS (1024)
    • Vulkan: disabled discard optimization for depth-write shaders
    • Network: fixed incorrect timeout parameter for NET_FlushPacketQueue()
    • Win32: added netmask detection function for ipv4 addresses
    • Vulkan: corrected initial swapchain image layout transition (write-after-read hazard)
    • QVM-JIT: fixed potential clobbering of aliased registers on sign-extension optimizations
    • VM_x86: slightly refactored MACRO_OPTIMIZE and enabled by default
    • ppc64-QVM: zero-extend cached OP_LOAD1/LOAD2 instead of sign-extend
    • ppc64-QVM: honor IEEE unordered semantics for float <= and >=
    • ppc64-QVM: do not clobber an aliased register when reducing a cached load
    • ppc64-QVM: zero-extend cached OP_LOAD1/LOAD2 instead of sign-extend
    • CI: Update deps & fix warns for brew
    • Client: Add CG_KEY_CAPSLOCK_ON cgame trap for Caps Lock latch state
    • Renderers: fixed compatibility with ut43_azurea_b1 map
    • Vulkan: fixed recent SDK validation layer warnings
    • QVM: fixed opStack flush conditions
    • win32: improved forward compatibility for msvc2017 project files
    • FS: block autoexec.cfg and q3config from *.pk3dir
    • ppc64-QVM: debug-only emit-macro range checks + diagnostic data trap
    • ppc64-QVM: tighten CONST_OPTIMIZE immediate-fit check for BAND/BOR/BXOR
    • ppc64-QVM: drop branch-trap data check, always mask in emit_CheckReg
    • aarch64-QVM: split fixed-size MOVXi into emit_MOVXi64
    • ppc64-QVM: clear high bits before data-segment bounds check
    • ppc64-QVM: direct mov_sx_rx via mtvsrws+xscvspdp on POWER9+
    • botlib: fixed BotNextConsoleMessage() argument aligment issues reported by UBSan
    • Sound: fixed heavy sound swapping on ut4_skipjumps_b2 with default soundmegs
    • Sound: fixed \s_list output
    • Add VSX Q_rsqrt with Newton-Raphson refinement
    • Add PPC64 VSX SIMD compiler flags
    • Server: fixed redundant gamestate retransmission
    • Server: refactored/re-applied "delta snapshot developer print fix" + "don't delta from pre-map restart messages"
    • Server: fixed client' gamestate acknowledge state after cURL downloads
    • Server: improved gamestate acknowledge function to be more packet-loss friendly
    • Client: reworked packet retransmission logic to use relative times
    • Cmake: Update regex filter for QCOMMON_SRCS to avoid PowerPC code.
    • QVM: moved x86-specific optimization to the common
    • Win32: removed \in_lagged and related code
    • QVM: fixed/improved MACRO_OPTIMIZE for x86, changed function align to 16 bytes
    • arm64-QVM: implemented avoidance of long conditional branches, code cleanup
    • QVM: corrected RCONST usage with forced data mask
    • ppc-QVM: added more const-optimizations, implemented avoidance of long conditional branches
    • x86-QVM: corrected error functions offsets, code cleanup
    • win32: added description for EXCEPTION_INT_DIVIDE_BY_ZERO
    • QVM: implemented FPU load/store and variable mapping optimizations for PowerPC
    • QVM: various fixes/improvements
      • implemented jump expansions and load/store optimizations for PowerPC
      • implemented empty function optimization for armv7l
      • replaced explicit color codes with corresponding warning/error defitions
      • reset proc_len at empty function detection
      • fixed SX/RX definition typo in vm_optimize.h
    • Renderers: set correct shader time on 3D->2D transition
    • QVM: slightly optimize scalar loads from syscall returns
    • Common: reworked/simplified free block search for zone memory allocator and reduced overhead
    • Server: do not rate-limit local client
    • Fix OpenGL1 renderer failed to init
    • Server: correct entity number for BotImport_EntityTrace()
    • Server: correct entity numner for SV_Trace() as well
    • QVM: Skip VM syscall array bounds check if DLL is used
    • Common: Simplify RotatePointAroundVector()
    • QMV: Add missing CG_CM_MARKFRAGMENTS syscall bounds checks
    • Sound: Validate entity number passed to sound functions
    • FS: Forbid reading/writing negative amount of bytes
    • FS: Check FS_Read() return values in various subsystems
    • Common: Use buffer size safe string functions where possible
    • Server: Fix potential integer overflow in sv_filter code
    • Renderers: Fix some minor PVS handling issues
    • Renderers: Fix broken MD3 LODs registration
    • Server: Harden game syscall argument validation
    • Renderers: Harden BSP structure validity checks
    • Renderers: Harden IQM, MD3 header validity checks
    • QVM: Harden QVM header validity checks
    • Botlib: Validate AAS file structure, Validate botlib vars range
    • Botlib: Validate AAS_UpdateEntity() argument
    • Botlib: Clean up botlib memory allocation code.
    • QVM: apply generic (OP_LOAD + sign extendsion + OP_CONST + OP_EQ/OP_NE) optimization instead of platform-specific ones
    • CI: Fix warn to update actions to Node24
    • x86-QVM: implemented literal pool for FP immediates, implemented per-function jump compression
    • QVM: added more optimizations for PowerPC JIT
    • QVM: added basic const-optimizations for powerpc, fixed reduce_map_size() for BE systems
    • QVM: utilize shared optimization framework for PowerPC bytecode compiler, estimated speedup is ~2x for now
    • QVM: moved all platform-independend opStack/register optimizations to a separate header file
    • QVM: refactored x86/armv7l/aarch64 bytecode compilers to utilize new optimization framework
    • Makefile: added detection for aarch64 over 32-bit runtime environments like RPi4b + Debian Trixie armhf
    • Win32: somewhat improved support for arm32 platform
    • Huffman: reduced internal buffer sizes
    • OpenGL: use GL_ARB_texture_border_clamp unconditionally if available
    • OpenGL: Do not use VBO or per-pixel lighting without ARB shaders
    • OpenGL: Prevent using merged lightmaps without GL_ARB_texture_border_clamp
    • Renderers: fix drawSurf->sort typo in RB_RenderDrawSurfList()
    • Vulkan: print note about buggy drivers
    • Misc: define S_COLOR_DEVEL/S_COLOR_WARNING/S_COLOR_ERROR, replace some definitions as well
    • QVM: slightly optimize syscallCount handling
    • x86-QVM: use divss instead of divps for OP_DIVF to avoid triggering "Invalid Operation" bit
    • Server: Add syscall overflow detection to prevent VM infinite loops
    • Wire up max_routingcache cvar to routing cache eviction logic
    • Renderers: Fix NULL pointer dereference in RE_Shutdown when renderer interface is not initialized
    • Fix CMake renderer library naming to omit 'lib' prefix
    • QVM: Add Power ISA 2.07/3.0 JIT optimizations to vm_powerpc.c
    • Misc: Fix RENDERER_DEFAULT double-quoting in Makefile and CMakeLists.txt
    • QVM: Add ppc64 big-endian (ELFv1 ABI) JIT support to vm_powerpc.c
    • Make, CMake: Add ppc64 (PowerPC 64-bit BE) architecture support
    • QVM: Add PPC64le JIT compiler (vm_powerpc.c)
    • 8000
    • Make, Cmake: Add ppc64le (PowerPC 64-bit LE) architecture support
    • x86-QVM: use movss instead of movd for explicit FP register initialization on old SSE1-only CPUs
    • Renderers: fix dlight regression and optimize shaders on simpsons_q3 map
    • Renderers: unlock \r_flareSize and limit its range to [1..40]
    • SDL: sync modifier keys with SDL state
    • Win32: use GetKeyState() instead of Ge...
    Read more

    2025-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 11:56
    • Client: increase default \cl_maxpackets to 125
    • Client: search for modular renderers nearby main executable oly
    • Server: reset \sv_maxclients modified flag after startup
    • Server: improved gamestate acknowledge function
    • Server: don't allow active clients to start downloads
    • Win32: use GlobalMemoryStatusEx() on modern platforms for Sys_LowPhysicalMemory()
    • Win32: try to minimize game window at break point, useful when debugging from full-screen crashes
    • Win32: unregister exception handler to avoid recursive errors on exit()
    • SDL: paste text on CMD-v for MacOS
    • Sound: print messages about missing sounds in developer mode only
    • FS: allow scanning external directories recursively via FS_MATCH_SUBDIRS flag, enabled for cfg and demo files completion
    • FS: sort mod list, strip ending newlines in mod descriptions
    • FS: fixed crash on directory traversal pattern match
    • FS: reworked FS_LoadLibrary() to use predefined search paths only, not referencing current game dir anymore
    • Makefile: disable unsafe FP optimizations for QVM modules (mostly for interpreter) to be IEEE754-compliant when handling NaNs
    • QVM: reuse rounded up data segment space for extra pStack if possible
    • Renderers: simplify tr.sinTable initialization
    • Renderers: increase default geometric detail on characters and patches
    • Renderers: implement \r_teleporterFlash cvar
    • Renderers: correct tcMod transform for indexed lightmaps with \r_mergeLightmaps enabled
    • Renderers: fix grates on map tscabdm3
    • Renderers: reworked lighting stage detection to fix all known issues
    • Renderers: added support for dlight shader stage keyword to override stage used for dlight pass, available in .shaderx files
    • OpenGL: perform alpha tests after vertex color multiplication in VBO shaders
    • Vulkan: fix wrong semaphore state at buffer resize
    • Vulkan: use dedicated descriptor layout for flare test pipeline to reduce generic pipeline layout size from 6 to 5
    • Vulkan: fix missing texture bound for \r_showNormals 1
    • Vulkan: handle glConfig.textureEnvAddAvailable as well, similar to OpenGL renderer
    • Vulkan: enabled USE_BUFFER_CLEAR by default, optimized related code paths
    • Vulkan: implemented (a sort of) \r_finish functionality
    • Vulkan: check whenever vk_clear_color() can be used at all, avoid using it for \r_showImages
    • Vulkan: separate swapchain image acquisition from fence wait
    • Vulkan: do not mipmap images with 1-pixel width or height
    • Vulkan: don't do double image upload on scratch image creation, misc.code cleanup
    • Vulkan: handle VK_ERROR_OUT_OF_DATE_KHR more properly during swapchain acquisition
    • Vulkan: added VK_PRESENT_MODE_FIFO_LATEST_READY_EXT definition
    • Vulkan: do not print presentation info at swapchain restart
    • Vulkan: use dedicated rendering finished semaphore for each swapchain image
    • Vulkan: use larger staging/geometry buffers by default if possible

    2024-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 07:50

    14-Oct-2024:

    • Common: improved wait command handling, now it will wait exact amount of client/server frames
    • Common: allow src and dest buffers to be overlapped in Q_strncpy() for QVM compatibility reasons
    • Common: Use nanosleep(2) instead of usleep(3) - usleep(3) was declared obsolete in POSIX.1-2001 and removed in POSIX.1-2008 and nanosleep(2) was recommended to be used instead.
    • Server: cache sv_maxclients value to avoid potential crashes caused by VMs changing it at runtime
    • Server: save latched sv_pure state to dedicated variable
    • Server: suppress false hitch warning during map load
    • Server: reworked/optimized gamestate retransmission/acknowledgment
    • Server: don't change serverid during map restart
    • Server: don't spawn loading clients during map restart
    • Server: fix server resource leaks during client reconnect
    • Client: rewrote CL_WritePacket() to allow proper packet duplication - which was intended by multiple function calls before
    • Client: Strip \cl_aviPipeFormat
    • Win32: report actual color bits and correct PFD count
    • X11: request alpha bits for >=24 bit color profiles
    • Docs: Create quake3e.md, update quake3e.htm
    • Vulkan: increase MAX_IMAGE_CHUNKS from 48 to 56
    • Vulkan: added missing texture mode setup in GL_SetDefaultState()
    • Vulkan: disabled \r_ext_alpha_to_coverage for now due to rendering artifacts on beyond4-wfa map
    • Vulkan: do not set transient flag for depth/stencil attachment when bloom (and thus - post-bloom pass) is enabled
    • Vulkan: fix screenmap image layout transitions
    • Vulkan: re-create swapchain on VK_SUBOPTIMAL_KHR as well
    • Vulkan: improve flare visibility test code
    • Vulkan: fixed various image layout transition synchronization issues
    • Vulkan: applied fixes to some "Best Practices" validation layer errors
    • Vulkan: add \r_bloom_threshold_mode and \r_bloom_modulate cvars, similar to OpenGL renderer
    • OpenGL: allow all static tcGens/tcMods for VBO/environment mapping (assuming that we have all tcMod corrections applied before)
    • Renderers: use glConfig.stencilBits instead of dereferencing \r_stencilbits cvar
    • Renderers: apply lightmap texcoord correction only if lightmap is actually set
    • Renderers: apply additional lightmap texcoord corrections when needed
    • Renderers: do not merge single lightmap
    • Filesystem: allow multiple basegames in fs_basegame cvar separated by '/'
    • Filesystem: reset fs_basegame cvar to last separated item
    • Makefile: fix grep warnings in macOS builds
    • macOS: app will search for pk3 inside and next to the app bundle
    • Use SDL_WINDOW_FULLSCREEN_DESKTOP on macOS

    2023-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 18:34

    14-Oct-2023:

    • Added many CVAR descriptions
    • Added \vid_restart fast - to perform fast \vid_restart in current gfx context
    • x86: print CPU brand string if available
    • Fixed spurious bound action on +vstr key releases
    • Fix stuck binds in some cases
    • Misc: try to apply map-depending configuration from cvar \cl_mapConfig_<mapname> cvars
    • com_affinityMask: allow handy binding of P/E cores on Intel's x86, added support for hexadecimal notation and '+'/'-' operators
    • Sound: added ogg-vorbis support
    • Sound: Use more precise conversion for fp32le sound buffers
    • Sound: re-enable sound-mixing asm in MSVC solutions
    • Renderers: Fix jumppads shaders on q3wcp14
    • Renderers: fix incorrect ovebright bits displayed at startup
    • Renderers: Fix clamp to edge detection
    • Renderers: allow using *lightmap<num> images in shaders
    • Renderers: fix potential crash in FixRenderCommandList()
    • Renderers: make sure that merged lighmaps fits well into reported max. texture dimensions
    • Renderers: make sure that we always configure dst blend bits
    • Renderers: fix bloom latch state when switching back to opengl from vulkan
    • Renderers: use more reasonable default backend color
    • Also fix \screenshot levelshot taking not factoring scaled capture screen sizes.
    • Vulkan: fix dlight regression on q3dm1
    • Vulkan: added some color-input optimized shaders, should improve FPS by up to 10% in bandwidth-limited cases (iGPUs)
    • Vulkan: rebind indexes after legacy dlight pass before fog pass
    • Vulkan: skip color/tex gen only if previous stage was not optimized and really calculated color/tex data
    • Vulkan: fix depthFragment shaders in fog, allow fog-collapse for non-world shaders
    • Vulkan: allow more color optimizations, with and without fog
    • Vulkan: added entity-color optimization for single-stage shaders
    • Added support for ppc64/ppc64le platforms
    • Fix buffer overflow with \fdir cmd and file argument command completion
    • Added \cl_drawRecording cvar to disable or make "RECORDING" demo message shorter
    • Github-Actions: run linux builds on Ubuntu-20.04 for binary compatibility reason
    • Win32: fixed crash on win11-x64/msvc during longjmp()
    • Win32: fix potential null-pointer dereference in ExceptionFilter()
    • Msg: check for error before checking value to avoid false-positive results
    • Network: Use uint32_t as scope_id for ipv6 connections
    • Server: fix formatting for some connection states in \status output
    • Server: fix host player being dropped in TA SP
    • cURL: updated prebuilt libraries and headers to version 8.4.0
    • cURL: increase maximum buffer size
    • cURL: fix deprecated warnings on modern versions
    • vm_x86: convert "add reg, 128" to "sub reg, -128" to use 1-byte immediate value
    • Fix & backport recent joystick code from ioq3
    • Fix Info_RemoveKey() deleting only first key
    • Fix info string trailing key issue
    • Made rsqrt optimization hint really work
    • Common: try to init logfile cvar as early as possible
    • Stop using acstime for logfile date/time
    • Cleanup Makefile

    2022-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 17:25

    14-Oct-2022:

    • preserve \cl_reconnectAgrs between online mod changes
    • fixed nested cgame command execution
    • renderers: avoid potential division-by-zero for AGEN_PORTAL
    • CMake: numerous improvements
    • Vulkan: updated SDK headers, applied potential fix for molten-vk compatibility
    • server: do not enforce non-zero level times at startup, for mod compatibility
    • SDL2: fix escape key not sending a char event
    • Vulkan: fixed insufficient attachment pool size for extreme case (antialiasing + supersampling + hdr + bloom)
    • Vulkan: fixed error at \snd_restart (REF_KEEP_WINDOW context)
    • video-pipe: use full (pc) color space and do not enforce particular rate for output audio stream
    • OpenGL: setup TMU information in R_InitExtensions() to avoid potential errors with KEEP_WINDOW flag
    • Implemented \in_forceCharset for SDL backend
    • Renderers: fixed non-working \r_ignorehwgamma, \r_overbrightbits now can operate independently from \r_ignorehwgamma in some cases
    • Vulkan: handle special DRM/KMS case (FIFO+maxImageCount==0), use 4 swapchain images for that
    • Fixed missing video/audio frames during multi-segment avi rendering
    • Fix client forgetting password when it is set in main menu
    • Renderers: make sure that R_ColorShiftLightingBytes() is not picking more data that we actually need/have
    • SDL2: fixed crash when some cvars (like \in_keyboardDebug) may be dereferenced before initialization, unified that behavior with win32 backend
    • Better support for non-standard protocols (71-compat etc.)
    • Vulkan: use minimal VkApplicationInfo at instance creation
    • Vulkan: disable anisotropy for nearest-sampling modes
    • win32: show/hide mouse cursor only if it has been not suppressed by OS
    • Added con_autoclear cvar
    • Added \kicknum, \kickall, and \kickbots commands, patch by Ensiform
    • Always keep bots, even with \devmap
    • Allow 8x multisampling in traditional (non-framebuffer) MSAA
    • Improve the default texture quality settings:
      • Use the highest texture quality
      • Use 8x anisotropic filtering by default
    • Renderers: make sure that amplitude for TMOD_STRETCH is not zero
    • Fixed stack overflow in \varfunc
    • Fixed potential out-of-bounds access caused by large s_paintedtime
    • Added \con_scale - to scale console font size relative to default smallchar width/height
    • Fixed erroneous gamma setup in windowed mode
    • Handle negative color shift that caused black lightmaps
    • Use differential time and interval comparisons whenever possible
    • Various botlib and QVM fixes
    • Vulkan: mark offscreen rendering unavailable for NVidia on linux too

    2021-10-14

    Choose a tag to compare

    @ec- ec- released this 14 Oct 16:56
    • Filesystem: close all handles when switching to other game directory
    • Sound: fixed potential division-by-zero in S_GetSoundTime() in case of failed DirectSound initialization, reworked shutdown functions
    • Unix: output only printable chars in console
    • SDL: removed archive flag for \in_nograb
    • QVM: added more optimizations, removed unsafe x86 optimizations with disabled VM_RTCHECK_DATA
    • QVM: always force either range checks or data mask operations

    2021-07-20

    Choose a tag to compare

    @ec- ec- released this 20 Jul 17:55
    • vm_x86: implemented new bytecode compiler with dynamic register allocation and many optimizations similar to aarch64/armv7l, brings ~2x performance increase
    • vm_aarch64, vm_armv7l: added more optimizations, yields another ~40% performance increase
    • win32: allow copying selected text from dedicated console via keyboard shortcuts
    • win32: fixed input regression caused by previous fix for high-dpi mice in win10 insider builds
    • win32: fixed application crash caused by hardened longjmp() in recent win10 versions
    • win32: fixed broken minimize function after \vid_restart

    2021-05-27

    Choose a tag to compare

    @ec- ec- released this 27 May 18:23
    • QVM: more correct hanling of NaNs in bytecode compilers
    • QVM: fixed non-working RocketArena3 server code
    • Cvars: avoid misleading warnings when changing ROM variables
    • Cvars: allow override "protocol" from command-line
    • Sound: reduced lag during video capture
    • SDL2: (somewhat) fixed non-working console key for non-US keyboard layouts
    • Vulkan: fixed some broken debug features
    • Vulkan: fixed resource leaks and incorrect layout transitions during image capture
    • Vulkan: avoid redundant scissor updates
    • Vulkan: use correct texture bundle for lighting, use static uniform location to avoid pushing garbage from stack variables
    • Vulkan: fixed crash with \r_showtris 1 and \r_fastsky 1, fixed environment shader selection
    • OpenGL: fixed crash with \snd_restart
    • Do not light up shaders whose sort comes after insertion point (SS_FOG)
    • Unified gamma correction between OpenGL and Vulkan renderers

    2021-03-28

    Choose a tag to compare

    @ec- ec- released this 28 Mar 13:41
    • Vulkan: implemented super-sample anti-aliasing, can be enabled via \r_ext_supersample 1, requires \r_fbo 1
    • Vulkan: added \r_presentBits to support HDR monitors, added \r_dither to control dithering in such cases
    • Vulkan: added more multitexturing optimizations
    • OpenGL: fixed incorrect image capture with supersampling and renderscale enabled
    • OpenGL: fixed texture generation for environment-mapped shaders in VBO
    • OpenGL: disable bloom if multitexturing was disabled via \r_ext_multitexture 0
    • Renderers: dereference $vid_width and $vid_height to actual rendering width/height inside extended shaders
    • Win32: fixed crash on nvidia systems when using Vulkan renderer and Win+D hotkey
    • Win32: fixed accidental focus losses when using high-dpi mice
    • Win32: fixed non-working \in_minimize in windowed mode
    • Win32: catch rare DescribePixelFormat() crash
    • Fixed error raised by messagemode 3/4 called without running cgvm
    • Fixed another crash in FixRenderCommandList()
    • Fixed potential crash with fog table
    • Allow \reconnect to work after client restart
    • Added warnings in developer mode to know why and when a sound isn't played
    • Added \r_dlightSaturation
    • Unlocked \r_lodCurveError
    • Check integrity of loaded maps and models
    • SDL2+Wayland compatibility fixes
    • Various fixes and improvements
    0