mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-24 13:01:47 +00:00
- Fixed drawing of wide high resolution skies. (At least for the samples I
received. I'm not convinced that it's yet fixed for the general case.) SVN r1930 (trunk)
This commit is contained in:
parent
788f17323c
commit
1c9b693087
4 changed files with 20 additions and 15 deletions
|
@ -1,3 +1,7 @@
|
|||
October 23, 2009
|
||||
- Fixed drawing of wide high resolution skies. (At least for the samples I
|
||||
received. I'm not convinced that it's yet fixed for the general case.)
|
||||
|
||||
October 19, 2009 (Changes by Graf Zahl)
|
||||
- fixed: Setting the first state's duration of a fast projectile to 0 caused
|
||||
an underflow and blocked all further state changes.
|
||||
|
|
|
@ -834,6 +834,6 @@ void R_UpdateAnimations (DWORD mstime)
|
|||
|
||||
// Scroll the sky
|
||||
double ms = (double)mstime * FRACUNIT;
|
||||
sky1pos = fixed_t(fmod (ms * level.skyspeed1, double(TexMan[sky1texture]->GetWidth() << FRACBITS)));
|
||||
sky2pos = fixed_t(fmod (ms * level.skyspeed2, double(TexMan[sky2texture]->GetWidth() << FRACBITS)));
|
||||
sky1pos = fixed_t(fmod (ms * level.skyspeed1, double(TexMan[sky1texture]->GetScaledWidth() << FRACBITS)));
|
||||
sky2pos = fixed_t(fmod (ms * level.skyspeed2, double(TexMan[sky2texture]->GetScaledWidth() << FRACBITS)));
|
||||
}
|
||||
|
|
|
@ -764,17 +764,16 @@ static int skycolplace;
|
|||
// Get a column of sky when there is only one sky texture.
|
||||
static const BYTE *R_GetOneSkyColumn (FTexture *fronttex, int x)
|
||||
{
|
||||
angle_t column = MulScale16 (frontxScale, viewangle + xtoviewangle[x]);
|
||||
|
||||
return fronttex->GetColumn ((((column^skyflip) >> sky1shift) + frontpos) >> FRACBITS, NULL);
|
||||
angle_t column = (viewangle + xtoviewangle[x]) ^ skyflip;
|
||||
return fronttex->GetColumn (MulScale32((column >> sky1shift) + frontpos, frontxScale), NULL);
|
||||
}
|
||||
|
||||
// Get a column of sky when there are two overlapping sky textures
|
||||
static const BYTE *R_GetTwoSkyColumns (FTexture *fronttex, int x)
|
||||
{
|
||||
DWORD ang = (viewangle + xtoviewangle[x])^skyflip;
|
||||
DWORD angle1 = (((DWORD)MulScale16 (frontxScale, ang) >> sky1shift) + frontpos) >> FRACBITS;
|
||||
DWORD angle2 = (((DWORD)MulScale16 (backxScale, ang) >> sky2shift) + backpos) >> FRACBITS;
|
||||
DWORD ang = (viewangle + xtoviewangle[x]) ^ skyflip;
|
||||
DWORD angle1 = (DWORD)MulScale32((ang >> sky1shift) + frontpos, frontxScale);
|
||||
DWORD angle2 = (DWORD)MulScale32((ang >> sky2shift) + backpos, backxScale);
|
||||
|
||||
// Check if this column has already been built. If so, there's
|
||||
// no reason to waste time building it again.
|
||||
|
@ -825,7 +824,6 @@ static void R_DrawSky (visplane_t *pl)
|
|||
dc_iscale = skyiscale >> skystretch;
|
||||
|
||||
clearbuf (swall+pl->minx, pl->maxx-pl->minx+1, dc_iscale<<2);
|
||||
rw_offset = frontpos;
|
||||
|
||||
if (MirrorFlags & RF_XFLIP)
|
||||
{
|
||||
|
@ -1328,6 +1326,11 @@ void R_DrawSkyPlane (visplane_t *pl)
|
|||
skyflip = l->args[2] ? 0u : ~0u;
|
||||
}
|
||||
}
|
||||
// frontpos = FixedMul(frontpos, frontskytex->xScale/2);
|
||||
if (backskytex != NULL)
|
||||
{
|
||||
backpos = FixedMul(backpos, backskytex->xScale);
|
||||
}
|
||||
|
||||
bool fakefixed = false;
|
||||
if (fixedcolormap)
|
||||
|
|
|
@ -115,11 +115,9 @@ void R_InitSkyMap ()
|
|||
}
|
||||
|
||||
// The (standard Doom) sky map is 256*128*4 maps.
|
||||
sky1shift = 22+skystretch-16;
|
||||
sky2shift = 22+skystretch-16;
|
||||
if (skytex1->WidthBits >= 9)
|
||||
sky1shift -= skystretch;
|
||||
if (skytex2->WidthBits >= 9)
|
||||
sky2shift -= skystretch;
|
||||
int swidth = skytex1->GetScaledWidth();
|
||||
sky1shift = 22 - 16 + (skystretch && swidth < 512) - (swidth >= 1024 && skytex1->xScale >= 4*FRACUNIT);
|
||||
swidth = skytex2->GetScaledWidth();
|
||||
sky2shift = 22 - 16 + (skystretch && swidth < 512) - (swidth >= 1024 && skytex2->xScale >= 4*FRACUNIT);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue