rewrote RecursiveHullCheck, no longer gets stuck on angle changes, and is generally...
authorlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 4 Dec 2001 13:28:29 +0000 (13:28 +0000)
committerlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 4 Dec 2001 13:28:29 +0000 (13:28 +0000)
commit45982a9894c5bff60ff494a0f82865ec267d52f7
treeb5ad08e53ac9b52cba46339ebfe4431ff53845fc
parent933d8c9fea47bcfa7c506d9f97fde60251eb1afd
rewrote RecursiveHullCheck, no longer gets stuck on angle changes, and is generally more correct all the time (no longer uses PointContents checks either)
added content value to RecursiveHullCheck and TraceLine, they can now treat any content change as an impact
TraceLine now can take NULL impact and normal if they are not desired
TraceLine now sets trace_endcontents to the impacted content value
rewrote nehahra/rogue/hipnotic/standard_quake variables to be gamemode (GAME_NORMAL, GAME_HIPNOTIC, GAME_ROGUE, GAME_NEHAHRA, etc)
unfinished code for directional static lighting on models (CL_ParseEntityLump)
game now uses current mode as title everywhere (window title, server title, etc), so it would say 'DarkPlaces-Hipnotic' for example
added Draw_AdditiveString variant of Draw_String, switchs to additive blending and back to alpha afterward
engineversion string is now generated in sys_shared
major rewrite of transpolyrender, now uses glDrawElements (with batching of same texture/mode) and array locking
transpolyparticle added to quickly add particles to transpoly list (30% or so savings)
split wallpolyrender into two pieces, first renders walls, second renders fog over them, decals are rendered between the two, so decals are now fogged
added field of vision distortion when underwater (in MYgluPerspective)
changed gl_lightmapalign to align to the specified byte boundary instead of pixel boundary, and removed NVIDIA mentions (it is not their problem, it is a matter of the texture unpack alignment, but I stuck with 4 byte alignment because it is likely faster for most people)
fixed animating textures
rearranged a little bmodel code (probably no effect)
got rid of r_solidworldnode and r_pvsworldnode cvars (only the fastest choices are available now)
screenshots are now corrected to match lighthalf if it is being done using hardware gamma
removed some old unused cruft from host.c
added RGB gamma correction code to image.c
added VectorRandom to mathlib.h
model skins are no longer mipmapped by default (r_mipskins 0, but this is saved in configs so most people might not notice) because quake skins were not designed for it, and it is a 25% texture memory use increase on model skins
removed old unused Mod_FloodFillSkin code
transparent textures no longer clip other geometry in the hidden surface removal (ouch this was a bug)
maps should be able to use engine fields without the mod knowing about them now (alpha, etc), engine fields are appended to the list of progs fields
particle and decal textures are now all stored in one 'particle font' texture, for a rather hefty speed gain (no texture switchs)
all particles are now alpha blended (additive wasn't necessary on them, but is still available), to kill off state changes
new splash effect from raindrops
added a few bithacking float optimizations here and there (most with alternates if you define SLOWMATH)
new explosion effect (on by default, but a major speed drain, turn off with r_particles_explosions 0)
particle textures are now all in one image (a 'particle font'), massive speed gains with mixed particle types
all particles are alpha blend now (additive still supported, just not used), for more speed gains
particles now use 24bit RGB colors, rather than palette colors (the quake palette has been included however, because many particles still use it)
a lot of old cruft has been removed from r_part
ui items can now be strings rather than pics (actually they can be both, but I have not found a real use for this, perhaps a second draw location needs to be added for the string, so a button could have a label centered on it)
unfinished X11 gamma ramp support (need to allocate colors before setting them, haven't figured this out yet)
changed pitch range in GLX to let you look straight up and down, like in wgl version
mostly redesigned animation interpolation management code (R_LerpUpdate is now CL_LerpUpdate and performed on all network entities, R_LerpAnimation has been tweaked to not crash on bmodels and is now automatically used on all visible entities in the renderer, lerping info has has been split out of entity_render_t into entity_persistent_t so that entity_render_t contains no persistent data)
renderer now only uses entity_render_t structures
renderer now uses only currentrenderentity, and rarely passes individual properties around
cleaned out some old global variables relating to rendering
moved most of glquake.h to render.h
envmap is now actually a vaguely useful command (renders cubic environment map images of the current scene, changed to write tga images rather than raw rgba, and take a basename to use, and name them like skyboxes expect, and place them in the env directory)
many things that should be private to a particular file have been marked static
models now contain a SERAddEntity function (to add themselves to the SER clipping list to verify visibility)
models now contain DrawEarly and DrawLate functions (to render before and after wallpoly/decals/skypoly/etc, respectively)
dlight management functions moved out of cl_main and into cl_light
rewrote RelinkStaticEntities (does the same, just cleaner)
renamed RelinkEntities to RelinkNetworkEntities, split out LerpPlayerVelocity, and made a RelinkEntities function which calls the various functions
rewrote or altered portions of RelinkNetworkEntities relating to origin
muzzleflash lights are now clipped to keep them out of walls
fixed up code relating to vid.conwidth/height and vid.width/height (which is now gone, converted to vid.conwidth/height) and renamed glx/gly/glwidth/glheight to vid.realx/y/width/height (updated each frame using GL_BeginRendering)
rewrote most (all?) code relating to r_refdef, it is now always recalculated as well
dynamic lights will only update a lightmap if they actually alter it (optimization)
models now have 3 bounding boxes, used depending on angles (normal, yaw rotation only, and full rotation)
bmodel bounding boxes are recalculated from vertices
server now uses model bounding box instead of entity bounding box for visibility testing (since entity bounding box is often smaller)
server no longer portal-visibility checks entities because it was FAR too slow (sv_vischeckentities is still available though)
gl_rsurf code now relies on there being a currentrenderentity (even if it is cl.worldent.render), R_SetupWorldEnt added to avoid duplicate code for this
engine no longer has a version number, only build number
makefile now uses buildnum (as was originally intended) to increment build number every time it is compiled, build numbers will be rising rapidly from now on
timedemos will now force up console instantly
rocket trails are more dense
renamed VectorMA (function) to VectorMASlow, renamed VectorMAQuick (#define) to VectorMA, don't know why I had changed it before, had already cleaned up the parameter issues where it is used
converted most of lighting in decal code to integer
added support for all sprite types (untested)

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1185 d7cf8633-e32d-0410-b094-e92efae38249
73 files changed:
buildnumber.c
chase.c
cl_demo.c
cl_effects.c
cl_light.c [new file with mode: 0644]
cl_light.h [new file with mode: 0644]
cl_main.c
cl_parse.c
cl_tent.c
client.h
common.c
common.h
console.c
draw.h
gl_draw.c
gl_models.c
gl_poly.c
gl_poly.h
gl_rmain.c
gl_rmisc.c
gl_rsurf.c
gl_screen.c
glquake.h
host.c
host_cmd.c
image.c
image.h
keys.c
makefile
mathlib.c
mathlib.h
menu.c
model_alias.c
model_brush.c
model_brush.h
model_shared.h
model_sprite.c
portals.c
pr_cmds.c
pr_edict.c
quakedef.h
r_clip.c
r_crosshairs.c
r_decals.c
r_decals.h
r_explosion.c
r_lerpanim.c
r_lerpanim.h
r_light.c
r_light.h
r_part.c
r_sprites.c
render.h
sbar.c
sv_main.c
sv_phys.c
sv_user.c
sys.h
sys_linux.c
sys_shared.c
sys_win.c
transform.c
transform.h
ui.c
ui.h
vid.h
vid_3dfxsvga.c
vid_glx.c
vid_wgl.c
view.c
view.h
world.c
world.h