Commit graph

3518 commits

Author SHA1 Message Date
Denis Pauk
3db882c6c8 renders: little bit revert pvx load code
Use additional checks from previous renders/files/pcx load code.
2024-07-06 18:52:01 +03:00
Denis Pauk
ac2a50cb4a soft: scale model texture s,t values
ref_gl renders use 0.0..1.0 float texture coordinates in gl commands
and skin ratio/resolution could be any.
ref_soft render uses absolute coordinates as result textures with
different to expected size are applied incorrectly.

Fix will not add support of scalled retextured skins, just fix case
when ratio is incorrect after scale down such or place a incorrect
pcx skin to the model directory.
2024-07-06 16:48:20 +03:00
Denis Pauk
79c71c7a68 soft: get rid unused R_PolysetUpdateTables 2024-07-06 16:41:52 +03:00
Denis Pauk
bfeb842bd3 pcx: fix support of bytes_per_line
https://github.com/yquake2/yquake2/issues/1119
2024-07-06 16:32:45 +03:00
Denis Pauk
c5841b7c2f pcx: fix support of bytes_per_line
https://github.com/yquake2/yquake2/issues/1119
2024-07-06 15:04:37 +03:00
Denis Pauk
50de5e091a renders: move m32 load to vid/image code 2024-07-06 15:03:57 +03:00
Denis Pauk
ce37d4b748 renders: move swl load to vid/image code 2024-07-06 15:03:57 +03:00
Denis Pauk
4c9a04efc5 Merge remote-tracking branch 'yquake2/master' 2024-07-06 14:27:25 +03:00
Yamagi
3f6a0a3689
Merge pull request #1118 from devnexen/few_more_build_chg
fix few warning builds.
2024-07-06 09:50:37 +02:00
Yamagi
af5a876be4 Fix a typo. 2024-07-06 09:20:04 +02:00
David Carlier
a8a15ddff3
fix few warning builds. 2024-06-30 23:07:03 +01:00
Denis Pauk
689950068a soft: fix model skin textures
Soft render still uses downscalled skins and wall, code fixes case
when skin(s,t) size defined in model is slightly different to real
skin dementions. Code checks skin size in model and image asset size
and scale.
2024-06-30 23:30:32 +03:00
Denis Pauk
96b8707825 Merge remote-tracking branch 'yquake2/master' 2024-06-30 23:06:16 +03:00
Denis Pauk
25fa88ca9b renders: load swl as paletted image 2024-06-30 23:05:44 +03:00
Denis Pauk
161f703b90 renders: scale pcx before use 2024-06-30 23:05:35 +03:00
Denis Pauk
23ff8f6dea soft: update light code 2024-06-30 23:05:24 +03:00
Denis Pauk
214556728d renders: rename MAX_LBM_HEIGHT to MAX_LBM_WIDTH 2024-06-30 23:05:13 +03:00
Denis Pauk
e4849dc9d4 soft: remove unused R_PolysetUpdateTables 2024-06-30 23:03:21 +03:00
David Carlier
d0dc3e9926
micro optimisations for previous security mitigations.
also strtok_r uses its own provided buffer instead of the static one
even in a somewhat monothread context, it s still better.
2024-06-30 17:08:45 +01:00
Denis Pauk
ec36e98712 renders: replace paletted color with rgb 2024-06-25 00:00:23 +03:00
Denis Pauk
e07cec2e13 renders: skip unused colormap allocation 2024-06-24 16:17:19 +03:00
Yamagi
1a1b32961b Refactor the download filter.
The first try didn't take into account that an evil server could
override the filter list by sending a stuff command. Fix this by
hardcoding the filters for .dll, .dylib and .so. Make sure that the
filters are always applied, either when the download is requested
through the `download` command or because game data is missing.

This is just a poor mans fix, trying to rule out an obvious way to
inject code into the client.
2024-06-24 11:56:11 +02:00
Denis Pauk
623b003f6f client: use rgb color in cparticle_t 2024-06-24 00:55:42 +03:00
Denis Pauk
3121849500 client: use rgb color in particle_t 2024-06-24 00:46:12 +03:00
Denis Pauk
bcda8cccaf vid: cache colormap 2024-06-23 19:16:35 +03:00
Denis Pauk
4268fedce0 filesystem: fix maps autocomplete for Anachronox 2024-06-23 19:15:34 +03:00
Denis Pauk
6a3859cd9e renders: sync readfile_t type with FS_LoadFile
Usage of FS_LoadFile as readfile_t is unsupported for now as requires
usage FS_FreeFile instead just copy of file content.

