engine: common: fixed lightmap shifting caused by insufficent precision in Mod_CalcSurfaceExtents

This commit is contained in:
SNMetamorph
2022-02-28 17:37:44 +04:00
committed by a1batross
parent e07417aead
commit 24ea8fba4b
2 changed files with 5 additions and 4 deletions

View File

@@ -1020,8 +1020,8 @@ Fills in surf->texturemins[] and surf->extents[]
*/
static void Mod_CalcSurfaceExtents( msurface_t *surf )
{
float mins[2], maxs[2], val;
float lmmins[2], lmmaxs[2];
double mins[2], maxs[2], val;
double lmmins[2], lmmaxs[2];
int bmins[2], bmaxs[2];
int i, j, e, sample_size;
mextrasurf_t *info = surf->info;
@@ -1049,14 +1049,14 @@ static void Mod_CalcSurfaceExtents( msurface_t *surf )
for( j = 0; j < 2; j++ )
{
val = DotProduct( v->position, surf->texinfo->vecs[j] ) + surf->texinfo->vecs[j][3];
val = DotProductPrecise( v->position, surf->texinfo->vecs[j] ) + surf->texinfo->vecs[j][3];
mins[j] = Q_min( val, mins[j] );
maxs[j] = Q_max( val, maxs[j] );
}
for( j = 0; j < 2; j++ )
{
val = DotProduct( v->position, info->lmvecs[j] ) + info->lmvecs[j][3];
val = DotProductPrecise( v->position, info->lmvecs[j] ) + info->lmvecs[j][3];
lmmins[j] = Q_min( val, lmmins[j] );
lmmaxs[j] = Q_max( val, lmmaxs[j] );
}