Changes to support the new render drivers

This commit is contained in:
cholleme 2003-02-15 17:59:35 +00:00
parent 332a2d3e6f
commit 2758179d5a
2 changed files with 252 additions and 283 deletions

View file

@ -86,9 +86,7 @@ refdef_t r_refdef;
mleaf_t *r_viewleaf, *r_oldviewleaf;
texture_t *r_notexture_mip;
int d_lightstylevalue[256]; // 8.8 fraction of base light value
int d_lghtstylevalue[256]; // 8.8 fraction of base light value
void R_MarkLeaves (void);
@ -162,7 +160,7 @@ cvar_t fog_end = {"fog_end","700"};
cvar_t gl_fog = {"gl_fog","1"};
cvar_t fog_waterfog = {"fog_waterfog","1"};
float fog_color[4];
cvar_t r_tangentscale = {"r_tangentscale","16"};
cvar_t r_tangentscale = {"r_tangentscale","1"};
mirrorplane_t mirrorplanes[NUM_MIRROR_PLANES];
@ -224,7 +222,7 @@ int CL_PointContents (vec3_t p)
{
int cont;
cont = CM_PointContents(p,0);
cont = CM_PointContents(cl.worldmodel,p,0);
//cont = SV_HullPointContents (&cl.worldmodel->hulls[0], 0, p);
/*
if (cont <= CONTENTS_CURRENT_0 && cont >= CONTENTS_CURRENT_DOWN)
@ -909,7 +907,8 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
if (!busy_caustics) {
anim = (int)(cl.time*10) & 3;
GL_Bind(paliashdr->gl_texturenum[currententity->skinnum][anim]);
if (paliashdr->shader->numcolorstages > 0)
GL_Bind(paliashdr->shader->colorstages[0].texture[0]->texnum);
// we can't dynamically colormap textures, so they are cached
// seperately for the players. Heads are just uncolored.
@ -925,7 +924,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
if (gl_wireframe.value) {
glDisable(GL_TEXTURE_2D);
}
/*
if ( gl_truform.value )
{
glEnable(GL_PN_TRIANGLES_ATI);
@ -934,7 +933,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
qglPNTrianglesiATI(GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI, gl_truform_tesselation.value);
}
*/
glColor3f(bright, bright, bright);
//if (busy_caustics)
@ -945,6 +944,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
if ( !busy_caustics )
{
anim = (int)(cl.time*10) & 3;
/*
if ( paliashdr->gl_lumatex[currententity->skinnum][anim] != 0)
{
glFogfv(GL_FOG_COLOR, color_black);
@ -968,6 +968,7 @@ void R_DrawAliasSurface (aliashdr_t *paliashdr, float bright, aliasframeinstant_
glDisable(GL_BLEND);
glFogfv(GL_FOG_COLOR, fog_color);
}
*/
}
if ((sh_showtangent.value) && (!busy_caustics)) {
@ -1064,7 +1065,9 @@ void R_DrawAliasModel (float bright)
VectorAdd (currententity->origin,paliashdr->maxs, maxs);
if (!R_CullBox (mins, maxs)) */
R_DrawAliasSurface (paliashdr, bright, aliasframeinstant);
// R_DrawAliasSurface (paliashdr, bright, aliasframeinstant);
R_DrawAliasAmbient(paliashdr, aliasframeinstant);
aliasframeinstant = aliasframeinstant->_next;
}
@ -1143,11 +1146,12 @@ void R_DrawAmbientEntities ()
switch (currententity->model->type)
{
case mod_alias:
R_DrawAmbientAlias (R_DrawAliasModel);
R_DrawAmbientAlias (R_DrawAliasModel);
break;
case mod_brush:
glColor3f(sh_lightmapbright.value,sh_lightmapbright.value,sh_lightmapbright.value);
R_DrawBrushModel(currententity);
R_DrawBrushModelAmbient(currententity);
break;
default:
@ -1171,7 +1175,7 @@ R_DrawEntitiesOnList
Post multiply the textures with the frame buff.
=============
*/
*//*
void R_DrawEntitiesOnList (void)
{
int i;
@ -1196,7 +1200,7 @@ void R_DrawEntitiesOnList (void)
case mod_brush:
//glColor3f(1.0,1.0,1.0);
//R_DrawBrushModel (currententity);
///_DrawBrushModel (currententity);
break;
default:
@ -1225,7 +1229,7 @@ void R_DrawEntitiesOnList (void)
}
*/
/*
=============
R_MarkEntitiesOnList
@ -1347,6 +1351,7 @@ void R_DrawLightSprites (void)
int i;
vec3_t dist;
float colorscale;
transform_t trans;
if (!cg_showentities.value)
return;
@ -1374,7 +1379,10 @@ void R_DrawLightSprites (void)
-currentshadowlight->origin[1],
-currentshadowlight->origin[2]);
*/
GL_SetupCubeMapMatrix(true);
VectorCopy(currententity->origin,trans.origin);
VectorCopy(currententity->angles,trans.angles);
trans.scale[0] = trans.scale[1] = trans.scale[2] = 1.0f;
GL_SetupCubeMapMatrix(&trans);
GL_EnableColorShader (false);
for (i=0 ; i<cl_numlightvisedicts ; i++)
@ -2285,15 +2293,17 @@ void R_RenderScene (void)
glFogfv(GL_FOG_COLOR, color_black);
R_DrawFullbrightSprites();
if (skytexturenum >= 0) {
glColor3f(1,1,1);
R_DrawSkyChain (cl.worldmodel->textures[skytexturenum]->texturechain);
cl.worldmodel->textures[skytexturenum]->texturechain = NULL;
if (skyshadernum >= 0) {
//glColor3f(1,1,1);
//R_DrawSkyChain (cl.worldmodel->mapshaders[skyshadernum]);
cl.worldmodel->mapshaders[skyshadernum].texturechain = NULL;
}
R_DrawCaustics();
// R_DrawCaustics();
DrawBlendedTextureChains();
//Removed to fix particle & water bug (see R_RenderView) - Eradicator
//R_DrawParticles (); //to fix the particles triangles showing up after water
@ -2337,11 +2347,9 @@ void R_ClearMirrorChains()
mirrorplanes[i].chain = NULL;
}
for (i=0 ; i<cl.worldmodel->numtextures ; i++)
for (i=0 ; i<cl.worldmodel->nummapshaders ; i++)
{
if (!cl.worldmodel->textures[i])
continue;
cl.worldmodel->textures[i]->texturechain = NULL;
cl.worldmodel->mapshaders[i].texturechain = NULL;
}
}
@ -2604,7 +2612,7 @@ void R_SetupMirrorShader(msurface_t *surf,mirrorplane_t *mir) {
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
GL_EnableMultitexture();
GL_Bind(surf->texinfo->texture->gl_texturenum);
//SHADERS GL_Bind(surf->texinfo->texture->gl_texturenum);
//No colormaps: Color maps are bound on tmu 0 so disable it
//and let tu1 modulate itself with the light map brightness
@ -2615,7 +2623,7 @@ void R_SetupMirrorShader(msurface_t *surf,mirrorplane_t *mir) {
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
glTexEnvf (GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
GL_Bind(surf->texinfo->texture->gl_texturenum);
//SHADERS GL_Bind(surf->texinfo->texture->gl_texturenum);
}
}
@ -2846,7 +2854,7 @@ void R_RenderView (void)
to avoid effection fog on the water. A particle draw is done after the water
draw to make sure particles are rendered over the surface of the water. - Eradicator*/
R_DrawWaterSurfaces ();
// R_DrawWaterSurfaces ();
R_DrawMirrorSurfaces ();
// More fog right here :)

View file

@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
int lightmap_bytes; // 1, 2, or 4
int lightmap_textures;
int lightmap_textures = 0;
unsigned blocklights[18*18];
@ -111,6 +111,8 @@ int R_AllocateVertexInTemp(vec3_t pos, float texture [2], float lightmap[2], byt
tempVertices[numTempVertices].color[i] = color[i];
}
globalVertexTable = tempVertices;
numTempVertices++;
return numTempVertices-1;
}
@ -337,7 +339,7 @@ R_TextureAnimation
Returns the proper texture for a given time and base texture
===============
*/
*//*
texture_t *R_TextureAnimation (texture_t *base)
{
int reletive;
@ -366,7 +368,7 @@ texture_t *R_TextureAnimation (texture_t *base)
return base;
}
*/
/*
=============================================================
@ -951,7 +953,7 @@ PENTA: Modifications
*/
void R_RenderBrushPoly (msurface_t *fa)
{
texture_t *t;
shader_t *s;
glpoly_t *p;
int i;
float *v;
@ -962,10 +964,12 @@ void R_RenderBrushPoly (msurface_t *fa)
return;
}
/*if (!busy_caustics)*/ {
t = R_TextureAnimation (fa->texinfo->texture);
//if (!busy_caustics)
{
s = fa->shader->shader;
GL_SelectTexture(GL_TEXTURE0_ARB);
GL_Bind (t->gl_texturenum);
if (s->numcolorstages > 0)
GL_Bind(s->colorstages[0].texture[0]->texnum);
}
if (fa->flags & SURF_DRAWTURB)
@ -981,7 +985,8 @@ void R_RenderBrushPoly (msurface_t *fa)
glNormal3fv(&fa->plane->normal[0]);
}
/*if (!busy_caustics)*/ {
//if (!busy_caustics)
{
GL_SelectTexture(GL_TEXTURE1_ARB);
GL_Bind (lightmap_textures + fa->lightmaptexturenum);
}
@ -1005,7 +1010,7 @@ R_RenderBrushPoly
PENTA:
================
*/
*//*
void R_RenderBrushPolyLuma (msurface_t *fa)
{
int i;
@ -1035,7 +1040,7 @@ void R_RenderBrushPolyLuma (msurface_t *fa)
glEnd ();
}
*/
/*
@ -1183,13 +1188,13 @@ void R_MirrorChain (msurface_t *s)
}
#if 0
//#if 0
/*
================
R_DrawWaterSurfaces
PENTA: Modifications
================
*/
*//*
void R_DrawWaterSurfaces (void)
{
int i;
@ -1230,25 +1235,25 @@ void R_DrawWaterSurfaces (void)
glColor4f (1,1,1,1);
glDisable (GL_BLEND);
}
#else
#else*/
/*
================
R_DrawWaterSurfaces
PENTA: Modifications
================
*/
*//*
void R_DrawWaterSurfaces (void)
{
int i;
msurface_t *s;
texture_t *t;
/*
/*PENTA: we always draw water at the end of the frame
if (r_wateralpha.value == 1.0 && gl_texsort.value)
return;
*/
//PENTA: we always draw water at the end of the frame
//if (r_wateralpha.value == 1.0 && gl_texsort.value)
// return;
//
// go back to the world matrix
@ -1276,17 +1281,17 @@ void R_DrawWaterSurfaces (void)
glColor4f (1,1,1,1);
}
/*if (!gl_texsort.value) {
if (!waterchain)
return;
for ( s = waterchain ; s ; s=s->texturechain) {
GL_Bind (s->texinfo->texture->gl_texturenum);
EmitWaterPolys (s);
}
waterchain = NULL;
} else */{
///*if (!gl_texsort.value) {
// if (!waterchain)
// return;
//
// for ( s = waterchain ; s ; s=s->texturechain) {
// GL_Bind (s->texinfo->texture->gl_texturenum);
// EmitWaterPolys (s);
// }
//
// waterchain = NULL;
// } else {
for (i=0 ; i<cl.worldmodel->numtextures ; i++)
{
@ -1348,7 +1353,7 @@ void R_DrawWaterSurfaces (void)
}
#endif
*/
/*
================
DrawTextureChains
@ -1361,9 +1366,10 @@ void DrawTextureChains (void)
{
int i;
msurface_t *s;
texture_t *t, *tani;
mapshader_t *sh;
shader_t *shani;
qboolean found = false;
mcurve_t *curve;
mesh_t *mesh;
//glBlendFunc(GL_ZERO,GL_SRC_COLOR);
//glEnable(GL_BLEND);
@ -1372,7 +1378,7 @@ void DrawTextureChains (void)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f(sh_lightmapbright.value,sh_lightmapbright.value,sh_lightmapbright.value);
GL_EnableMultitexture();
/* GL_EnableMultitexture();
if (sh_colormaps.value) {
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
} else {
@ -1387,7 +1393,7 @@ void DrawTextureChains (void)
glTexEnvf (GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
}
*/
if (gl_wireframe.value) {
@ -1399,41 +1405,42 @@ void DrawTextureChains (void)
causticschain = NULL; //clear chain here
R_EnableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
//R_EnableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
for (i=0 ; i<cl.worldmodel->numtextures ; i++)
for (i=0 ; i<cl.worldmodel->nummapshaders ; i++)
{
t = cl.worldmodel->textures[i];
if (!t)
sh = &cl.worldmodel->mapshaders[i];
if (!sh)
continue;
s = t->texturechain;
s = sh->texturechain;
if (!s)
continue;
/*
found = true;
if (i == skytexturenum) {
if (i == skyshadernum) {
continue;
//R_DrawSkyChain (s);
}
/*
else if (i == mirrortexturenum && r_mirroralpha.value != 1.0)
{
R_MirrorChain (s);
continue;
}
*/
//else if (i == mirrortexturenum && r_mirroralpha.value != 1.0)
//{
// R_MirrorChain (s);
// continue;
//}
//else
{
/* {
//PENTA: water at end of frame
if (s->flags & SURF_DRAWTURB)
continue;
GL_SelectTexture(GL_TEXTURE0_ARB);
tani = R_TextureAnimation (s->texinfo->texture);
GL_Bind (tani->gl_texturenum);
shani = s->shader->shader;
if (shani->numcolorstages > 0)
GL_Bind(shani->colorstages[0].texture[0]->texnum);
//Do the ambient pass
//now with arrays!
@ -1448,7 +1455,7 @@ void DrawTextureChains (void)
GL_SelectTexture(GL_TEXTURE0_ARB);
//Has this texture a luma texture then add it
/*
if (t->gl_lumitex) {
//vec3_t color_black = {0.0, 0.0, 0.0};
glFogfv(GL_FOG_COLOR, color_black);
@ -1475,8 +1482,8 @@ void DrawTextureChains (void)
glDisable(GL_BLEND);
glFogfv(GL_FOG_COLOR, fog_color);
}
s = t->texturechain;
*/
/* s = sh->texturechain;
//Make cauistics list
while (s) {
msurface_t *olds;
@ -1490,25 +1497,105 @@ void DrawTextureChains (void)
}
}
t->texturechain = NULL;
*/
//if (!(s->flags & (SURF_DRAWSKY | SURF_DRAWTURB)))
if (!IsShaderBlended(sh->shader)) {
R_DrawWorldAmbientChain(sh->texturechain);
sh->texturechain = NULL;
}
}
R_DisableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
for (i=0 ; i<cl.worldmodel->nummapshaders ; i++)
{
sh = &cl.worldmodel->mapshaders[i];
mesh = sh->meshchain;
if (!mesh)
continue;
if (!IsShaderBlended(mesh->shader->shader)) {
while (mesh) {
R_DrawMeshAmbient(mesh);
mesh = mesh->next;
}
sh->meshchain = NULL;
}
}
//R_DisableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
GL_SelectTexture(GL_TEXTURE1_ARB);
GL_DisableMultitexture();
//glDisable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask (1);
}
curve = curvechain;
i = 0;
while (curve) {
CS_DrawAmbient(curve);
curve = curve->next;
i++;
if (i > 1000) { Con_Printf("Badloop\n"); break; }
void DrawBlendedTextureChains (void)
{
int i;
msurface_t *s;
mapshader_t *sh;
shader_t *shani;
qboolean found = false;
mesh_t *mesh;
glDepthMask (1);
//GL_DisableMultitexture();
/*glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f(sh_lightmapbright.value,sh_lightmapbright.value,sh_lightmapbright.value);
if (gl_wireframe.value) {
GL_SelectTexture(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_2D);
GL_SelectTexture(GL_TEXTURE1_ARB);
glDisable(GL_TEXTURE_2D);
}
curvechain = NULL;
*/
causticschain = NULL; //clear chain here
//R_EnableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
for (i=0 ; i<cl.worldmodel->nummapshaders ; i++)
{
sh = &cl.worldmodel->mapshaders[i];
if (!sh)
continue;
s = sh->texturechain;
if (!s)
continue;
if (IsShaderBlended(sh->shader)) {
R_DrawWorldAmbientChain(sh->texturechain);
sh->texturechain = NULL;
}
}
for (i=0 ; i<cl.worldmodel->nummapshaders ; i++)
{
sh = &cl.worldmodel->mapshaders[i];
mesh = sh->meshchain;
if (!mesh)
continue;
if (IsShaderBlended(mesh->shader->shader)) {
while (mesh) {
R_DrawMeshAmbient(mesh);
mesh = mesh->next;
}
sh->meshchain = NULL;
}
}
//R_DisableVertexTable(VERTEX_TEXTURE | VERTEX_LIGHTMAP);
//GL_SelectTexture(GL_TEXTURE1_ARB);
//GL_DisableMultitexture();
glDisable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask (1);
}
void R_DrawBrushModelCaustics (entity_t *e);
@ -1618,7 +1705,7 @@ R_DrawBrushModel
PENTA: Modifications
=================
*/
*//*
void R_DrawBrushModel (entity_t *e)
{
vec3_t mins, maxs;
@ -1627,7 +1714,7 @@ void R_DrawBrushModel (entity_t *e)
mplane_t *pplane;
model_t *clmodel;
qboolean rotated;
texture_t *t;
shader_t *s;
//bright = 1;
@ -1726,19 +1813,20 @@ void R_DrawBrushModel (entity_t *e)
//
for (i=0 ; i<clmodel->nummodelsurfaces ; i++, psurf++)
{
// find which side of the node we are on
pplane = psurf->plane;
// find which side of the node we are on
pplane = psurf->plane;
//dot = DotProduct (modelorg, pplane->normal) - pplane->dist;
//dot = DotProduct (modelorg, pplane->normal) - pplane->dist;
// draw the polygon
//if (((psurf->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) ||
// (!(psurf->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON)))
//{
R_RenderBrushPoly (psurf);
//}
// draw the polygon
//if (((psurf->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) ||
// (!(psurf->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON)))
//{
R_RenderBrushPoly (psurf);
//}
}
*/
/*
// if luma, draw it too
psurf = &clmodel->surfaces[clmodel->firstmodelsurface];
//vec3_t color_black = {0.0, 0.0, 0.0};
@ -1752,9 +1840,9 @@ void R_DrawBrushModel (entity_t *e)
for (i=0 ; i<clmodel->nummodelsurfaces ; i++, psurf++)
{
t = R_TextureAnimation (psurf->texinfo->texture);
if ( t->gl_lumitex )
R_RenderBrushPolyLuma (psurf);
t = R_TextureAnimation (psurf->texinfo->texture);
if ( t->gl_lumitex )
R_RenderBrushPolyLuma (psurf);
}
glColor3f(sh_lightmapbright.value,sh_lightmapbright.value,sh_lightmapbright.value);
@ -1764,11 +1852,11 @@ void R_DrawBrushModel (entity_t *e)
GL_SelectTexture(GL_TEXTURE1_ARB);
glDisable(GL_BLEND);
glFogfv(GL_FOG_COLOR, fog_color);
*//*
GL_DisableMultitexture();
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glPopMatrix ();
}
}*/
/*
=================
@ -1918,7 +2006,9 @@ e->angles[0] = -e->angles[0]; // stupid quake bug
R_RotateForEntity (e);
e->angles[0] = -e->angles[0]; // stupid quake bug
//Draw model with specified ambient color
R_DrawBrushAmbient(e);
/* //Draw model with specified ambient color
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//
@ -1941,6 +2031,7 @@ e->angles[0] = -e->angles[0]; // stupid quake bug
//R_BlendLightmaps (); nope no lightmaps
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
*/
glPopMatrix ();
}
@ -1968,7 +2059,7 @@ void R_RecursiveWorldNode (mnode_t *node)
mplane_t *plane;
msurface_t *surf, **mark;
mleaf_t *pleaf;
mcurve_t *curve;
mesh_t *mesh;
double dot;
if (node->contents == CONTENTS_SOLID)
@ -2044,7 +2135,7 @@ void R_RecursiveWorldNode (mnode_t *node)
mark++;
continue;
}
/*
if (((*mark)->flags & SURF_DRAWTURB) && ((*mark)->flags & SURF_MIRROR)) {
mark++;
continue;
@ -2054,9 +2145,9 @@ void R_RecursiveWorldNode (mnode_t *node)
mark++;
continue;
}
(*mark)->texturechain = (*mark)->texinfo->texture->texturechain;
(*mark)->texinfo->texture->texturechain = (*mark);
*/
(*mark)->texturechain = (*mark)->shader->texturechain;
(*mark)->shader->texturechain = (*mark);
if (!((*mark)->flags & (SURF_DRAWSKY | SURF_DRAWTURB))) {
(*mark)->polys->chain = lightmap_polys[(*mark)->lightmaptexturenum];
@ -2069,16 +2160,16 @@ void R_RecursiveWorldNode (mnode_t *node)
} while (--c);
}
c = pleaf->firstcurve;
c = pleaf->firstmesh;
//if (pleaf->numcurves) Con_Printf("Numcurves %i\n",pleaf->numcurves);
for (i=0; i<pleaf->numcurves; i++) {
curve = &cl.worldmodel->curves[cl.worldmodel->leafcurves[c+i]];
for (i=0; i<pleaf->nummeshes; i++) {
mesh = &cl.worldmodel->meshes[cl.worldmodel->leafmeshes[c+i]];
if (curve->visframe == r_framecount) continue;
curve->visframe = r_framecount;
if (mesh->visframe == r_framecount) continue;
mesh->visframe = r_framecount;
curve->next = curvechain;
curvechain = curve;
mesh->next = mesh->shader->meshchain;
mesh->shader->meshchain = mesh;
//Con_Printf("AddCurve\n");
}
@ -2119,7 +2210,9 @@ void R_RecursiveWorldNode (mnode_t *node)
// recurse down the children, front side first
R_RecursiveWorldNode (node->children[side]);
R_RecursiveWorldNode (node->children[!side]);
/*
// draw stuff
c = node->numsurfaces;
@ -2141,10 +2234,11 @@ void R_RecursiveWorldNode (mnode_t *node)
// don't backface underwater surfaces, because they warp
if ( (dot < 0) ^ !!(surf->flags & SURF_PLANEBACK))
continue; // wrong side
if ( (dot < 0) ^ !!(surf->flags & SURF_PLANEBACK))
continue; // wrong side
if (surf->flags & SURF_MIRROR) {
@ -2168,15 +2262,15 @@ void R_RecursiveWorldNode (mnode_t *node)
}
// if sorting by texture, just store it out
/*if (gl_texsort.value)
{*/
//if (gl_texsort.value)
//{
// add the surface to the proper texture chain
//if (!mirror
//|| surf->texinfo->texture != cl.worldmodel->textures[mirrortexturenum])
//{
surf->texturechain = surf->texinfo->texture->texturechain;
surf->texinfo->texture->texturechain = surf;
surf->texturechain = surf->shader->texturechain;
surf->shader->texturechain = surf;
//}
@ -2190,24 +2284,24 @@ void R_RecursiveWorldNode (mnode_t *node)
lightmap_polys[surf->lightmaptexturenum] = surf->polys;
}
/*
} else if (surf->flags & SURF_DRAWSKY) {
surf->texturechain = skychain;
skychain = surf;
} else if (surf->flags & SURF_DRAWTURB) {
surf->texturechain = waterchain;
waterchain = surf;
} else
R_DrawSequentialPoly (surf);
*/
//} else if (surf->flags & SURF_DRAWSKY) {
// surf->texturechain = skychain;
// skychain = surf;
//} else if (surf->flags & SURF_DRAWTURB) {
// surf->texturechain = waterchain;
// waterchain = surf;
//} else
// R_DrawSequentialPoly (surf);
//
}
}
}
*/
// recurse down the back side
R_RecursiveWorldNode (node->children[!side]);
//R_RecursiveWorldNode (node->children[!side]);
}
@ -2401,13 +2495,14 @@ model_t *currentmodel;
int nColinElim;
//PENTA: temporaly storage for polygons that use an edge
/*
typedef struct {
int used; //how many polygons use this edge
glpoly_t *poly[2]; //pointer to the polygons who use this edge
} temp_connect_t;
temp_connect_t *tempEdges;
*/
/*
================
@ -2416,7 +2511,7 @@ SetupSurfaceConnectivity
Setup the neighour pointers of this surface's polygon.
================
*/
*//*
void SetupSurfaceConnectivity(msurface_t *surf)
{
int i,j,lindex;
@ -2439,14 +2534,14 @@ void SetupSurfaceConnectivity(msurface_t *surf)
}
}
}
*/
/*
================
PENTA:
PrintTempEdges
================
*/
*//*
void PrintTempEdges()
{
int i;
@ -2459,7 +2554,7 @@ void PrintTempEdges()
Con_Printf("moord en brand %d\n",tempEdge->used);
}
}
*/
/*
================
BuildPolyFromSurface
@ -2467,7 +2562,7 @@ BuildPolyFromSurface
Creer polygons van de lijst van surfaces om
gemakkelijk aan opengl te geven
================
*/
*//*
void BuildPolyFromSurface (msurface_t *fa)
{
int i, lindex, lnumverts;
@ -2555,7 +2650,7 @@ void BuildPolyFromSurface (msurface_t *fa)
poly->numverts = lnumverts;
}
*/
/*
========================
GL_CreateSurfaceLightmap
@ -2610,138 +2705,9 @@ void GL_BuildLightmaps (void)
gl_lightmap_format = GL_RGB;
lightmap_bytes = 4;
/*
gl_lightmap_format = GL_LUMINANCE;
// default differently on the Permedia
if (isPermedia)
gl_lightmap_format = GL_RGBA;
if (COM_CheckParm ("-lm_1"))
gl_lightmap_format = GL_LUMINANCE;
if (COM_CheckParm ("-lm_a"))
gl_lightmap_format = GL_ALPHA;
if (COM_CheckParm ("-lm_i"))
gl_lightmap_format = GL_INTENSITY;
if (COM_CheckParm ("-lm_2"))
gl_lightmap_format = GL_RGBA4;
if (COM_CheckParm ("-lm_4"))
gl_lightmap_format = GL_RGBA;
switch (gl_lightmap_format)
{
case GL_RGBA:
lightmap_bytes = 4;
break;
case GL_RGBA4:
lightmap_bytes = 2;
break;
case GL_LUMINANCE:
case GL_INTENSITY:
case GL_ALPHA:
lightmap_bytes = 1;
break;
}
*/
/*
for (j=1 ; j<MAX_MODELS ; j++)
{
m = cl.model_precache[j];
if (!m)
break;
if (m->name[0] == '*')
continue;
r_pcurrentvertbase = m->vertexes;
currentmodel = m;
//PENTA: Allocate storage for our edge table
tempEdges = Hunk_TempAlloc(m->numedges * sizeof(temp_connect_t));
//clear tempedges
for (i=0; i<m->numedges; i++) {
tempEdges[i].used = 0;
tempEdges[i].poly[0] = NULL;
tempEdges[i].poly[1] = NULL;
}
for (i=0 ; i<m->numsurfaces ; i++)
{
//GL_CreateSurfaceLightmap (m->surfaces + i);
if ( m->surfaces[i].flags & SURF_DRAWTURB )
continue;
#ifndef QUAKE2
if ( m->surfaces[i].flags & SURF_DRAWSKY )
continue;
#endif
// BuildPolyFromSurface (m->surfaces + i);
}
//PENTA: we now have the connectivity in tempEdges now store it in the polygons
for (i=0 ; i<m->numsurfaces ; i++)
{
if ( m->surfaces[i].flags & SURF_DRAWTURB )
continue;
#ifndef QUAKE2
if ( m->surfaces[i].flags & SURF_DRAWSKY )
continue;
#endif
// SetupSurfaceConnectivity (m->surfaces + i);
}
}
Con_Printf("Connectivity calculated\n");
*/
/*
PENTA: Normalize texture coordinate s/t's since we now use them as tangent space
*/
for (j=1 ; j<MAX_MODELS ; j++)
{
mtexinfo_t *texinfos;
m = cl.model_precache[j];
if (!m)
break;
if (m->name[0] == '*')
continue;
texinfos = m->texinfo;
for (i=0; i<m->numtexinfo; i++) {
VectorNormalize(texinfos[i].vecs[0]);
VectorNormalize(texinfos[i].vecs[1]);
}
}
/*
if (!gl_texsort.value)
GL_SelectTexture(GL_TEXTURE1_ARB);
*/
//
// upload all lightmaps that were filled
//
for (i=0 ; i<cl.worldmodel->numlightmaps ; i++)
{
/*
if (!allocated[i][0])
break; // no more used
lightmap_modified[i] = false;
lightmap_rectchange[i].l = BLOCK_WIDTH;
lightmap_rectchange[i].t = BLOCK_HEIGHT;
lightmap_rectchange[i].w = 0;
lightmap_rectchange[i].h = 0;
GL_Bind(lightmap_textures + i);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D (GL_TEXTURE_2D, 0, lightmap_bytes
, BLOCK_WIDTH, BLOCK_HEIGHT, 0,
gl_lightmap_format, GL_UNSIGNED_BYTE, lightmaps+i*BLOCK_WIDTH*BLOCK_HEIGHT*lightmap_bytes);
*/
Con_Printf("Loadlightmap %i\n",i);
Con_Printf("Lightmap %i\n",i);
GL_Bind(lightmap_textures + i);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@ -2751,10 +2717,5 @@ void GL_BuildLightmaps (void)
cl.worldmodel->lightdata+(i*LIGHTMAP_WIDTH*LIGHTMAP_WIDTH*3));
}
/*
if (!gl_texsort.value)
GL_SelectTexture(GL_TEXTURE0_ARB);
*/
}