Fixes memory leak for sin models load.
2024-06-23 13:19:09 +03:00
Denis Pauk
d15bb81e58 Merge remote-tracking branch 'yquake2/master' 2024-06-22 23:57:29 +03:00
Yamagi
852cec05e7 Filter .., :, / and \\ from al_driver and cl_libcurl.
This is a poor mans safeguard against malicious server trying to
download and inject libraries.
2024-06-22 17:22:22 +02:00
Yamagi
468f90ad48 Implement a simple download filter.
`cl_nodownload_list` is a whitespace seperated list of strings, files
containing one of these strings in their name are never downloaded. Set
to `.dll .dylib .so` by default to prevent downloading libraries which
can be injected into client.

Closes #1114.
2024-06-22 16:56:42 +02:00
Yamagi
93178d0f6b Implement a Q_strcasecmp() library replacement function.
It will be used in a later commit. While at it change Q_strcasecmp() and
Q_strncasecmp() to take the arguments as const, matching the signatures
of the non-replacement versions.
2024-06-22 16:47:19 +02:00
Denis Pauk
330b1352fb Add macos test build on release tag 2024-06-22 17:35:25 +03:00
Denis Pauk
a06c0703a7 renders: share palette load by refimport_t 2024-06-22 14:06:14 +03:00
Denis Pauk
1ce49294e7 renders: reuse VID_ImageDecode 2024-06-22 12:09:35 +03:00
Denis Pauk
9f84e40ab7 cin: move image load to separate file 2024-06-22 12:09:35 +03:00
Denis Pauk
212ea58f83 models: fix flex model load 2024-06-16 15:20:28 +03:00
Denis Pauk
0273d6ba06 Merge remote-tracking branch 'yquake2/master' 2024-06-16 13:16:35 +03:00
Denis Pauk
97f207e230 maps: cleanup maptype cvar code 2024-06-12 23:52:48 +03:00
Denis Pauk
e7dc4f3b2c menu: Fix default NULL 2024-06-11 23:28:50 +03:00
Denis Pauk
28aeb68826 menu: show weapon in player model preview 2024-06-08 23:36:57 +03:00
Denis Pauk
8fd8c2b546 menu: support long player skin name 2024-06-08 23:21:00 +03:00
Denis Pauk
1775874418 Merge remote-tracking branch 'yquake2/master' 2024-06-08 22:47:14 +03:00
Yamagi
41e9b46358
Merge pull request #1110 from protocultor/gyro_tightening
Gyro tightening
2024-06-08 19:09:53 +02:00
Jaime Moreira
c842ab806f Remove fruitless glBindTexture() calls
...when there are no SURF_DRAWTURB surfaces to draw.
2024-06-06 18:23:26 -04:00
Jaime Moreira
5b44620c0e Correct OpenGL boolean flags. 2024-06-05 23:17:52 +03:00
Denis Pauk
d3bf7368c4 models: add models normal fix
If model has only zero notmal, update model with normal recalculate.
2024-06-05 22:59:54 +03:00
Denis Pauk
ec8b792a4b renders: use three bytes for save model normal 2024-06-04 23:47:48 +03:00
Jaime Moreira
24b03b61f8 Gyro tightening
A practical way to avoid a noisy gyro signal, or shaky hands.
Unlike a deadzone, inputs below the threshold are "squeezed towards
zero", so they are not completely ignored. Source:
http://gyrowiki.jibbsmart.com/blog:good-gyro-controls-part-1:the-gyro-is-a-mouse#toc9
2024-06-04 15:48:42 -04:00
Jaime Moreira
0e63bad7d9 Sliders and gamepad buttons refactor
Same logic with less code.
2024-06-04 15:18:37 -04:00
Jaime Moreira
d2b0ebd522 Correct OpenGL boolean flags. 2024-06-04 15:10:41 -04:00
Jaime Moreira
6869d7dddd GL1 multitexture combine removed
Applied too many OpenGL calls for an effect that could not be told
apart from normal GL_MODULATE; explains its absence from Q3A code.
Also, removed calls to glPixelStorei when no dynamic lights present.
2024-06-04 14:59:05 -04:00
Jaime Moreira
c68ffec274 GL1 multitexture bugfix
With "hand 2" and no "alias" models in player sight, sometimes only
lightmap was visible. Now forcing disabled multitexture when needed.
Another bugfix: "gl_showbbox 1" no longer produces OpenGL errors.
2024-06-04 14:53:25 -04:00
Denis Pauk
88bb466f1e renders: use dot product of shadevector and normal directly 2024-06-04 20:01:23 +03:00
Denis Pauk
a9219192e0 menu: show player weapon model in preview 2024-06-01 16:18:42 +03:00
Denis Pauk
acea97c16f menu: fix cppcheck warnings 2024-06-01 13:47:58 +03:00
Denis Pauk
36242bd254 menu: extend player model and skin name to MAX_QPATH 2024-06-01 13:00:11 +03:00
starfrost013
e160691fec Fix potential memory corruption issue where cl_numparticles is 0 and CL_ClearParticles is called. 2024-05-29 15:41:12 +01:00
Denis Pauk
7f47af1371 Version bump 2024-05-28 22:36:48 +03:00
Denis Pauk
faf86b72c5 GL1 big lightmaps and scrap
https://github.com/yquake2/yquake2/pull/1108

