mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-26 03:30:46 +00:00
Sprite and model shadows.
Also fixes a bug with shadows and mirrors. git-svn-id: https://svn.eduke32.com/eduke32@1271 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
f285ad903c
commit
5a843f0fd1
1 changed files with 17 additions and 3 deletions
|
@ -1087,7 +1087,7 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
||||||
if (wall[sec->wallptr + i].cstat & 48)
|
if (wall[sec->wallptr + i].cstat & 48)
|
||||||
localmaskwall[localmaskwallcnt++] = sec->wallptr + i;
|
localmaskwall[localmaskwallcnt++] = sec->wallptr + i;
|
||||||
|
|
||||||
if (!depth &&
|
if (!depth && (overridematerial & prprogrambits[PR_BIT_DIFFUSE_MIRROR_MAP].bit) &&
|
||||||
wall[sec->wallptr + i].overpicnum == 560 &&
|
wall[sec->wallptr + i].overpicnum == 560 &&
|
||||||
wall[sec->wallptr + i].cstat & 64)
|
wall[sec->wallptr + i].cstat & 64)
|
||||||
{
|
{
|
||||||
|
@ -1100,6 +1100,7 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
||||||
if (doquery && (!drawingstate[wall[sec->wallptr + i].nextsector]))
|
if (doquery && (!drawingstate[wall[sec->wallptr + i].nextsector]))
|
||||||
{
|
{
|
||||||
float pos[3], sqdist;
|
float pos[3], sqdist;
|
||||||
|
int32_t oldoverridematerial;
|
||||||
|
|
||||||
pos[0] = globalposy;
|
pos[0] = globalposy;
|
||||||
pos[1] = -(float)(globalposz) / 16.0f;
|
pos[1] = -(float)(globalposz) / 16.0f;
|
||||||
|
@ -1121,11 +1122,12 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
||||||
bglGenQueriesARB(1, &queryid[sec->wallptr + i]);
|
bglGenQueriesARB(1, &queryid[sec->wallptr + i]);
|
||||||
bglBeginQueryARB(GL_SAMPLES_PASSED_ARB, queryid[sec->wallptr + i]);
|
bglBeginQueryARB(GL_SAMPLES_PASSED_ARB, queryid[sec->wallptr + i]);
|
||||||
|
|
||||||
|
oldoverridematerial = overridematerial;
|
||||||
overridematerial = 0;
|
overridematerial = 0;
|
||||||
|
|
||||||
polymer_drawplane(&prwalls[sec->wallptr + i]->mask);
|
polymer_drawplane(&prwalls[sec->wallptr + i]->mask);
|
||||||
|
|
||||||
overridematerial = 0xFFFFFFFF;
|
overridematerial = oldoverridematerial;
|
||||||
|
|
||||||
bglEndQueryARB(GL_SAMPLES_PASSED_ARB);
|
bglEndQueryARB(GL_SAMPLES_PASSED_ARB);
|
||||||
|
|
||||||
|
@ -3611,10 +3613,11 @@ static void polymer_prepareshadows(void)
|
||||||
{
|
{
|
||||||
int32_t i, j;
|
int32_t i, j;
|
||||||
int32_t gx, gy, gz;
|
int32_t gx, gy, gz;
|
||||||
|
int32_t oldoverridematerial;
|
||||||
|
|
||||||
i = j = 0;
|
i = j = 0;
|
||||||
|
|
||||||
while ((i < lightcount) && (j < 1))
|
while ((i < lightcount) && (j < 4))
|
||||||
{
|
{
|
||||||
if (prlights[i].radius)
|
if (prlights[i].radius)
|
||||||
{
|
{
|
||||||
|
@ -3640,7 +3643,18 @@ static void polymer_prepareshadows(void)
|
||||||
gy = globalposy;
|
gy = globalposy;
|
||||||
gz = globalposz;
|
gz = globalposz;
|
||||||
|
|
||||||
|
oldoverridematerial = overridematerial;
|
||||||
|
// smooth model shadows
|
||||||
|
overridematerial = prprogrambits[PR_BIT_ANIM_INTERPOLATION].bit;
|
||||||
|
// used by alpha-testing for sprite silhouette
|
||||||
|
overridematerial |= prprogrambits[PR_BIT_DIFFUSE_MAP].bit;
|
||||||
|
|
||||||
|
// to force sprite drawing
|
||||||
|
depth++;
|
||||||
polymer_displayrooms(prlights[i].sector);
|
polymer_displayrooms(prlights[i].sector);
|
||||||
|
depth--;
|
||||||
|
|
||||||
|
overridematerial = oldoverridematerial;
|
||||||
|
|
||||||
globalposx = gx;
|
globalposx = gx;
|
||||||
globalposy = gy;
|
globalposy = gy;
|
||||||
|
|
Loading…
Reference in a new issue