havoc [Fri, 12 May 2006 08:11:46 +0000 (08:11 +0000)]
reorganized a lot of renderer variables into r_refdef, and split some things out of r_refdef into r_view and r_viewcache, this reorganization brings DP closer to being able to render to textures
havoc [Wed, 10 May 2006 11:52:21 +0000 (11:52 +0000)]
redesigned skeletal model loading and rendering to use matrix-palette animation (still in software, but that may change at some point), this improved nexuiz -benchmark demos/demo1 framerates by 11.3%
havoc [Wed, 10 May 2006 10:14:26 +0000 (10:14 +0000)]
some clean up of packet parsing
merged most of the server info parsing code between the two cases (DP server and QW server), and reimplemented server info parsing for NQ servers
enabled ping/ack packet processing
havoc [Wed, 10 May 2006 08:26:44 +0000 (08:26 +0000)]
setinfo *ip on every network connection (currently only meaningful to QW reconnect command, but potentially useful), and removed some unneeded setinfo's since the cvars/commands now work properly
havoc [Wed, 10 May 2006 08:24:54 +0000 (08:24 +0000)]
improved setinfo handling so that quakeworld works much better now (name/topcolor/bottomcolor/skin/team/noaim are handled properly now), this means TeamFortress won't kick clients for not responding to team/skin cvars, and is fully playable
havoc [Tue, 9 May 2006 15:26:00 +0000 (15:26 +0000)]
significantly reworked the cl_movement code, now predicts quakeworld almost completely correctly (only some issues with the different nature of stair stepping, and other differences compared to the FlyMove function on the servers which affect sliding in grooves)
havoc [Tue, 9 May 2006 15:22:46 +0000 (15:22 +0000)]
don't shuffle servers around when pings come in later and are identical to the existing ones (I.E. made the sort be a stable sort)
fixed a bug that caused qwmaster query packets to be bigger than necessary (was writing 7 bytes, should have been 3 bytes)
havoc [Tue, 9 May 2006 15:18:50 +0000 (15:18 +0000)]
do q1bsp lighting checks starting with + 0.125 unit Z offset to improve chances of finding a lighting value rather than returning black when a model origin is almost stuck in the floor
havoc [Mon, 8 May 2006 10:22:10 +0000 (10:22 +0000)]
lhnet fixes - now calls WSAStartup during LHNET_Init and WSAShutdown during LHNET_Shutdown, so gethostbyname will work on windows without any sockets open (as long as LHNET_Init has been called of course), fixed a few things that were breaking compilation with -DSTANDALONETEST and added a new simpler and more useful standalone test program which is now used by default (edit the #if if you want the old one instead)
havoc [Mon, 1 May 2006 12:30:03 +0000 (12:30 +0000)]
fix bug with gl_combine 0 transparent water rendering in q1bsp (alpha was not being stored, leaving garbage (typically 0) in the vertex alpha, making the water disappear)
havoc [Mon, 1 May 2006 12:05:34 +0000 (12:05 +0000)]
optimized rtlighting passes by using RSurf_DrawBatch_Simple, this took a lot of code restructuring but the resulting code is definitely a lot faster
fixed bugs in RSurf_DrawBatch_Lightmap related changes
havoc [Mon, 1 May 2006 09:00:22 +0000 (09:00 +0000)]
restructured RSurf_DrawLightmap to become RSurf_DrawBatch_Lightmap which processes all arrays and sets things up perfectly, then renders all the surfaces with a call to R_DrawBatch_Simple
added dynamic surface-merging to R_DrawBatch_Simple, depending on the new r_batchmode cvar it either renders surfaces individually (as before), consecutively (consecutively numbered surfaces are rendered with one call for their combined triangle elements range), or by memcpy merging elements into one array (this has rather chaotic vertex ranges so gl_lockarrays is disabled in this code because it is a consistent speed loss in this case)
this optimization increased fps by 4.7% in timedemo bigass1, and offers bigger gains in very high poly q1bsp and q3bsp maps
changed svc_setangle to cause interpolated turning when spectating (two or more consecutive frames with a svc_setangle message), and instant entity updates when teleporting (just one svc_setangle) so you no longer fly through the level when teleporting
changed cl_beams_relative to only apply to the local player (unless set to a value of 2 or higher)
black [Thu, 27 Apr 2006 20:23:42 +0000 (20:23 +0000)]
Add _DrawQ_ProcessDrawFlag to clean-up the glblend setup code.
Add CL_Video_KeyEvent and support for it to Key_Event, now the the fullscreen video
is closed automatically when you hit enter, space or escape and the video system catches all
input (no more accidentially nagivating around in the menu).
(Please test this and report bugs to black@icculus.org if you find any)
Removed myself from all the todo items. I no longer mind if none of these are ever implemented/fixed, and I check the cvs often enough that I'll see if they ever are. Feel free to remove any of these altogether, e.g. mirrors, hub save, skyrooms...
now does batching of transparent surfaces, such as particles, this raised performance in bigass1.dem from 143fps to 184fps (it uses a lot of particles)
reenabled support of find() with an empty string as the search value, this fixes the Blood Mage monster movement
slight optimization to findflags and findchainflags
added prvm_printfunction command which prints an assembly dump of the specified qc function, with coloring and optionally statement profiling to show how many times each statement has been executed (prvm_statementprofiling must be on for this), also heavily modified statement printing to be more readable
significant optimizations to the progs interpreter, changed the runaway loop counter to only count jump instructions (if/ifnot/goto), and redesigned the profile counting to use pointer math on batches of instructions instead of counting each instruction individually
changed prvm_profile report to show callcount before statements and builtincost, changed the sorting order to use summed callcount+statements+builtincost (and this made it print call counts for builtin functions as well)
reenabled the 'stick in place if stuck in a solid' code, but changed it to only apply for bmodelstartsolid, this prevents monsters from falling out of the level even if they're stuck in a wall, for consistency with stock quake
changed particle trail handling so that the TE_TEI_G3 effect can spawn particles along the beam just like trails can
cleaned up particle texture generation, no longer generates them if loading from disk, now also allows all 64 slots to be used (except the beam one) by generating generic texcoords for all of them
replaced rainsplash animation with just a single particle which expands over time to free up significant space in the particlefont (also added sizeincrease parameter support to effectinfo.txt accordingly)
renamed scr_screenshot_gamma to scr_screenshot_gammaboost and changed default to 1, this means all screenshots will be unmodified unless the user specifically changes the setting, rather than saving them very bright by default
optimized LoadTGA to have fast paths for all formats, rather than one unified loading loop that tried to support all formats, this saves 1.15 seconds of load time in nexuiz on my machine (before: 2.32 seconds spent in LoadTGA, after: 1.17 seconds)
removed the flawed detection of modelspace deluxemaps (it was always concluding they were modelspace because of unused black pixels and such), now assumes q3bsp deluxemaps are always modelspace
reworked most of q3bsp q3 shader loading, now supports more shader effects (the first layer's blendfunc is now used for rendering), still no multilayer stuff though, and still no tcgen environment so some surfaces now look worse because their first pass is an environment effect, but most others look better...
q3 fog shaders are usually invisible now (looks better than blinding white surfaces)
added support for more hacky q3 shaders (like sky shaders that don't have surfaceparm sky, and transparent shaders that don't have surfaceparm trans)
added support for alpha test in q3 shaders (improves some shaders)
rewrote timing code, now a much better and very different sleeping method, no longer wastes any cpu time
changed timing code to have independent sleeping for client and server frames in a listen server
changed console execution to occur in sync with server frames if a server is running, this fixes frikbot loading of .way files
eliminated several host_* variables, replaced host_realframetime with cl.realframetime (which is how long since the last client frame)
removed the clamping of sys_ticrate to >= 0.1, so now sys_ticrate 0 is allowed (run as fast as possible), as well as silly values like 0.001
removed serverprofile cvar as it was not easy to preserve it in the rewritten timing
merged Host_FilterTime, Host_ServerFrame, Host_Frame, _Host_Frame into Host_Main (which also calls Host_Init), this eliminates some duplicate code in all the sys_ modules
batch by lightmap as well as texture, this cures problems with vertex lit surfaces in deluxemapped q3bsp files (the vertex lit surfaces can't be deluxemapped)
changed where vertex coloring is applied in the fragment shader, this fixes problems with vertex colored surfaces (note: does not help deluxemapping mode, there is another bug affecting that)
modified Mod_BuildTextureVectorsAndNormals to become Mod_BuildTextureVectorsFromNormals, this is in preparation for properly honoring the surface normals in models and maps (doesn't do anything yet)
eliminated rmeshstate_t .pointer_vertex and .pointer_color (now must use R_Mesh_VertexPointer and R_Mesh_ColorPointer instead - in a lot of code these don't need to be called as often)
renamed R_Mesh_State to R_Mesh_TextureState
made an alternate variant of R_Mesh_TextureState called R_Mesh_ResetTextureState which acts like it was given an empty rmeshstate_t (but is faster than R_Mesh_TextureState)
moved R_Mesh_VertexPointer and R_Mesh_TexCoordPointer calls out of the inner loops of the GLSL surface path
other related cleanups
redesigned some of the model animation code, should be a speed gain (no longer processes animation multiple times on models with multiple textures), and executes less code per surface (should speed up map rendering)
AGL fixes: fixed a crash when switching to and from fullscreen several times; explicitely release the display when closing the video module; fixed initial test in VID_Shutdown(); a bit of code cleaning
prints entity number of MOVETYPE_PUSH entities without models (this is mostly useful to level designers who accidentally left a brushless door lying around)
fixed really stupid typo in CL_TraceBox regarding bmodel entity collisions (doors and such) which was breaking their collisions
eliminated CL_PointQ1Contents