# Conflicts:
#	src/r_segs.cpp
#	src/v_draw.cpp
This commit is contained in:
Rachael Alexanderson 2016-11-05 23:38:50 -04:00
commit 5e547e9455
2 changed files with 22 additions and 6 deletions

View file

@ -1225,7 +1225,7 @@ void wallscan_drawcol1(int x, int y1, int y2, WallscanSampler &sampler, DWORD(*d
}
else
{
if (sampler.uv_max == 0) // power of two
if (sampler.uv_max == 0 || sampler.uv_step == 0) // power of two
{
int count = y2 - y1;
@ -1300,7 +1300,7 @@ void wallscan_drawcol4(int x, int y1, int y2, WallscanSampler *sampler, void(*dr
}
else
{
if (sampler[0].uv_max == 0) // power of two, no wrap handling needed
if (sampler[0].uv_max == 0 || sampler[0].uv_step == 0) // power of two, no wrap handling needed
{
int count = y2 - y1;
for (int i = 0; i < 4; i++)

View file

@ -1425,10 +1425,26 @@ void DCanvas::FillSimplePoly(FTexture *tex, FVector2 *points, int npoints,
else
R_SetSpanColormap(&identitycolormap, 0);
R_SetSpanSource(tex);
scalex = double(1u << (32 - ds_xbits)) / scalex;
scaley = double(1u << (32 - ds_ybits)) / scaley;
ds_xstep = xs_RoundToInt(cosrot * scalex);
ds_ystep = xs_RoundToInt(sinrot * scaley);
if (ds_xbits != 0)
{
scalex = double(1u << (32 - ds_xbits)) / scalex;
ds_xstep = xs_RoundToInt(cosrot * scalex);
}
else
{ // Texture is one pixel wide.
scalex = 0;
ds_xstep = 0;
}
if (ds_ybits != 0)
{
scaley = double(1u << (32 - ds_ybits)) / scaley;
ds_ystep = xs_RoundToInt(sinrot * scaley);
}
else
{ // Texture is one pixel tall.
scaley = 0;
ds_ystep = 0;
}
// Travel down the right edge and create an outline of that edge.
pt1 = toppt;