Merge remote-tracking branch 'yquake2/master'
2024-05-27 08:41:53 +03:00
Denis Pauk
e00ab4ffde game: fix save of quake monsters 2024-05-15 00:43:42 +03:00
Denis Pauk
5709e2c746 game: quake1 monsters, use defines instead frame number 2024-05-12 13:43:27 +03:00
Denis Pauk
75b05838a1 game: use defines for DOOR_ANIMATED and DOOR_ANIMATED_FAST
Based on:
 * https://github.com/id-Software/quake2-rerelease-dll/blob/main/rerelease/g_func.cpp
2024-05-12 13:27:06 +03:00
Denis Pauk
d08500643d maps: provide in and our lump position to convert lump function
Replace some of convert function to byte copy and long copy.
2024-05-12 13:27:06 +03:00
Denis Pauk
33a3aed03e GL1 multitexture
Merge changes from https://github.com/yquake2/yquake2/pull/1103
Merge remote-tracking branch 'yquake2/master'
2024-05-12 12:55:53 +03:00
Denis Pauk
1eb55aa3de renders: lightmap generation, trust caller about size of provided buffer 2024-05-12 12:04:46 +03:00
Jaime Moreira
0f307cc9c1 GL1 scrap/atlas configurable size
Controlled by gl1_biglightmaps cvar, works like new lightmaps.
Max size is 384x384; a bigger size is not justified.
Added a transparent border so colors from one picture don't bleed
into the next.
2024-05-11 18:20:13 -04:00
Jaime Moreira
81fd2c1027 Increased lightmap size in GL1
Controlled by new cvar, gl1_biglightmaps.
Size is now up to 512x512, for a max quantity of 8 lightmaps.
Should reduce rebinding of them, and reduce the number of calls
to glTexSubImage2D(), although it may increase data transfer on
each call.
2024-05-11 18:18:28 -04:00
Jaime Moreira
a8824972db Fixed potential game crash at shutdown
Only happens in Windows. A cvar was being queried just after
all cvars were freed, in Qcommon_Shutdown().
GL_GENERATE_MIPMAP definition relocated.
scrap_uploads counter deleted, it wasn't being read anywhere.
2024-05-11 18:16:38 -04:00
Denis Pauk
d3239738e9 Merge commit '3faa3db1'
Partial merge of https://github.com/yquake2/yquake2/pull/1103
2024-05-12 00:17:49 +03:00
Yamagi
b401846ce6
Merge pull request #1103 from protocultor/gl1_multitexture
GL1 multitexture
2024-05-11 16:28:39 +02:00
Denis Pauk
44afb2e91b maps: support IDBSP format without ident 2024-05-09 23:42:27 +03:00
Denis Pauk
cfd1e5f346 renders: fix parse of SiN def format
Some of files could have name of animation and skin, but some of files
does no have naming of action and textures. Search include file by extention
instead use name + filename format.
2024-05-08 01:42:35 +03:00
Denis Pauk
eff91e34c0 renders: check for SiN format in player models 2024-05-08 01:42:21 +03:00
Denis Pauk
9145c0a923 renders: additional validation cleanups for SiN 2024-05-08 01:41:46 +03:00
Denis Pauk
13e1df2bda renders: inital support of SiN def/sbm/sam load
Added only file format support without model overwrite.

Based on https://web.archive.org/web/20001212060900/http://starbase.neosoft.com:80/~otaku/program.html
2024-05-08 01:41:14 +03:00
Denis Pauk
e463721665 maps: Use LUMP defines instead numbers in rules 2024-05-05 15:55:23 +03:00
Denis Pauk
1b73b4ea5b maps: move IBSP to QBSP code to separate file 2024-05-05 12:36:14 +03:00
Denis Pauk
dbc7a5fbe5 maps: prepare code for use formats with different position of lumps 2024-05-05 12:23:06 +03:00
Denis Pauk
fbc91514eb Merge remote-tracking branch 'yquake2/master' 2024-05-05 12:00:43 +03:00
Yamagi
d50408ff0b Bump SDL 3 support to the latest preview, SDL 3.1.2.
SDL 3.1.1 -> 3.1.2 brings another round of API changes. Only one of them
is relevant for us: the SDL_RENDERER_ACCELERATED flag was removed.
2024-05-05 09:37:36 +02:00
Denis Pauk
fb85150702 maps: move entity add null terminate to sv_init 2024-05-04 17:18:48 +03:00
Denis Pauk
7e53c83c88 maps: fix lump size calculation 2024-05-04 15:39:01 +03:00
Denis Pauk
f1d9bd6f47 game: port TRAIN_FIX_OFFSET and TRAIN_USE_ORIGIN from ReRelease
Fix platforms in `train` level.
2024-05-02 23:42:05 +03:00
Denis Pauk
ded6f0c962 game: change level hack
Look like ReRelease code just ignore spawn target if target has not found.

