I have been using a series of POLYVECTOR functions that I grabbed from here a long time ago (I'd credit the original other and post but I've forgotten), having now understood what the PV routines were doing I changed them a little and recently decided to tweak the values to try and get rid of the nasty edge artifacts when using SMOOTHSHADING TRUE. This is one of the functions, the principle is the same for all.
I have tried this with a full-screen tilemap and it works very well.
The trick is to use floating point values to determine the UV edge values. Above I used 0.38 to be added to the top XY position and 0.76 to be subtracted from the bottom right hand position. You may be able to get them nearer to 0 dependent on the tileset used, for me these values work with a tileset that has fulltiles and partially filled tiles adjacent to each other.
One thing I did notice was that the edge artifacts depicted were showing thin lines with the original transparent colour. For example in my paint package which is using an indexed 256 colour palette, I had set the first colour (0) to be RGB 255,0,255 and although set to transparent the artifacts shown had purple hues to them. Pointless observation I'm sure but I'd have thought the edge (smoothing) would have been the adjacent tile ---> transparent and NOT adjacent tile ---> faint transparent set coloured hue ---> transparent.
Anyway, hope some of you like this experimenting
I have tried this with a full-screen tilemap and it works very well.
Code (glbasic) Select
FUNCTION PolySpriteZoom: sprite, xpos#, ypos#, scalex#, scaley#
// Texture UV Info.
patx = GE_pv_Sprite[sprite].GE_pv_X + 0.38
paty = GE_pv_Sprite[sprite].GE_pv_Y + 0.38
patxx = GE_pv_Sprite[sprite].GE_pv_X + GE_pv_Sprite[sprite].GE_pv_W - 0.76
patyy = GE_pv_Sprite[sprite].GE_pv_Y + GE_pv_Sprite[sprite].GE_pv_H - 0.76
// Sprite Info.
pminx = xpos
pminy = ypos
pmaxx = pminx + GE_pv_Sprite[sprite].GE_pv_W * scalex#
pmaxy = pminy + GE_pv_Sprite[sprite].GE_pv_H * scaley#
POLYVECTOR pminx, pminy, patx , paty , RGB(255,255,255) // Top-Left
POLYVECTOR pminx, pmaxy, patx , patyy, RGB(255,255,255) // Bottom-Left
POLYVECTOR pmaxx, pminy, patxx, paty , RGB(255,255,255) // Top-Right
POLYVECTOR pmaxx, pmaxy, patxx, patyy, RGB(255,255,255) // Bottom-Right
POLYNEWSTRIP
ENDFUNCTION
The trick is to use floating point values to determine the UV edge values. Above I used 0.38 to be added to the top XY position and 0.76 to be subtracted from the bottom right hand position. You may be able to get them nearer to 0 dependent on the tileset used, for me these values work with a tileset that has fulltiles and partially filled tiles adjacent to each other.
One thing I did notice was that the edge artifacts depicted were showing thin lines with the original transparent colour. For example in my paint package which is using an indexed 256 colour palette, I had set the first colour (0) to be RGB 255,0,255 and although set to transparent the artifacts shown had purple hues to them. Pointless observation I'm sure but I'd have thought the edge (smoothing) would have been the adjacent tile ---> transparent and NOT adjacent tile ---> faint transparent set coloured hue ---> transparent.
Anyway, hope some of you like this experimenting