mirror of
https://git.code.sf.net/p/quake/newtree
synced 2025-02-01 20:30:57 +00:00
Behold, the great state audit, and a few other things.
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.
This commit is contained in:
parent
b0fc35b3e3
commit
68a4e60eaf
11 changed files with 43 additions and 54 deletions
|
@ -297,9 +297,20 @@ void GL_Set2D (void);
|
|||
// gl_rmain.c
|
||||
//
|
||||
void GL_CheckGamma (unsigned char *pal);
|
||||
qboolean R_CullBox (vec3_t mins, vec3_t maxs);
|
||||
//qboolean R_CullBox (vec3_t mins, vec3_t maxs);
|
||||
void R_RotateForEntity (entity_t *e);
|
||||
|
||||
extern inline qboolean R_CullBox (vec3_t mins, vec3_t maxs)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0 ; i<4 ; i++)
|
||||
if (BoxOnPlaneSide (mins, maxs, &frustum[i]) == 2)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// gl_rlight.c
|
||||
//
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
/* Version strings */
|
||||
#define PACKAGE "quakeforge"
|
||||
#define PROGRAM "QuakeForge"
|
||||
#define VERSION "0.2.99beta1"
|
||||
#define VERSION "0.1.99pre2"
|
||||
#define QW_VERSION "2.40"
|
||||
#define QSG_VERSION "2.0"
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ mtriangle_t triangles[MAXALIASTRIS];
|
|||
// a pose is a single set of vertexes. a frame may be
|
||||
// an animating sequence of poses
|
||||
trivertx_t *poseverts[MAXALIASFRAMES];
|
||||
int posenum;
|
||||
extern int posenum;
|
||||
|
||||
byte player_8bit_texels[320*200];
|
||||
|
||||
|
|
|
@ -566,8 +566,9 @@ void R_DrawParticles (void)
|
|||
}
|
||||
|
||||
// hack a scale up to keep particles from disapearing
|
||||
scale = (p->org[0] - r_origin[0])*vpn[0] + (p->org[1] - r_origin[1])*vpn[1]
|
||||
+ (p->org[2] - r_origin[2])*vpn[2];
|
||||
scale = (p->org[0] - r_origin[0])*vpn[0] +
|
||||
(p->org[1] - r_origin[1])*vpn[1] +
|
||||
(p->org[2] - r_origin[2])*vpn[2];
|
||||
if (scale < 20)
|
||||
scale = 1;
|
||||
else
|
||||
|
@ -575,17 +576,12 @@ void R_DrawParticles (void)
|
|||
at = (byte *)&d_8to24table[(int)p->color];
|
||||
if (p->type==pt_fire)
|
||||
theAlpha = 255*(6-p->ramp)/6;
|
||||
// theAlpha = 192;
|
||||
// else if (p->type==pt_explode || p->type==pt_explode2)
|
||||
// theAlpha = 255*(8-p->ramp)/8;
|
||||
else
|
||||
theAlpha = 255;
|
||||
if (lighthalf)
|
||||
glColor4ub((byte) ((int) at[0] >> 1), (byte) ((int) at[1] >> 1), (byte) ((int) at[2] >> 1), theAlpha);
|
||||
else
|
||||
glColor4ub(at[0], at[1], at[2], theAlpha);
|
||||
// glColor3ubv (at);
|
||||
// glColor3ubv ((byte *)&d_8to24table[(int)p->color]);
|
||||
glTexCoord2f (0,0);
|
||||
glVertex3fv (p->org);
|
||||
glTexCoord2f (1,0);
|
||||
|
|
|
@ -186,6 +186,7 @@ R_CullBox
|
|||
Returns true if the box is completely outside the frustom
|
||||
=================
|
||||
*/
|
||||
/*
|
||||
qboolean R_CullBox (vec3_t mins, vec3_t maxs)
|
||||
{
|
||||
int i;
|
||||
|
@ -195,6 +196,7 @@ qboolean R_CullBox (vec3_t mins, vec3_t maxs)
|
|||
return true;
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void R_RotateForEntity (entity_t *e)
|
||||
|
@ -308,9 +310,6 @@ static void R_DrawSpriteModel (entity_t *e)
|
|||
glEnable (GL_ALPHA_TEST);
|
||||
glBegin (GL_QUADS);
|
||||
|
||||
glEnable (GL_ALPHA_TEST);
|
||||
glBegin (GL_QUADS);
|
||||
|
||||
glTexCoord2f (0, 1);
|
||||
VectorMA (e->origin, frame->down, up, point);
|
||||
VectorMA (point, frame->left, right, point);
|
||||
|
@ -352,7 +351,7 @@ float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
|||
};
|
||||
|
||||
vec3_t shadevector;
|
||||
float shadelight, ambientlight;
|
||||
float shadelight;
|
||||
|
||||
// precalculated dot products for quantized angles
|
||||
#define SHADEDOT_QUANT 16
|
||||
|
@ -565,11 +564,11 @@ static void R_DrawAliasModel (entity_t *e)
|
|||
// get lighting information
|
||||
//
|
||||
|
||||
ambientlight = shadelight = R_LightPoint (currententity->origin);
|
||||
shadelight = R_LightPoint (currententity->origin);
|
||||
|
||||
// allways give the gun some light
|
||||
if (e == &cl.viewent && ambientlight < 24)
|
||||
ambientlight = shadelight = 24;
|
||||
if (e == &cl.viewent)
|
||||
shadelight = min(shadelight, 24);
|
||||
|
||||
for (lnum=0 ; lnum<MAX_DLIGHTS ; lnum++)
|
||||
{
|
||||
|
@ -582,33 +581,27 @@ static void R_DrawAliasModel (entity_t *e)
|
|||
|
||||
if (add > 0)
|
||||
{
|
||||
ambientlight += add;
|
||||
//ZOID models should be affected by dlights as well
|
||||
shadelight += add;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// clamp lighting so it doesn't overbright as much
|
||||
if (ambientlight > 128)
|
||||
ambientlight = 128;
|
||||
if (ambientlight + shadelight > 192)
|
||||
shadelight = 192 - ambientlight;
|
||||
shadelight = min(shadelight, 100);
|
||||
|
||||
// ZOID: never allow players to go totally black
|
||||
if (!strcmp(clmodel->name, "progs/player.mdl"))
|
||||
{
|
||||
if (ambientlight < 8)
|
||||
ambientlight = shadelight = 8;
|
||||
shadelight = max(shadelight, 8);
|
||||
} else if (!gl_fb_models->value && (
|
||||
!strcmp (clmodel->name, "progs/flame.mdl") ||
|
||||
!strcmp (clmodel->name, "progs/flame2.mdl"))) {
|
||||
// HACK HACK HACK -- no fullbright colors, so make torches full light
|
||||
ambientlight = shadelight = 256;
|
||||
shadelight = 256;
|
||||
}
|
||||
|
||||
shadedots = r_avertexnormal_dots[((int)(e->angles[1] * (SHADEDOT_QUANT / 360.0))) & (SHADEDOT_QUANT - 1)];
|
||||
shadelight = shadelight / 200.0;
|
||||
shadelight /= 200.0;
|
||||
|
||||
an = e->angles[1]/180*M_PI;
|
||||
shadevector[0] = cos(-an);
|
||||
|
@ -671,14 +664,11 @@ static void R_DrawAliasModel (entity_t *e)
|
|||
if (clmodel->hasfullbrights && gl_fb_models->value &&
|
||||
paliashdr->gl_fb_texturenum[currententity->skinnum][anim]) {
|
||||
/*
|
||||
glEnable (GL_BLEND);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
*/
|
||||
|
||||
glBindTexture (GL_TEXTURE_2D, paliashdr->gl_fb_texturenum[currententity->skinnum][anim]);
|
||||
R_SetupAliasFrame (currententity->frame, paliashdr, true);
|
||||
|
||||
//glDisable (GL_BLEND);
|
||||
}
|
||||
|
||||
glShadeModel (GL_FLAT);
|
||||
|
|
|
@ -486,9 +486,7 @@ void R_BlendLightmaps (void)
|
|||
|
||||
glDepthMask (0); // don't bother writing Z
|
||||
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc (GL_ZERO, GL_SRC_COLOR);
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
for (i=0 ; i<MAX_LIGHTMAPS ; i++)
|
||||
{
|
||||
|
@ -531,9 +529,8 @@ R_RenderFullbrights (void)
|
|||
glpoly_t *p;
|
||||
float *v;
|
||||
|
||||
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
glEnable (GL_BLEND);
|
||||
glColor3f(1,1,1);
|
||||
|
||||
for (i=1; i<MAX_GLTEXTURES; i++) {
|
||||
|
@ -550,7 +547,7 @@ R_RenderFullbrights (void)
|
|||
}
|
||||
}
|
||||
|
||||
glDisable (GL_BLEND);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
|
||||
|
@ -703,6 +700,9 @@ void DrawTextureChains (void)
|
|||
int i;
|
||||
msurface_t *s;
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
|
||||
for (i=0 ; i<cl.worldmodel->numtextures ; i++)
|
||||
{
|
||||
if (!cl.worldmodel->textures[i])
|
||||
|
@ -712,6 +712,10 @@ void DrawTextureChains (void)
|
|||
|
||||
cl.worldmodel->textures[i]->texturechain = NULL;
|
||||
}
|
||||
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -827,16 +831,15 @@ void R_DrawBrushModel (entity_t *e)
|
|||
}
|
||||
}
|
||||
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
if (gl_texsort->value)
|
||||
R_BlendLightmaps ();
|
||||
|
||||
if (gl_fb_bmodels->value)
|
||||
R_RenderFullbrights ();
|
||||
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
glPopMatrix ();
|
||||
}
|
||||
|
||||
|
@ -990,9 +993,6 @@ void R_DrawWorld (void)
|
|||
// Be sure to clear the skybox --KB
|
||||
R_DrawSky ();
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
|
||||
R_RecursiveWorldNode (cl.worldmodel->nodes);
|
||||
|
||||
DrawTextureChains ();
|
||||
|
@ -1002,10 +1002,6 @@ void R_DrawWorld (void)
|
|||
|
||||
if (gl_fb_bmodels->value)
|
||||
R_RenderFullbrights ();
|
||||
|
||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_BLEND);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1233,7 +1233,6 @@ void SCR_UpdateScreen (void)
|
|||
// LordHavoc: adjustable brightness and contrast,
|
||||
// also makes polyblend apply to whole screen
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glEnable(GL_BLEND);
|
||||
Cvar_SetValue (brightness, bound (1, brightness->value, 5));
|
||||
if (lighthalf) // LordHavoc: render was done at half brightness
|
||||
f = brightness->value * 2;
|
||||
|
@ -1280,7 +1279,6 @@ void SCR_UpdateScreen (void)
|
|||
glEnd ();
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
V_UpdatePalette ();
|
||||
|
|
|
@ -652,8 +652,6 @@ R_DrawSkyBox (void)
|
|||
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
glDepthFunc (GL_ALWAYS);
|
||||
// glDisable (GL_BLEND);
|
||||
// glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glDepthRange (gldepthmax, gldepthmax);
|
||||
if (lighthalf)
|
||||
glColor3f(0.5,0.5,0.5);
|
||||
|
@ -733,8 +731,6 @@ R_DrawSkyDome (void)
|
|||
{
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
glDepthFunc (GL_ALWAYS);
|
||||
// glDisable (GL_BLEND);
|
||||
// glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glDepthRange (gldepthmax, gldepthmax);
|
||||
glDisable (GL_BLEND);
|
||||
|
@ -764,7 +760,6 @@ R_DrawSkyDome (void)
|
|||
R_DrawSkyLayer (speedscale);
|
||||
}
|
||||
|
||||
// glDisable (GL_BLEND);
|
||||
glColor3f (1,1,1);
|
||||
glDepthFunc (GL_LEQUAL);
|
||||
glEnable (GL_DEPTH_TEST);
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "protocol.h"
|
||||
|
||||
#ifdef HAVE_LINUX_JOYSTICK_H
|
||||
|
||||
#include <linux/joystick.h>
|
||||
|
|
|
@ -197,6 +197,7 @@ model_t *Mod_ForName (char *name, qboolean crash)
|
|||
|
||||
mod = Mod_FindName (name);
|
||||
|
||||
Con_DPrintf("Mod_ForName: %s, %p\n", name, mod);
|
||||
return Mod_LoadModel (mod, crash);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ mtriangle_t triangles[MAXALIASTRIS];
|
|||
// a pose is a single set of vertexes. a frame may be
|
||||
// an animating sequence of poses
|
||||
trivertx_t *poseverts[MAXALIASFRAMES];
|
||||
int posenum;
|
||||
int posenum = 0;
|
||||
|
||||
void *Mod_LoadAliasFrame (void * pin, maliasframedesc_t *frame);
|
||||
void *Mod_LoadAliasGroup (void * pin, maliasframedesc_t *frame);
|
||||
|
|
Loading…
Reference in a new issue