mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-16 01:11:44 +00:00
Hack to avoid horizontal shadow maps.
git-svn-id: https://svn.eduke32.com/eduke32@1274 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
0cd0afa945
commit
6e13967287
2 changed files with 17 additions and 10 deletions
|
@ -127,9 +127,7 @@ typedef struct s_prprogrambit {
|
||||||
|
|
||||||
// LIGHTS
|
// LIGHTS
|
||||||
#define PR_MAXLIGHTS 128
|
#define PR_MAXLIGHTS 128
|
||||||
#define PR_SM3_MAXLIGHTS 4
|
#define SHADOW_DEPTH_OFFSET 30
|
||||||
#define STR_EXPAND(tok) #tok
|
|
||||||
#define STR(tok) STR_EXPAND(tok)
|
|
||||||
|
|
||||||
typedef struct s_prlight {
|
typedef struct s_prlight {
|
||||||
int32_t x, y, z, horiz, range;
|
int32_t x, y, z, horiz, range;
|
||||||
|
|
|
@ -846,8 +846,9 @@ void polymer_drawsprite(int32_t snum)
|
||||||
bglScalef((float)(xsize), (float)(ysize), 1.0f);
|
bglScalef((float)(xsize), (float)(ysize), 1.0f);
|
||||||
|
|
||||||
prsectors[tspr->sectnum]->wallsproffset += 0.5f;
|
prsectors[tspr->sectnum]->wallsproffset += 0.5f;
|
||||||
/* bglPolygonOffset(-prsectors[tspr->sectnum]->wallsproffset,
|
|
||||||
-prsectors[tspr->sectnum]->wallsproffset);*/
|
if (!depth || mirrors[depth-1].plane)
|
||||||
|
bglPolygonOffset(-1.0f, -1.0f);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
ang = (float)((tspr->ang + 1024) & 2047) / (2048.0f / 360.0f);
|
||||||
|
@ -860,8 +861,8 @@ void polymer_drawsprite(int32_t snum)
|
||||||
inbuffer = horizsprite;
|
inbuffer = horizsprite;
|
||||||
|
|
||||||
prsectors[tspr->sectnum]->floorsproffset += 0.5f;
|
prsectors[tspr->sectnum]->floorsproffset += 0.5f;
|
||||||
/* bglPolygonOffset(-prsectors[tspr->sectnum]->floorsproffset,
|
if (!depth || mirrors[depth-1].plane)
|
||||||
-prsectors[tspr->sectnum]->floorsproffset);*/
|
bglPolygonOffset(-1.0f, -1.0f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -898,11 +899,13 @@ void polymer_drawsprite(int32_t snum)
|
||||||
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
||||||
bglEnable(GL_CULL_FACE);
|
bglEnable(GL_CULL_FACE);
|
||||||
|
|
||||||
// bglEnable(GL_POLYGON_OFFSET_FILL);
|
if (!depth || mirrors[depth-1].plane)
|
||||||
|
bglEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
polymer_drawplane(&spriteplane);
|
polymer_drawplane(&spriteplane);
|
||||||
|
|
||||||
// bglDisable(GL_POLYGON_OFFSET_FILL);
|
if (!depth || mirrors[depth-1].plane)
|
||||||
|
bglDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
||||||
bglDisable(GL_CULL_FACE);
|
bglDisable(GL_CULL_FACE);
|
||||||
|
@ -962,6 +965,12 @@ void polymer_addlight(_prlight light)
|
||||||
if (light.radius) {
|
if (light.radius) {
|
||||||
float radius, ang, horizang, lightpos[3];
|
float radius, ang, horizang, lightpos[3];
|
||||||
|
|
||||||
|
// hack to avoid lights beams perpendicular to walls
|
||||||
|
if ((light.horiz <= 100) && (light.horiz > 90))
|
||||||
|
light.horiz = 90;
|
||||||
|
if ((light.horiz > 100) && (light.horiz < 110))
|
||||||
|
light.horiz = 110;
|
||||||
|
|
||||||
lightpos[0] = light.y;
|
lightpos[0] = light.y;
|
||||||
lightpos[1] = -light.z / 16.0f;
|
lightpos[1] = -light.z / 16.0f;
|
||||||
lightpos[2] = -light.x;
|
lightpos[2] = -light.x;
|
||||||
|
@ -3648,7 +3657,7 @@ static void polymer_prepareshadows(void)
|
||||||
bglLoadMatrixf(prlights[i].transform);
|
bglLoadMatrixf(prlights[i].transform);
|
||||||
|
|
||||||
bglEnable(GL_POLYGON_OFFSET_FILL);
|
bglEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
bglPolygonOffset(15, 15);
|
bglPolygonOffset(5, SHADOW_DEPTH_OFFSET);
|
||||||
|
|
||||||
// for wallvisible()
|
// for wallvisible()
|
||||||
gx = globalposx;
|
gx = globalposx;
|
||||||
|
|
Loading…
Reference in a new issue