Skip to content

Commit

Permalink
Fix stitching logic for partial tiles
Browse files Browse the repository at this point in the history
  • Loading branch information
Norbyte committed Jan 10, 2024
1 parent 4fd318c commit 6ba2a1c
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions LSLib/VirtualTextures/Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -631,21 +631,24 @@ private void StitchTiles(BuildLevel level, int layer, int x, int y, BC5Image mip
int sourceY = 0;
for (var tileY = firstTileY; tileY <= lastTileY; tileY++)
{
var tileYPixelsMin = tileY * BuildData.RawTileHeight;
var tileYPixelsMax = tileYPixelsMin + BuildData.RawTileHeight;

var stitchYMin = Clamp(y, tileYPixelsMin, tileYPixelsMax);
var stitchYMax = Clamp(y + mip.Height, tileYPixelsMin, tileYPixelsMax);

var stitchH = stitchYMax - stitchYMin;

int sourceX = 0;
for (var tileX = firstTileX; tileX <= lastTileX; tileX++)
{
var tileXPixelsMin = tileX * BuildData.RawTileWidth;
var tileYPixelsMin = tileY * BuildData.RawTileHeight;
var tileXPixelsMax = tileXPixelsMin + BuildData.RawTileWidth;
var tileYPixelsMax = tileYPixelsMin + BuildData.RawTileHeight;

var stitchXMin = Clamp(x, tileXPixelsMin, tileXPixelsMax);
var stitchYMin = Clamp(y, tileYPixelsMin, tileYPixelsMax);
var stitchXMax = Clamp(x + mip.Width, tileXPixelsMin, tileXPixelsMax);
var stitchYMax = Clamp(y + mip.Height, tileYPixelsMin, tileYPixelsMax);

var stitchW = stitchXMax - stitchXMin;
var stitchH = stitchYMax - stitchYMin;

// GIGA JANK
if (stitchW >= 4 && stitchH >= 4)
Expand All @@ -660,10 +663,10 @@ private void StitchTiles(BuildLevel level, int layer, int x, int y, BC5Image mip
);
}

sourceX += BuildData.RawTileWidth;
sourceX += stitchW;
}

sourceY += BuildData.RawTileHeight;
sourceY += stitchH;
}
}

Expand Down

0 comments on commit 6ba2a1c

Please sign in to comment.