Skip to content

Fixes - #2

Open
toymak3r wants to merge 66 commits into
FromAbyssStudio:masterfrom
andrei-drexler:master
Open

Fixes#2
toymak3r wants to merge 66 commits into
FromAbyssStudio:masterfrom
andrei-drexler:master

Conversation

@toymak3r

Copy link
Copy Markdown
Member

No description provided.

@toymak3r toymak3r self-assigned this Oct 30, 2025
jjelliott and others added 25 commits November 12, 2025 23:02
Changes `r_md5` to `r_enhancedmodels` and adds a second cvar
`r_enhancedmodels_priority` with a comma separated value for loaders to
use, allowing for further extension in the future.
due to invalid derivatives in pixel quads containing discarded pixels
caused by cubemap textures storing pointers to stack data
by decoding normals in the vertex shader
by decoding positions in the vertex shader
MDL code needed to be able to remap both the original vertex and a version of it with an UV seam adjustment applied. Since seam adjustments are not needed for MD3, we can use a smaller remapping table.
Needed for the invoker on NV now that vertices are only 8 bytes, which is smaller than the SSBO alignment requirement (16 bytes).
(e.g. when SCR_ModalMessage is called)
MDL/MD3 blend shape data is now first split by frame, then by surface.
This allows us to bind buffers per model, instead of per surface.

Other changes:
- MD5 bone pose data is only allocated once, for the main surface, rather than duplicated for all surfaces
- removed numboneposes field and reused numposes, since MD5 models don't support blend shapes
- removed MD3-specific uniforms; the only difference now between MDL and MD3 is vertex decoding
- corrected allocation size in Mod_LoadMD5MeshModel
New command "enable alt modifier". When bound to a button/key, all
other buttons turn from K_x_BTN to K_x_BTN_ALT, allowing 2 bindings
on the same button, one with the 'alt' pressed and one without.
If K_x_BTN_ALT is not bound, it will use the bind from K_x_BTN as
fallback, if exists.
Some BSPs, such as [Mcmdm04.bsp](https://www.quakeone.com/qrack/maps/Mcmdm04.bsp) and [Jvoxdm3.bsp](https://www.quakeone.com/qrack/maps/Jvoxdm3.bsp) don't contain a NUL terminator.
They happened to work previously because Hunk_Alloc rounds up the buffer size to a multiple of 16, which gives the subsequent buffer zeroing a high (but not 100%) chance of appending a NUL terminator.
Removing the otherwise redundant zeroing lead to spurious parse errors, depending on the existing contents of the padding.
by also overriding fopen for stbiw, not just lodepng
since there are cvars/menu options now for the quit confirmation prompt (cl_confirmquit) and startup demos (cl_startdemos), and the remaining differences (engine pak loading and scoreboard format) aren't worth maintaining a separate code path

Notes:
- the engine pak is much lighter compared to QS (no custom console background or ent files), so skipping it just disables UI features that rely on custom gfx (levels/mods menus) and the default.cfg override
- the QS scoreboard format doesn't include elapsed time, so now we force enable the separate clock display (normally controlled by scr_clock) for as long as TAB is pressed
Fixes crash with incorrect bone count for progs/ogre_rocket.md5anim from MG3 (2026 update)
controlling the scale of r_showfields/r_showbboxes text

Default value: 2.0
When mg3 is used with original (not rerelease) id1 data `scr_usekfont` doesn't get set to 1 in quake.rc. However, the mg3 start map has text that relies on word wrapping, which we only enable when scr_usekfont is 1 in order to avoid introducing further compatibility issues.
Useful for distinguishing internal strings from external ones
from ~2.8ms down to ~0.4ms on a map with 2048 grunts on a 7800x3d
Note: no support for loc_XXX_mod.txt at the moment
When using the classic HUD with a scale factor that makes it take up the entire available space, having the FPS and elapsed time in the bottom-right corner (as opposed to top-right with all the other HUD styles) can lead legibility issues due to the text overlapping the TAB scores popup (particularly the secrets display).
Zfix was previosly disabled for static entities (e.g. func_illusionary) to prevent potential interference with decals (such as the ones at the beginning of qbj2_fw). However, there's a translucent static entity in mg3/map7 near (-152 2197 856) 6 214 0 (god rays) that requires the fix, so the static entity exclusion now only applies to alpha-tested textures.

Note: this might not be robust enough if there are maps with entities that mix solid and alpha-tested geometry and also require zfix for both kinds of surfaces...
by requiring certain items to be present (files without them are ignored, use developer 1 for details) and removing unintentional support for blank likes as separators (now only the explicit "-" form is supported)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants