divverent [Tue, 31 May 2011 20:25:01 +0000 (20:25 +0000)]
viewmodel matrix fixes:
- have two separate viewmodel matrices, one that only applies the viewmodel
scale (for EF_NOGUNBOB), and one that contains bobbing etc. effects
- recalculate both matrices properly when using R_SetView() from CSQC
- make sure view parameters are consistent between whether R_SetView() is
called or not
- fix missing viewmodel scale in intermission
havoc [Sat, 28 May 2011 17:50:38 +0000 (17:50 +0000)]
reworked sv_gameplayfix_nudgeoutofsolid, it now begins with an enlarged
start position test and nudges out of solids, then does the move, this
should reduce collision issues with triangle mesh brushes in steelstorm,
renamed sv_gameplayfix_nudgeoutofsolid_bias to
sv_gameplayfix_nudgeoutofsolid_separation with 0.03125 as default
divverent [Fri, 27 May 2011 16:58:46 +0000 (16:58 +0000)]
call SetDllDirectory on Win32 too
Usage: put DLLs in a bin32/ subdir for that
If not done, binaries work as before.
This is the only way to have a 32bit and 64bit executable version in the same
directory! Otherwise Windows will abort DLL search at the 32bit DLL, which
fails to load into a 64bit process.
NOTE: this requires WinXP SP1 and above. To compile with this functionality
disabled, compile with -DDONT_USE_SETDLLDIRECTORY added to the CFLAGS.
havoc [Mon, 23 May 2011 15:49:45 +0000 (15:49 +0000)]
honor ent->shadertime in all material handling (tcmod, etc)
do frame looping properly on q3 shader animmap (no more precision issues)
wrap tcmod scroll so that it does not have precision breakdown
changed rsurface.ent_shadertime to rsurface.shadertime which is now
relative time (what should be used)
havoc [Mon, 23 May 2011 15:46:32 +0000 (15:46 +0000)]
added LoopingFrameNumberFromDouble function to do this operation
correctly (using divide, floor, and multiply), since doing it the lazy
way (cast to int, use modulus operator) breaks down after a certain
amount of time in the level
havoc [Mon, 23 May 2011 09:41:52 +0000 (09:41 +0000)]
fix a crash in debug builds where the compiler did not optimize
ch->sfx-> to use a local variable holding the unchanging value of sfx
(the crash occurs when the mixer thread clears ch->sfx while the main
thread is deciding whether to merge a sound onto an existing channel -
if the channel dies during this code, the sfx pointer must be preserved)
vortex [Fri, 20 May 2011 20:27:10 +0000 (20:27 +0000)]
Added "loadcubemap" builtin to allow preload cubemaps level can use, added experimental "r_water_lowquality" which reduces options while rendering water planes, this can help a bit. Added "gl_texturecompression_sprites" cvar.
havoc [Thu, 19 May 2011 01:33:42 +0000 (01:33 +0000)]
added JOY_UP/DOWN/LEFT/RIGHT keys which are a more general form of the joy_axiskeyevents cvar (which when set to 1 will turn these into UPARROW/DOWNARROW/etc as before, but this way a menu qc can respond to them correctly)
havoc [Thu, 19 May 2011 01:21:10 +0000 (01:21 +0000)]
XInput code path no longer emulates arrow keys in menu by default, instead this is based purely on the joy_axiskeyevents cvar (and no longer cares if it is the menu or not)
havoc [Wed, 18 May 2011 13:18:43 +0000 (13:18 +0000)]
implemented support for Windows XInput (using different keys/cvars to allow non-conflicting configs) in vid_shared.c, usable in WGL and SDL clients on Windows
redesigned joystick code to encode any joystick data into a vid_joystate_t struct and use a common code path for all handling of axes and button events (also rewrote joy_axiskeyevents as part of this)
changed joystick deadzone handling to make values start at 0 at the edge of the deadzone
removed legacy joystick code in vid_wgl.c because it was too annoying to maintain
removed some hacky SDL 1.3 iOS code that is no longer needed
divverent [Sat, 14 May 2011 16:16:08 +0000 (16:16 +0000)]
A temporary hack for GAME_XONOTIC only
this commit adds getplayerkey(..., "TEMPHACK_origin") to get a networked
player's origin from csqc; it returns the empty string if the extension is not
supported, or the player is not known to the engine at the moment
vortex [Fri, 13 May 2011 21:37:16 +0000 (21:37 +0000)]
Multisampling initialisation moved from vid_sdl to gl_backend. Make cubemaps array dynamic (segments are allocated on load), this uses less memory, and MAX_CUBEMAPS was raised.
vortex [Wed, 11 May 2011 22:59:39 +0000 (22:59 +0000)]
OpenGL 2.0 path: Make handling of Alpha-To-Coverage same as AlphaTest (enabling before surface render and disabling after), instead of hacky R_ShadowMode_Begin force-to-disable, this also fixes shadowmap bug with ATI hardware. Also made vid_multisampling (if enabled) to force minimal vid_samples 2.
havoc [Mon, 9 May 2011 20:20:37 +0000 (20:20 +0000)]
added prvm_offsets.h which centralizes field/global/function lookups for
easier maintenance, this file is included with a huge set of macros for
each different purpose...
havoc [Mon, 9 May 2011 17:56:56 +0000 (17:56 +0000)]
reworked PRVM_EDICTFIELD* and PRVM_GLOBALFIELD* usage to have more
specific naming of the macros, and allow code analysis to audit the used
fields/globals for better maintenance
vortex [Sun, 8 May 2011 21:55:18 +0000 (21:55 +0000)]
GL_ARB_multisampling defs (vid_multisampling) and alpha-to-coverage effect (r_transparent_alphatocoverage) for alphaTest surfaces, which dont use multisampling yet but looks better for most cases, especially for overhead games.
havoc [Sun, 8 May 2011 13:49:35 +0000 (13:49 +0000)]
fixed RF_VIEWMODEL really good this time
renamed cl.csqc_origin to cl.csqc_vieworigin, cl.csqc_angles to
cl.csqc_viewangles, and added cl.csqc_vieworiginfromengine and
cl.csqc_viewanglesfromengine which are used to restore the view
parameters when R_ClearScene is used in csqc
havoc [Sat, 7 May 2011 12:36:28 +0000 (12:36 +0000)]
added vid_sRGB cvar, this replaces the r_texture_sRGB* cvars and
modifies all texture loading (including bsp, mdl, spr, lmp, as well as
external textures) and the output gamma to achieve sRGB corrected
rendering, not all renderpaths support this and the feature will be
automatically disabled on such renderpaths
havoc [Fri, 6 May 2011 13:39:22 +0000 (13:39 +0000)]
added .float sendcomplexanimation server qc field which if TRUE will
send .frame .frame2 .frame3 .frame4 .frame1time .frame2time .frame3time
.frame4time .lerpfrac .lerpfrac3 .lerpfrac4 OR .skeletonindex if set
(BANDWIDTH HOG, skeletal networking inadvisable in multiplayer)
havoc [Tue, 3 May 2011 17:41:59 +0000 (17:41 +0000)]
gl_texturecompression is no longer required for TEXF_COMPRESS flag to
work - this cvar is now checked by the callers, so r_font_compress is
independent of it now
added r_texture_dds_save 2 setting which saves dds files even for
uncompressed textures, allowing one to completely skip source art files
havoc [Tue, 3 May 2011 11:42:49 +0000 (11:42 +0000)]
don't upload the same ft2 font texture more than once
added r_font_diskcache (can read/write tga and dds)
added r_font_compress (saves memory by compressing the texture)
vortex [Mon, 2 May 2011 02:09:59 +0000 (02:09 +0000)]
Transparent sorting: added maxdist and array size cvars which can be tweaked to increase performance (can give up to 10-20% with no quality loss on scenes with large amount of blended surfaces). Added "dpnortlight" shader keyword which disables full rtlight rendering on a surface, useful with grass which (when blended) can cause deadly speed loss.
havoc [Sun, 1 May 2011 16:33:10 +0000 (16:33 +0000)]
reworked userdir path selection, now has 4 "tiers":
NOHOME - uses basedir for configs
HOME - uses basedir on Windows, ~/.gamename/ on OSX and Linux
MYGAMES - uses My Games on Windows, ~/.gamename/ on Linux and OSX
SAVEDGAMES - uses Saved Games/gamename/ on Vista+, ~/.gamename/ on Linux
and ~/Library/Application Support/gamename/ on OSX
The tiers are tried in reverse order and any existing one will be used,
new ones will always be the last one.
If gamedirname1 is "id1" then Windows will use NOHOME rather than create
a new userdir when none are found. (but you can still create one or use
-mygames or -savedgames commandline options to make it do so)
refactored the SDL_WM_SetCaption and SDL_WM_SetIcon logic into a single
wrapper function for each platform (VID_WrapSDL_SetVideoMode), moved
caption setting before SDL_SetVideoMode to prevent the "SDL_app" title
added r_transparent cvar to turn off transparent rendering for
performance testing
added r_deformvertexes cvar to turn off deforms for performance testing
neither of these settings are meant to be performance improvements, only
testing methods