render_seg_new optimizations

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@4116 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2009-01-04 23:27:46 +00:00
parent c7aa8011af
commit f1a6345d20
+29 -13
View File
@@ -147,6 +147,7 @@ void render_seg_new(float vx, float vy, float vh, int mip, int x, int y, int xs,
sqr *u = SWS(s,1,1,mfactor); \
sqr *v = SWS(s,0,1,mfactor);
int rendered = 0;
LOOPH // floors
{
int start = xx;
@@ -155,26 +156,41 @@ void render_seg_new(float vx, float vy, float vh, int mip, int x, int y, int xs,
render_seg_new(vx, vy, vh, mip-1, start*2, yy*2, xx*2+2, yy*2+2);
continue;
}
stats[mip]++;
rendered++;
LOOPD
if((s->type==SPACE || s->type==CHF) && s->floor<=vh && render_floor)
switch(s->type)
{
render_flat(s->ftex, xx<<mip, yy<<mip, 1<<mip, s->floor, s, t, u, v, false);
if(s->floor<hdr.waterlevel && !SOLID(s) && !reflecting) addwaterquad(xx<<mip, yy<<mip, 1<<mip);
}
if(s->type==FHF)
{
render_flatdelta(s->ftex, xx<<mip, yy<<mip, 1<<mip, df(s), df(t), df(u), df(v), s, t, u, v, false);
if(s->floor-s->vdelta/4.0f<hdr.waterlevel && !SOLID(s) && !reflecting) addwaterquad(xx<<mip, yy<<mip, 1<<mip);
case SPACE:
case CHF:
if(s->floor<=vh && render_floor)
{
render_flat(s->ftex, xx<<mip, yy<<mip, 1<<mip, s->floor, s, t, u, v, false);
if(s->floor<hdr.waterlevel && !reflecting) addwaterquad(xx<<mip, yy<<mip, 1<<mip);
}
break;
case FHF:
render_flatdelta(s->ftex, xx<<mip, yy<<mip, 1<<mip, df(s), df(t), df(u), df(v), s, t, u, v, false);
if(s->floor-s->vdelta/4.0f<hdr.waterlevel && !reflecting) addwaterquad(xx<<mip, yy<<mip, 1<<mip);
break;
}
}}
if(!rendered) return;
stats[mip] += rendered;
if(!minimap) LOOPH continue; // ceils
LOOPD
if((s->type==SPACE || s->type==FHF) && s->ceil>=vh && render_ceil)
render_flat(s->ctex, xx<<mip, yy<<mip, 1<<mip, s->ceil, s, t, u, v, true);
if(s->type==CHF) //if(s->ceil>=vh)
render_flatdelta(s->ctex, xx<<mip, yy<<mip, 1<<mip, dc(s), dc(t), dc(u), dc(v), s, t, u, v, true);
switch(s->type)
{
case SPACE:
case FHF:
if(s->ceil>=vh && render_ceil)
render_flat(s->ctex, xx<<mip, yy<<mip, 1<<mip, s->ceil, s, t, u, v, true);
break;
case CHF:
render_flatdelta(s->ctex, xx<<mip, yy<<mip, 1<<mip, dc(s), dc(t), dc(u), dc(v), s, t, u, v, true);
break;
}
}}
LOOPH continue; // walls