`base2` has `eou1_.cin+*bunk1$start` as target but `bunk1` does not have such target.

Look to:
* 8dc1fc9794/rerelease/p_client.cpp (L1492)
* https://github.com/yquake2/yquake2remaster/issues/22
2024-05-02 00:25:38 +03:00
Denis Pauk
78c7f62aba CMod_LoadAreaPortals: reuse cache as map_areaportals 2024-05-01 19:07:42 +03:00
Denis Pauk
bf81d4e427 maps: cache QBSP in collision map list 2024-05-01 14:23:49 +03:00
Denis Pauk
98cc9c1ea0 models: move Mod_LoadFile to client side 2024-05-01 11:00:33 +03:00
Trey Harrison
bbcc0ed222 renders: add SAM/SBM/DEF model files definitions
Author: Trey Harrison <trey@u.washington.edu>
Based on: https://web.archive.org/web/20001212060900/http://starbase.neosoft.com:80/~otaku/program.html
2024-04-30 00:23:56 +03:00
Denis Pauk
9abc88e6ab gl4: support multimesh models 2024-04-30 00:13:48 +03:00
Jaime Moreira
b81e910929 GL1 multitexture, refactored memory allocation
It was missing error checking and cleanup at shutdown.
Also, reset state when needed. Fixes "death by laser" in boss1 map.
2024-04-29 14:39:48 -04:00
Denis Pauk
19f6e5df62 Version bump 8.31RR7
* Rework map load logic,
 * Support SiN map load,
 * Support track names,
 * Support N64 flags,
 * SDL3 build support (by Yamagi),
 * Fixes for sort render (by dkoreshkov),
 * Added cvar cl_laseralpha (by BjossiAlfreds),
 * VectorLength reduces complexity (by devnexen),
 * Sync with latest yquake 2 code.
2024-04-27 00:22:00 +03:00
Denis Pauk
42b4a61794 renders: support SURF_N64_UV 2024-04-24 23:54:52 +03:00
Denis Pauk
f7ec7d268e server: use game api version for protocol detect 2024-04-24 00:55:53 +03:00
Jaime Moreira
ba71af2af8 GL1 multitexture: fast dynamic lighting
Using MH's solution, which is keeping all lightmaps in memory
to modify and upload them as a batch when possible.
lightmap_buffer is now an array; index 0 is used as the legacy
lightmap buffer (when no mtex), and the rest of the indexes are
to store the different lightmaps (only when using mtex).
2024-04-23 12:26:44 -04:00
Jaime Moreira
86528d7812 GL1 multitexture, first version
Unlike the old, buggy one, this implementation follows the
texture chain, just like the standard execution path. It also
avoids doing the lightmap chains, since it has already done it
in the second TMU; there's no duplicated work for lightmaps.
No errors appear in the lava on the "boss1" map either.
It's still slow when having an overdraw of dynamic lights.
Further work is needed.
2024-04-23 12:25:38 -04:00
Jaime Moreira
3faa3db167 GL1 multitexture, initialization
While it is based on the old, buggy multitexture implementation
(removed in 68a12d4e & 8fe8f832), rework will be done to make it
function as intended this time.
For this commit, just init and function declarations.
2024-04-23 12:24:20 -04:00
Jaime Moreira
79bb13d3a7 Updated OpenGL definitions in qgl.h
Using GL 1.4 declarations in code, although 'point parameters' will
use legacy extensions if they're the only ones found.
Moved stuff out of local.h; better to have definitions in one place.
Extracted from <glext.h>.
2024-04-23 12:23:00 -04:00
Jaime Moreira
3dde0d5859 Texture chains working properly
Somehow, R_TextureAnimation() returns different results for the same
surface when called consecutively. We force it to be called once, so
the chains in R_DrawTextureChains() are getting respected now.
2024-04-23 12:21:40 -04:00
Denis Pauk
1364e4703f renders: implement SURF_N64_SCROLL 2024-04-22 00:35:54 +03:00
Denis Pauk
eb344a030e renders: Move scroll logic to R_FlowingScroll 2024-04-22 00:04:21 +03:00