havoc [Fri, 9 Feb 2007 01:19:05 +0000 (01:19 +0000)]
fix Q3BSP map loader's sky surface detection so that it doesn't assume all submodels have sky if the base model does, this improves rendering performance a bit (by not scanning for sky in submodels that claim to have it but don't)
havoc [Thu, 8 Feb 2007 15:57:21 +0000 (15:57 +0000)]
removed CL_UpdateEntities call in CSQC rendering code
changed r_refdef.lights from dlight_t * to rtlight_t (no longer a pointer)
modified CL_UpdateLights to setup the r_refdef.lights[] entry instead of merely pointing to the rtlight_t in the dlight_t struct
changed csqc dlight handling to comply with the spec (R_ClearScene resets r_refdef.numlights, then VM_R_AddEntities adds all engine-based entities and lights)
moved single-frame dlight spawning for rocket glow and such from CL_UpdateNetworkEntity to CL_LinkNetworkEntity (which is called by VM_R_AddEntities)
replaced all single-frame uses of CL_AllocDLight with R_RTLight_Update(&r_refdef.lights[r_refdef.numlights++], ...) calls, this includes lights such as muzzleflash, rocket glow, .glow_size lights, tenebrae dlights, etc
renamed CL_AllocDlight to CL_AllocLightFlash
renamed CL_DecayLights to CL_DecayLightFlashes
renamed CL_UpdateLights to CL_RelinkLightFlashes
renamed CL_ParticleEffect to CL_ParticleTrail and added spawndlight/spawnparticles boolean parameters, then added a CL_ParticleEffect which calls this with true for both
removed cubemapnum field from dlight_t
havoc [Tue, 6 Feb 2007 08:18:50 +0000 (08:18 +0000)]
no longer sends moves if time is not moving forward, except when paused (this fixes some bugs causing cl_movement 0 to lose impulse/buttons)
no longer repeats old moves if cl_movement is off (because they would serve no purpose)
eliminated cl.movemessages (now uses cl.movesequence for the same purpose)
havoc [Mon, 5 Feb 2007 17:45:59 +0000 (17:45 +0000)]
redesigned input networking code (still same protocol) and did a lot of cleaning, now predicts movement even if server packets are lost
added cl_netinputpacketlosstolerance cvar (default 4, qw used 2, can be up to 16) to repeat old input messages in each packet so that they can only be lost by heavy packet loss
changed sv_clmovement_waitforinput default to 16 to match this capability
reworked a lot of timing code related to input networking
fixed some bugs when frametime is 0 in player physics
havoc [Sat, 3 Feb 2007 12:08:54 +0000 (12:08 +0000)]
made CL_SetInfo check for more forbidden characters (key now refuses any form of whitespace, value now refuses \r and \n) and refactored the checking code to make it a bit cleaner
havoc [Sat, 3 Feb 2007 08:49:02 +0000 (08:49 +0000)]
added r_shadow_frontsidecasting cvar (default 1), this allows switching to back-side casting instead, however this has proven buggy so it is not to be used yet
havoc [Sat, 3 Feb 2007 03:36:26 +0000 (03:36 +0000)]
fixed two bugs that caused a constant state of "player stuck" (one was that it always thought this was a q1bsp/hlbsp map, and the other was that the q1bsp/hlbsp corner checking was checking the wrong locations)
havoc [Sat, 3 Feb 2007 03:08:57 +0000 (03:08 +0000)]
fixed bug in AVI RIFF chunk 1GB size limiting code (it was not accounting for the index buffer size which will be written afterward) which was causing the chunk to often exceed 1GB
havoc [Mon, 29 Jan 2007 09:52:31 +0000 (09:52 +0000)]
fix very stupid bug in svbsp calls that made only the first triangle of an occluding surface polygon be inserted into the svbsp, and some other cleanup/corrections
havoc [Sun, 28 Jan 2007 02:57:51 +0000 (02:57 +0000)]
implemented Shadow Volume BSP based culling of lit surfaces, this is slightly better than the existing portal culling code (or much better in the case of detail brush terrain in q3bsp where little culling was performed previously), and is now the only culling method used by rtlight compilation
havoc [Sun, 28 Jan 2007 02:52:41 +0000 (02:52 +0000)]
patch from Tomaz adding a proper matrix inverter, it should be able to invert any matrix that is possible to invert, but is VERY slow, and consequently Matrix4x4_Invert_Simple has been kept for speed reasons
it is probably possible to optimize this function significantly, and it would also be possible to add non-uniform-scaling inversion to Matrix4x4_Invert_Simple to make it more flexible
havoc [Sun, 28 Jan 2007 02:50:32 +0000 (02:50 +0000)]
added Debug_Polygon functions for testing, these are currently abusing the CSQC polygon queue and have many stupid limitations which should be cleaned up at some point, but it is now possible to call these to draw things for debugging purposes
havoc [Fri, 26 Jan 2007 05:58:43 +0000 (05:58 +0000)]
changed sbar stats (Monsters/Secrets/Time/map title) around a bit, inspired by a patch from steven a but not directly based on it
specific changes: Monsters/Secrets are now on top row (rather than left side), map filename (minus path/extension) and map title are shown, time moved to far right of second row
havoc [Wed, 24 Jan 2007 21:27:06 +0000 (21:27 +0000)]
disabled use of Portal_PortalThroughPortalPlanes on triangles in exact triangle culling mode because it was falsely culling some polygons (particularly in start.bsp), this makes the culling less exact unfortunately
havoc [Wed, 24 Jan 2007 17:48:49 +0000 (17:48 +0000)]
some cleanup of shader permutation handling
expanded shader permutation system to allow multiple shader source files (not sure if this will ever be used) rather than just "glsl/default.glsl"
added code support for geometry shaders (not actually hooked up because there's no GL_ARB_geometry_shader extension yet)
added flagging of which shader objects are needed by a given permutation (to allow vertex-only shaders for shadow volume projection and such, also not implemented)
havoc [Wed, 24 Jan 2007 04:15:45 +0000 (04:15 +0000)]
redesigned tempstring system, now uses a fixed size buffer based on the prvm_tempstringmemory cvar (this is probably safe to automatically resize in the future but is not currently resized)
audited PRVM_G_STRING use in the engine (eliminated many NULL checks in functions because it never returns NULL)
added DP_QC_UNLIMITEDTEMPSTRINGS extension to indicate this new tempstring system's wonderous features (not yet documented)
havoc [Wed, 24 Jan 2007 03:56:16 +0000 (03:56 +0000)]
added r_hdr_range cvar (which just divides r_bloom_colorscale and multiplies r_bloom_brighten)
changed default r_bloom_brighten from 2 to 1 and r_bloom_colorsubtract from 0.125 to 0, this gives a more color-preserving bloom effect and actually seems brighter in many cases
havoc [Tue, 23 Jan 2007 16:58:57 +0000 (16:58 +0000)]
changed Cmd_StuffCmds_f to combine the entire set of commandline arguments into one string before calling Cbuf_InsertText, this fixes the reverse order execution bug (where +deathmatch 7 +map dpdm2 would execute deathmatch 7 AFTER starting the map, which was useless until a restart command was issued)
havoc [Tue, 23 Jan 2007 01:40:36 +0000 (01:40 +0000)]
fixed bug in CSQC_AddRenderEdict (it was using the tempentity's modelindex rather than the vm entity, meaning that csqc entities never had a visible model)
reduced code by merging cl.csqc_model_precache lookups into CSQC_GetModelByIndex and CSQC_GetModelFromEntity functions
havoc [Tue, 23 Jan 2007 00:27:49 +0000 (00:27 +0000)]
significant cleanup of CL_UpdateEntities, GL_UpdateNetworkEntity, CL_LinkNetworkEntity, V_CalcRefdef handling, and CSQC issues related to these
eliminated linkframe from entity_t (this means CL_UpdateNetworkEntity may sometimes process an entity twice, and CL_LinkNetworkEntity is no longer recursive as it does not need to be)
havoc [Mon, 22 Jan 2007 22:01:27 +0000 (22:01 +0000)]
implemented csprogs.dat downloading with special dlcache/name.size.crc file naming, this is in need of testing
added csqc_progsize cvar to csqc signon process (still compatible with old servers)
havoc [Mon, 22 Jan 2007 19:31:49 +0000 (19:31 +0000)]
two improvements to vid_restart in the SDL client: hardware gamma is now
restored after vid_restart, and the brief fullscreen window (used to reset
the SDL GL attributes) is now only used during vid_restart, not the initial
client startup
havoc [Mon, 22 Jan 2007 18:20:05 +0000 (18:20 +0000)]
modified droptofloor to treat trace.startsolid as an acceptable situation, this prevents many items falling out of various user-made maps (including a critial item in level x2m4 of X-Men: Ravages of Apocalypse)
added sv_gameplayfix_droptofloorstartsolid cvar to control this behavior
havoc [Mon, 22 Jan 2007 14:42:05 +0000 (14:42 +0000)]
moved EF_MUZZLEFLASH checking to CL_MoveLerpEntityStates to make muzzleflashes reliably work when the client is running slower than the server
made muzzleflash 1.5x as large and 4x as bright as before, and fade in 50ms instead of 100ms
changed dlight decay to scale color instead of radius
havoc [Mon, 22 Jan 2007 13:37:39 +0000 (13:37 +0000)]
tweaked default TE_TELEPORT effect, it now spawns one large very bright particle in the middle and 1/8th as many small particles, this should improve multiplayer performance on slow graphics cards, also doubled the brightness of the dlight created, and made it last a bit longer
havoc [Mon, 22 Jan 2007 13:22:46 +0000 (13:22 +0000)]
improved SV_TestEntityPosition in q1bsp/hlbsp by checking the 8 corner points of the box, this fixes the misaligned double-doors bug in the Prydon Gate expansion "The Dark Age"
changed Stuck entity warning from developer 1 to developer 100 because it's annoying and not very helpful
havoc [Mon, 22 Jan 2007 12:06:42 +0000 (12:06 +0000)]
changed FS_ChangeGamedir to FS_ChangeGameDirs and made it fail if any of the gamedirs are missing (if the failmissing parameter is set) and detect various other failures
FS_Init now checks if game directories are found and does a Sys_Error if not
now does a Host_Error if a QW server specifies an invalid gamedir (missing gamedir is ok however, because QW downloads files)
havoc [Mon, 22 Jan 2007 10:40:58 +0000 (10:40 +0000)]
changed ping report name matching to allow scoreboard names to be longer than ping report names (because recent versions of ClanRing CTF seem to append READY on the scoreboard but not the ping report)
havoc [Sun, 21 Jan 2007 20:27:36 +0000 (20:27 +0000)]
implemented individual file downloads on darkplaces servers
deferred loading of files until signon 2 (necessary for download system)
made loading of files operate in two passes, first for existing files and then again for files that need to be downloaded
added cl_joinbeforedownloadsfinish cvar to cause the game to begin after the map is loaded, before other downloads finish (not entirely sure this is a good idea, but it's cool)
added sv_allowdownloads cvar to allow enabling/disabling of downloads, and sv_allowdownloads_inarchive and sv_allowdownloads_archive cvars to allow server administrators to enable downloading files from archives or even whole archives if so desired (however the client does not currently request archives)
havoc [Sun, 21 Jan 2007 14:21:53 +0000 (14:21 +0000)]
reorganized view rendering setup code a bit to reduce potential for state bugs (more thorough and consistent state resets now)
added support for glStencilOpSeparate function in OpenGL 2.0 (or GL_ATI_separate_stencil extension prior to that), so ATI cards should get a speed boost now, this path is now also used on NVIDIA hardware, but support for GL_EXT_stencil_two_side extension has been retained to support several other vendors
havoc [Sun, 21 Jan 2007 11:39:19 +0000 (11:39 +0000)]
r_textshadow is now a saved cvar
the r_textshadow shadow color is now 1-red-green-blue (basically meaning it is black except for black text where it is white)