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)
havoc [Wed, 3 Mar 2004 15:26:27 +0000 (15:26 +0000)]
made r_showtris transparent (quite faint actually), color coded different types of geometry, and now shows all tris (even hud), cleaned up a few qgl calls (GL_Clear added, etc) to make it more reliable
havoc [Tue, 2 Mar 2004 20:29:58 +0000 (20:29 +0000)]
temporarily disabled compiled rtlights (they'll make a comeback after dynamic rtlight optimizations are finished)
dynamic rtlight shadow volumes for bmodels are now generated from a single mesh for the entire model, in which only some ranges of triangles are marked, this finally cured the performance problems with dlight
s
havoc [Tue, 2 Mar 2004 00:22:31 +0000 (00:22 +0000)]
dlights using light_lev now need the PFLAG_FULLDYNAMIC flag set to operate, otherwise they are ignored, this was necessary (lights that did not remove themselves were being treated as proper dlights), it is also now more tenebrae compatible (EF_FULLDYNAMIC translated to PFLAG_FULLDYNAMIC in GAME_TENEBRAE mode)
havoc [Mon, 1 Mar 2004 18:56:32 +0000 (18:56 +0000)]
more cleanups of R_RenderScene (now r_view_ variables exist which are copied from the r_refdef fields each frame, these variables can easily be reconfigured for texture renders for mirrors or whatever)