mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-12-02 00:21:48 +00:00
Migrate oldviewcluster stuff into the individual bmodel state. This allows us to clean things up a little.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6144 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
1d2626674e
commit
cfb1814be3
8 changed files with 48 additions and 55 deletions
|
@ -3947,9 +3947,6 @@ void Surf_BuildLightmaps (void)
|
||||||
lightmap[numlightmaps] = NULL;
|
lightmap[numlightmaps] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
r_oldviewcluster = -1;
|
|
||||||
r_oldviewcluster2 = -1;
|
|
||||||
|
|
||||||
//FIXME: unload stuff that's no longer relevant somehow.
|
//FIXME: unload stuff that's no longer relevant somehow.
|
||||||
for (i = 0; i < mod_numknown; i++)
|
for (i = 0; i < mod_numknown; i++)
|
||||||
{
|
{
|
||||||
|
@ -4004,9 +4001,7 @@ void Surf_NewMap (void)
|
||||||
Surf_DeInit();
|
Surf_DeInit();
|
||||||
|
|
||||||
r_viewcluster = -1;
|
r_viewcluster = -1;
|
||||||
r_oldviewcluster = -5;
|
|
||||||
r_viewcluster2 = -1;
|
r_viewcluster2 = -1;
|
||||||
r_oldviewcluster2 = -4;
|
|
||||||
#ifdef BEF_PUSHDEPTH
|
#ifdef BEF_PUSHDEPTH
|
||||||
r_pushdepth = false;
|
r_pushdepth = false;
|
||||||
for (s = r_polygonoffset_submodel_maps.string; s && *s; )
|
for (s = r_polygonoffset_submodel_maps.string; s && *s; )
|
||||||
|
@ -4095,9 +4090,7 @@ void Surf_PreNewMap(void)
|
||||||
r_loadbumpmapping |= r_shadow_realtime_world.ival || r_shadow_realtime_dlight.ival;
|
r_loadbumpmapping |= r_shadow_realtime_world.ival || r_shadow_realtime_dlight.ival;
|
||||||
#endif
|
#endif
|
||||||
r_viewcluster = -1;
|
r_viewcluster = -1;
|
||||||
r_oldviewcluster = -1;
|
|
||||||
r_viewcluster2 = -1;
|
r_viewcluster2 = -1;
|
||||||
r_oldviewcluster2 = -1;
|
|
||||||
|
|
||||||
Shader_DoReload();
|
Shader_DoReload();
|
||||||
}
|
}
|
||||||
|
|
|
@ -613,9 +613,6 @@ void Media_VideoRestarted(void);
|
||||||
void MYgluPerspective(double fovx, double fovy, double zNear, double zFar);
|
void MYgluPerspective(double fovx, double fovy, double zNear, double zFar);
|
||||||
|
|
||||||
void R_PushDlights (void);
|
void R_PushDlights (void);
|
||||||
qbyte *R_CalcVis_Q1 (void);
|
|
||||||
qbyte *R_MarkLeaves_Q2 (void);
|
|
||||||
qbyte *R_MarkLeaves_Q3 (void);
|
|
||||||
void R_SetFrustum (float projmat[16], float viewmat[16]);
|
void R_SetFrustum (float projmat[16], float viewmat[16]);
|
||||||
void R_SetRenderer(rendererinfo_t *ri);
|
void R_SetRenderer(rendererinfo_t *ri);
|
||||||
qboolean R_RegisterRenderer(void *module, rendererinfo_t *ri);
|
qboolean R_RegisterRenderer(void *module, rendererinfo_t *ri);
|
||||||
|
|
|
@ -2661,7 +2661,7 @@ unsigned int r_viewcontents;
|
||||||
//mleaf_t *r_viewleaf, *r_oldviewleaf;
|
//mleaf_t *r_viewleaf, *r_oldviewleaf;
|
||||||
//mleaf_t *r_viewleaf2, *r_oldviewleaf2;
|
//mleaf_t *r_viewleaf2, *r_oldviewleaf2;
|
||||||
int r_viewarea;
|
int r_viewarea;
|
||||||
int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2;
|
int r_viewcluster, r_viewcluster2;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -385,6 +385,11 @@ typedef struct cminfo_s
|
||||||
int numfaces;
|
int numfaces;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_CLIENT
|
||||||
|
int oldclusters[2];
|
||||||
|
qbyte *oldvis;
|
||||||
|
#endif
|
||||||
|
|
||||||
// struct bihnode_s *bihnodes;
|
// struct bihnode_s *bihnodes;
|
||||||
} cminfo_t;
|
} cminfo_t;
|
||||||
|
|
||||||
|
@ -4931,7 +4936,8 @@ static cmodel_t *CM_LoadMap (model_t *mod, qbyte *filein, size_t filelen, qboole
|
||||||
mod->rootnode = prv->cmodels[0].headnode;
|
mod->rootnode = prv->cmodels[0].headnode;
|
||||||
mod->nummodelsurfaces = prv->cmodels[0].numsurfaces;
|
mod->nummodelsurfaces = prv->cmodels[0].numsurfaces;
|
||||||
|
|
||||||
#ifndef SERVERONLY
|
#ifdef HAVE_CLIENT
|
||||||
|
prv->oldclusters[0] = prv->oldclusters[1] = -1;
|
||||||
if (qrenderer != QR_NONE)
|
if (qrenderer != QR_NONE)
|
||||||
{
|
{
|
||||||
builddata_t *bd = NULL;
|
builddata_t *bd = NULL;
|
||||||
|
@ -7352,10 +7358,9 @@ R_MarkLeaves
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
#ifdef Q3BSPS
|
#ifdef Q3BSPS
|
||||||
qbyte *R_MarkLeaves_Q3 (void)
|
qbyte *R_MarkLeaves_Q3 (model_t *mod, int clusters[2])
|
||||||
{
|
{
|
||||||
static pvsbuffer_t curframevis[R_MAX_RECURSE];
|
static pvsbuffer_t curframevis[R_MAX_RECURSE];
|
||||||
static qbyte *cvis[R_MAX_RECURSE];
|
|
||||||
qbyte *vis;
|
qbyte *vis;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -7363,11 +7368,12 @@ qbyte *R_MarkLeaves_Q3 (void)
|
||||||
mleaf_t *leaf;
|
mleaf_t *leaf;
|
||||||
mnode_t *node;
|
mnode_t *node;
|
||||||
int portal = r_refdef.recurse;
|
int portal = r_refdef.recurse;
|
||||||
|
cminfo_t *prv = mod->meshinfo;
|
||||||
|
|
||||||
if (!portal)
|
if (!portal)
|
||||||
{
|
{
|
||||||
if (r_oldviewcluster == r_viewcluster && !r_novis.value && r_viewcluster != -1)
|
if (prv->oldclusters[0] == clusters[0] && !r_novis.value && clusters[0] != -1)
|
||||||
return cvis[portal];
|
return prv->oldvis;
|
||||||
}
|
}
|
||||||
|
|
||||||
// development aid to let you run around and see exactly where
|
// development aid to let you run around and see exactly where
|
||||||
|
@ -7376,13 +7382,13 @@ qbyte *R_MarkLeaves_Q3 (void)
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
vissequence++;
|
vissequence++;
|
||||||
r_oldviewcluster = r_viewcluster;
|
prv->oldclusters[0] = clusters[0];
|
||||||
|
|
||||||
if (r_novis.ival || r_viewcluster == -1 || !cl.worldmodel->vis )
|
if (r_novis.ival || clusters[0] == -1 || !mod->vis )
|
||||||
{
|
{
|
||||||
vis = NULL;
|
vis = NULL;
|
||||||
// mark everything
|
// mark everything
|
||||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
|
for (i=0,leaf=mod->leafs ; i<mod->numleafs ; i++, leaf++)
|
||||||
{
|
{
|
||||||
// if (!leaf->nummarksurfaces)
|
// if (!leaf->nummarksurfaces)
|
||||||
// {
|
// {
|
||||||
|
@ -7405,8 +7411,8 @@ qbyte *R_MarkLeaves_Q3 (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, &curframevis[portal], PVM_FAST);
|
vis = CM_ClusterPVS (mod, clusters[0], &curframevis[portal], PVM_FAST);
|
||||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
|
for (i=0,leaf=mod->leafs ; i<mod->numleafs ; i++, leaf++)
|
||||||
{
|
{
|
||||||
cluster = leaf->cluster;
|
cluster = leaf->cluster;
|
||||||
if (cluster == -1)// || !leaf->nummarksurfaces)
|
if (cluster == -1)// || !leaf->nummarksurfaces)
|
||||||
|
@ -7429,8 +7435,8 @@ qbyte *R_MarkLeaves_Q3 (void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cvis[portal] = vis;
|
|
||||||
}
|
}
|
||||||
|
prv->oldvis = vis;
|
||||||
return vis;
|
return vis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7526,7 +7532,7 @@ start:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Q2BSPS
|
#ifdef Q2BSPS
|
||||||
qbyte *R_MarkLeaves_Q2 (void)
|
qbyte *R_MarkLeaves_Q2 (model_t *mod, int viewclusters[2])
|
||||||
{
|
{
|
||||||
static pvsbuffer_t curframevis[R_MAX_RECURSE];
|
static pvsbuffer_t curframevis[R_MAX_RECURSE];
|
||||||
static qbyte *cvis[R_MAX_RECURSE];
|
static qbyte *cvis[R_MAX_RECURSE];
|
||||||
|
@ -7538,57 +7544,58 @@ qbyte *R_MarkLeaves_Q2 (void)
|
||||||
qbyte *vis;
|
qbyte *vis;
|
||||||
|
|
||||||
int portal = r_refdef.recurse;
|
int portal = r_refdef.recurse;
|
||||||
|
cminfo_t *prv = mod->meshinfo;
|
||||||
|
|
||||||
if (r_refdef.forcevis)
|
if (r_refdef.forcevis)
|
||||||
{
|
{
|
||||||
vis = cvis[portal] = r_refdef.forcedvis;
|
vis = cvis[portal] = r_refdef.forcedvis;
|
||||||
|
|
||||||
r_oldviewcluster = -1;
|
prv->oldclusters[0] = -1;
|
||||||
r_oldviewcluster2 = -1;
|
prv->oldclusters[1] = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vis = cvis[portal];
|
vis = cvis[portal];
|
||||||
if (!portal)
|
if (!portal)
|
||||||
{
|
{
|
||||||
if (r_oldviewcluster == r_viewcluster && r_oldviewcluster2 == r_viewcluster2)
|
if (prv->oldclusters[0] == viewclusters[0] && prv->oldclusters[1] == viewclusters[1])
|
||||||
return vis;
|
return vis;
|
||||||
|
|
||||||
r_oldviewcluster = r_viewcluster;
|
prv->oldclusters[0] = viewclusters[0];
|
||||||
r_oldviewcluster2 = r_viewcluster2;
|
prv->oldclusters[1] = viewclusters[1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r_oldviewcluster = -1;
|
prv->oldclusters[0] = -1;
|
||||||
r_oldviewcluster2 = -1;
|
prv->oldclusters[1] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_novis.ival == 2)
|
if (r_novis.ival == 2)
|
||||||
return vis;
|
return vis;
|
||||||
|
|
||||||
if (r_novis.ival || r_viewcluster == -1 || !cl.worldmodel->vis)
|
if (r_novis.ival || r_viewcluster == -1 || !mod->vis)
|
||||||
{
|
{
|
||||||
// mark everything
|
// mark everything
|
||||||
for (i=0 ; i<cl.worldmodel->numleafs ; i++)
|
for (i=0 ; i<mod->numleafs ; i++)
|
||||||
cl.worldmodel->leafs[i].visframe = vissequence;
|
mod->leafs[i].visframe = vissequence;
|
||||||
for (i=0 ; i<cl.worldmodel->numnodes ; i++)
|
for (i=0 ; i<mod->numnodes ; i++)
|
||||||
cl.worldmodel->nodes[i].visframe = vissequence;
|
mod->nodes[i].visframe = vissequence;
|
||||||
return vis;
|
return vis;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r_viewcluster2 != r_viewcluster) // may have to combine two clusters because of solid water boundaries
|
if (viewclusters[1] != viewclusters[0]) // may have to combine two clusters because of solid water boundaries
|
||||||
{
|
{
|
||||||
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, &curframevis[portal], PVM_REPLACE);
|
vis = CM_ClusterPVS (mod, viewclusters[0], &curframevis[portal], PVM_REPLACE);
|
||||||
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster2, &curframevis[portal], PVM_MERGE);
|
vis = CM_ClusterPVS (mod, viewclusters[1], &curframevis[portal], PVM_MERGE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, &curframevis[portal], PVM_FAST);
|
vis = CM_ClusterPVS (mod, viewclusters[0], &curframevis[portal], PVM_FAST);
|
||||||
cvis[portal] = vis;
|
cvis[portal] = vis;
|
||||||
}
|
}
|
||||||
|
|
||||||
vissequence++;
|
vissequence++;
|
||||||
|
|
||||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
|
for (i=0,leaf=mod->leafs ; i<mod->numleafs ; i++, leaf++)
|
||||||
{
|
{
|
||||||
cluster = leaf->cluster;
|
cluster = leaf->cluster;
|
||||||
if (cluster == -1)
|
if (cluster == -1)
|
||||||
|
@ -7724,18 +7731,18 @@ static void CM_PrepareFrame(model_t *mod, refdef_t *refdef, int area, int viewcl
|
||||||
|
|
||||||
scenesequence++;
|
scenesequence++;
|
||||||
#ifdef Q3BSPS
|
#ifdef Q3BSPS
|
||||||
if (currentmodel->fromgame == fg_quake3)
|
if (mod->fromgame == fg_quake3)
|
||||||
{
|
{
|
||||||
entvis = surfvis = R_MarkLeaves_Q3 ();
|
entvis = surfvis = R_MarkLeaves_Q3 (mod, viewclusters);
|
||||||
Surf_RecursiveQ3WorldNode (currentmodel->nodes, (1<<r_refdef.frustum_numworldplanes)-1);
|
Surf_RecursiveQ3WorldNode (mod->nodes, (1<<r_refdef.frustum_numworldplanes)-1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
#ifdef Q2BSPS
|
#ifdef Q2BSPS
|
||||||
if (currentmodel->fromgame == fg_quake2)
|
if (mod->fromgame == fg_quake2)
|
||||||
{
|
{
|
||||||
entvis = surfvis = R_MarkLeaves_Q2 ();
|
entvis = surfvis = R_MarkLeaves_Q2 (mod, viewclusters);
|
||||||
Surf_RecursiveQ2WorldNode (currentmodel->nodes);
|
Surf_RecursiveQ2WorldNode (mod->nodes);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2530,8 +2530,8 @@ void Q1BSP_SetModelFuncs(model_t *mod)
|
||||||
|
|
||||||
{
|
{
|
||||||
struct q1bspprv_s *prv = mod->meshinfo = ZG_Malloc(&mod->memgroup, sizeof(struct q1bspprv_s));
|
struct q1bspprv_s *prv = mod->meshinfo = ZG_Malloc(&mod->memgroup, sizeof(struct q1bspprv_s));
|
||||||
prv->oldviewclusters[0] = -2; //make sure its reset properly.
|
prv->oldviewclusters[0] = -1; //make sure its reset properly.
|
||||||
prv->oldviewclusters[1] = -3;
|
prv->oldviewclusters[1] = -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1012,11 +1012,7 @@ void Mod_ModelLoaded(void *ctx, void *data, size_t a, size_t b)
|
||||||
#endif
|
#endif
|
||||||
#ifndef SERVERONLY
|
#ifndef SERVERONLY
|
||||||
if (mod->type == mod_brush)
|
if (mod->type == mod_brush)
|
||||||
{
|
|
||||||
Surf_BuildModelLightmaps(mod);
|
Surf_BuildModelLightmaps(mod);
|
||||||
r_oldviewcluster = -1; //just in case.
|
|
||||||
r_oldviewcluster2 = -2;
|
|
||||||
}
|
|
||||||
if (mod->type == mod_sprite)
|
if (mod->type == mod_sprite)
|
||||||
{
|
{
|
||||||
Mod_LoadSpriteShaders(mod);
|
Mod_LoadSpriteShaders(mod);
|
||||||
|
|
|
@ -297,7 +297,7 @@ extern vec3_t r_origin;
|
||||||
extern refdef_t r_refdef;
|
extern refdef_t r_refdef;
|
||||||
extern unsigned int r_viewcontents;
|
extern unsigned int r_viewcontents;
|
||||||
extern int r_viewarea;
|
extern int r_viewarea;
|
||||||
extern int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2; //q2
|
extern int r_viewcluster, r_viewcluster2;
|
||||||
extern texture_t *r_notexture_mip;
|
extern texture_t *r_notexture_mip;
|
||||||
|
|
||||||
extern texid_t netgraphtexture; // netgraph texture
|
extern texid_t netgraphtexture; // netgraph texture
|
||||||
|
|
|
@ -2121,10 +2121,10 @@ static void SV_Status_f (void)
|
||||||
if (net_enable_rtcbroker.ival)
|
if (net_enable_rtcbroker.ival)
|
||||||
Con_Printf(" RTC");
|
Con_Printf(" RTC");
|
||||||
if (net_enable_websockets.ival)
|
if (net_enable_websockets.ival)
|
||||||
Con_Printf(" WS");
|
Con_Printf(" WebSocket");
|
||||||
#endif
|
#endif
|
||||||
if (net_enable_qizmo.ival)
|
if (net_enable_qizmo.ival)
|
||||||
Con_Printf(" QZ");
|
Con_Printf(" Qizmo");
|
||||||
if (net_enable_qtv.ival)
|
if (net_enable_qtv.ival)
|
||||||
Con_Printf(" QTV");
|
Con_Printf(" QTV");
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue