addition, removed support (for now) for SGIS and EXT multitexture. It
allowed me to enhance support for ARB multitexture, which is better anyway
(especially for Radeon, but that won't get special support yet until we
need a third texture pass).
Updated the Unix 8-bit GL code to be more like the Windows version, which
may work better. It still defaults off, because many drivers have bugs in
their handling of the shared texture palette extension.
another alpha blend, it's set up exactly as another factor in determining
the final blend. This should help speed up framerates a little.
New cvars:
cl_cshift_bonus: Set to 0 to disable bonus flashes.
cl_cshift_contents: Set to 0 to disable content blends.
cl_cshift_damage: Set to 0 to disable damage blends.
cl_cshift_powerup: Set to 0 to disable powerup (quad, pent, etc) blends.
All of these cvars work for both GL and software, and all of them check
the value of the "cshifts" serverinfo. cshifts is a bit field, with the
following bits defined:
bonus: 1
contents: 2
damage: 4
powerup: 8
An admin can force any of these to be respected by choosing the numbers of
the cshifts to be enforced, and adding them up.
examples:
serverinfo cshifts 15
turns them all on.
serverinfo cshifts 10
turns on powerup and contents shifts.
also, the gl_cshiftpercent Cvar no longer does anything. I'll remove it
entirely soon.
rest: Myriad stuff.
r_netgraph now recognizes and abides by the cl_hudswap Cvar.
show_fps and show_time are on the same line now, and stay out of each
others' way.
New Draw_ function: Draw_TextBox(). It's like M_DrawTextBox(), except it
doesn't screw around with the screen coordinates.
new function WriteTGAfile. Also, put in the tga header structure.
NOTE: this is currently broken for non gcc ocmilers. you will get a
#error message.
include/quakefs.h source/quakefs.c:
new function COM_WriteBuffers. Like COM_WriteFile, but scatter/gather
style.
source/gl_screen.c source/screen.c:
misc cleanups. differences are getting fewer. should be mostly
mergable soon (minus truly sw/gl specific code).
sbar.c: Simplify Sbar_ColorForMap()
gl_view.c: Remove palette shifting code -- we don't do that any more in
GL, we alpha blend the screen. Bad to do it twice, plus it messes up
texture loads.
First off, a cleanup in alias model rendering.
Then we have R_CullBox, which is now a inline function.
Then the big one, the state change cleanup, right now GL_BLEND.
view.h: Add brightness, contrast cvars as extern
menu.c: Change brightness scroller to use the brightness cvar, add
contrast scroller.
r_view, sw_view.c: Add brightness/contrast cvars to software, and make
them work.
- Cleanup for the screenshot code.. (Now requires OpenGL 1.2+)
gl_rsurf.c:
- Oh Mr Havoc, *WHACK*, you needed to disable GL_BLEND when you switch
to GL_REPLACE..
make work properly:
Win32 thing.. If you don't free textures explicitly, you can cause a
problem with nVidia drivers.
Colored lighting is now RGB instead of RGBA. The alpha is kinda pointless
on a lightmap and the effect's not all that great. Plus people stuck with
16 bit OpenGL (any other 3dfx people out there?) will be quite pleased
with the improvement in image quality. This does include LordHavoc's
dynamic light optimization code which takes most of the pain out of having
gl_flashblend off.
All glColor*'s are now half of what they used to be, except where they
aren't. If that doesn't make sense, don't worry. If you see one that's
only half what you'd expect, don't worry---it probably is meant to be like
that.. (More below)
glDisable (GL_BLEND) is now a thing of the GL_PAST. As is GL_REPLACE.
Instead, we _always_ use GL_MODULATE and leave GL_BLEND turned on. This
seems at first like it might be a performance hit, but I swear it's much
more expensive to change blending modes and texture functions 20-30 times
every screen frame!
Win32 issue.. Even though we check for multitexture, we currently don't
use it. Reason is that I am planning to replace SGIS_multitexture with
the preferred ARB_multitexture extension which is supported in most GL 1.1
implementations and is a requirement for GL 1.2 anyway. I also wanted to
get rid of some duplicated code. Since Linux doesn't support multitexture
yet, I just commented out the code keeping me from compiling to get it to
work. Win32 should work without it until it's fixed, which shouldn't be
long since the differences between SGIS and ARB multitextures as far as
Quake is concerned is minimal AT BEST.
LordHavoc and I have been working tirelessly (well not quite, we both did
manage to sleep sometime during this ordeal) to fix the lighting in the GL
renderers! It looks DAMNED CLOSE to software's lighting now, including
the ability to overbright a color. You've gotta see this to know what I'm
talking about. That's why the glColor*'s are halved in most places. The
gamma table code and the general way it works is LordHavoc's design, but
over the course of re-implementing it in QF we did come up with a few more
small optimizations.
A lot of people have noticed that QF's fps count has gone to shit lately.
No promises that this undid whatever the problem was. That means there
could be a huge optimization lurking somewhere in the shadows, waiting for
us to fix it for a massive FPS boost. Even if there's not, the code in
this commit DOUBLED MY FPS COUNT. Granted I was getting pathetic FPS as
it was (around 30, which is pathetic even for a Voodoo3 in Linux) but
still---60 is a big improvement over 30!
Please be sure to "test" this code thuroughly.