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