Improve culling of off-tile walls -> improve performance in multi-tile rendering

This commit is contained in:
jndean
2023-09-10 16:47:37 +00:00
parent 880e546e17
commit 4e5e2ab436
3 changed files with 15 additions and 3 deletions
+10 -2
View File
@@ -211,8 +211,10 @@ void R_ClipPassWallSegment(int first, int last) {
//
void R_ClearClipSegs(void) {
solidsegs[0].first = -0x7fffffff;
solidsegs[0].last = -1;
solidsegs[1].first = viewwidth;
// solidsegs[0].last = -1; // JOSEF
// solidsegs[1].first = viewwidth; // JOSEF
solidsegs[0].last = tileLeftClip - 1; // JOSEF
solidsegs[1].first = tileRightClip; // JOSEF
solidsegs[1].last = 0x7fffffff;
newend = solidsegs + 2;
}
@@ -276,6 +278,12 @@ void R_AddLine(seg_t *line) {
x1 = viewangletox[angle1];
x2 = viewangletox[angle2];
// JOSEF: extra clipping for multi-tile rendering
if (x1 < tileLeftClip) x1 = tileLeftClip;
if (x2 < tileLeftClip) x2 = tileLeftClip;
if (x1 > tileRightClip) x1 = tileRightClip;
if (x2 > tileRightClip) x2 = tileRightClip;
// Does not cross a pixel?
if (x1 == x2)
return;
+3 -1
View File
@@ -43,7 +43,9 @@
#define SIL_TOP 2
#define SIL_BOTH 3
#define MAXDRAWSEGS 256
// JOSEF: Fewer drawsegs needed for multitile rendering?
// #define MAXDRAWSEGS 256
#define MAXDRAWSEGS 64 // JOSEF: Random choice, refine later
//
// INTERNAL MAP TYPES
+2
View File
@@ -627,6 +627,8 @@ void R_ExecuteSetViewSize(void) {
// JOSEF
tileLeftClip = tileID * IPUCOLSPERRENDERTILE;
tileRightClip = tileLeftClip + IPUCOLSPERRENDERTILE;
// tileLeftClip += 1; // Helps visualise multitil rendering :)
// tileRightClip -= 1;
R_InitBuffer(scaledviewwidth, viewheight);