inlined Host_EndGame in CL_ParseServerMessage's svc_disconnect case and greatly reduced its code (removing the server shutdown, etc), this fixed an infinite recursion shutdown crash introduced by the Host_ShutdownServer changes
fixed very annoying '5 second timeout' bug in Host_ShutdownServer (the local client was timing out on the NetConn_SendToAll because the server was ignoring the client's reply packets, by setting sv.active = false too early)
added Host_ShutdownServer call near every CL_Disconnect call, for consistency
CL_Disconnect and Host_ShutdownServer now report their calls as dprints (previously they were entirely silent)
Added a CHANNELFLAG_LOCALSOUND flag for channels playing a client-side sound, such as menu sounds for instance. Added the ability to pause/resume channels. When the game is paused, all non-local sounds are now automatically paused (previously, no new sound was started during the pause, but those already created were played normally).
molivier [Wed, 24 Mar 2004 08:06:56 +0000 (08:06 +0000)]
Fixed the sounds not being advanced in time while not being listened. This is a long standing bug I think, it looks like the original Quake source code has it too, though I haven't tested. Each channel now remembers the last time it was painted, and so it can resume the play at the appropriate position if it missed some painting rounds.
Also, added a check to avoid looped sounds being overridden when picking a channel.
molivier [Tue, 23 Mar 2004 08:28:28 +0000 (08:28 +0000)]
Ogg vorbis streaming support; the code decides whether it will cache or stream the sound depending on the file and uncompressed sound sizes. It should be stable enough for a regular use now; you lose a few FPS once every second or so of course, it's not free, but you can expect the Vorbis stream to use between 5 and 12 times less memory than before, depending on the sound quality and the number of SFX sources using it. This patch also contains a couple of fixes (a pretty annoying typo in the OSS and BSD driver - 22051Hz instead of 22050Hz, and a potential memory leak in WAV loader)
havoc [Mon, 22 Mar 2004 10:04:48 +0000 (10:04 +0000)]
worked around an ATI driver bug with glColor during GL_EXT_compiled_vertex_array locks being ignored - R_Shadow_RenderLighting dot3 paths now lock around each pass instead of the whole set of final passes - ATI PLEASE FIX THIS, the GL_EXT_compiled_vertex_array spec says all settings can be changed during a lock!
reorganized R_Shadow_RenderLighting to reduce code duplication a bit
enabled scissor without stencil support (the bug was in the lack of a valid projectmatrix)
added 3 tmu vertex lighting path (uses XYZ attenuation via textures, and vertex shading) which is mainly for use on 3+ tmu cards in 16bit color mode
renamed R_Shadow_VertexLighting functions to R_Shadow_VertexShading and made their names more clear
fixed a bug in the R_Shadow_VertexShading math (now normalizes the vertex->light vector as well as normal vector)
made some functions static
added an #ifndef USETEXMATRIX around the cpu matrix transform functions as they're not used anymore due to USETEXMATRIX code
havoc [Mon, 22 Mar 2004 09:22:38 +0000 (09:22 +0000)]
fix scissoring bugs with r_shadow_realtime_dlight - the projectmatrix was not being set for glFrustum and glOrtho cases, now it is (by reading back from GL)
havoc [Mon, 15 Mar 2004 07:00:14 +0000 (07:00 +0000)]
3d texcoords now must use rmeshstate_t.pointer_texcoord3f instead of pointer_texcoord, this allows texture matrices and such
implemented (broken and disabled) texture matrix optimizations in R_Shadow_RenderLighting, I'm still trying to figure out what is wrong
havoc [Mon, 15 Mar 2004 05:27:02 +0000 (05:27 +0000)]
reorganized texture setup code in R_Shadow_RenderLighting to be cleaner, fixed CVA locking in voodoo1/2 paths (it was locked while the color array update was happening, no good)
havoc [Sun, 14 Mar 2004 05:31:45 +0000 (05:31 +0000)]
got rid of Cshader system as it really wasn't helping anything, now all surfaces types use one R_DrawSurfaceChain function, which calls the appropriate passes
havoc [Sat, 13 Mar 2004 23:30:20 +0000 (23:30 +0000)]
merged static and dynamic rtlight handling almost entirely (even uses DrawShadowVolume and DrawLight to generate cached meshes - however this currently lost the r_shadow_portallight optimizations)
added a surfacelist to model_t containing surface indices for each submodel
merged R_Shadow_DiffuseLighting and R_Shadow_SpecularLighting into R_Shadow_RenderLighting (which takes a lighting parameter containing LIGHTING_DIFFUSE and LIGHTING_SPECULAR flags)
commented out cullradius/cullradius2 in rtlight structs because they weren't used
havoc [Sat, 13 Mar 2004 23:26:17 +0000 (23:26 +0000)]
added texmatrix[] to rmeshstate_t and removed R_Mesh_TextureMatrix function
reorganized water rendering code to make it a lot less confusing (especially the r_watershader code)
molivier [Thu, 11 Mar 2004 08:08:04 +0000 (08:08 +0000)]
Changed the way DP detects and handles the CPU endianess. All the tests are done at compile time now. Tested on Win32 (MSVC6 and MinGW32), Linux and NetBSD; should also work on the other BSDs.
havoc [Wed, 10 Mar 2004 21:40:02 +0000 (21:40 +0000)]
now calls GL_LockArrays manually around each R_Mesh_Draw call instead of locking inside R_Mesh_Draw, so some things can render the same geometry repeatedly (shadow volumes and lighting) without unlocking)
havoc [Wed, 10 Mar 2004 07:43:41 +0000 (07:43 +0000)]
GL_Color no longer interacts with GL_ColorPointer (so be sure to set GL_ColorPointer if it have been left on something you don't want)
GL_ColorPointer now resets glColor when array is turned off, because glColor gets trashed while color array is on (so sayeth the GL spec, and so proveth the NVIDIA driver)
havoc [Wed, 10 Mar 2004 07:14:24 +0000 (07:14 +0000)]
now supports GL_EXT_stencil_two_side extension (found on NV30/R300 class cards), this halves the polycount thrown at the card for shadow volumes, which got me a 77% speed gain on my GFFX5200
havoc [Wed, 10 Mar 2004 05:51:53 +0000 (05:51 +0000)]
added showtime/showtime_format and showdate/showdate_format cvars, and moved the fps display to bottom right corner (above the optional time/date displays)
havoc [Wed, 10 Mar 2004 03:28:04 +0000 (03:28 +0000)]
added Print versions of Printf functions and made all calls that do not need formating use the Print versions; yes this is a cosmetic cleanup, prints are too rare to have any performance improvements.
havoc [Tue, 9 Mar 2004 20:35:51 +0000 (20:35 +0000)]
worked around curve collision problems by doing special sort-of-axial edge planes on triangle collisions (ultimately the collision routine needs to do edge/edge collisions somehow to make this unnecessary)
now snaps triangle mesh vertices to 1/32 of a unit precision to keep the plane calculations a little more accurate (note: this is done at collision time), although this doesn't seem to be necessary
collision nudge values are now configurable via cvars (collision_ cvars, warning: things tend to break if startnudge != endnudge, and enternudge should be the same as leavenudge)