You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
//----------------------------------------------------------------------------
|
|
//
|
|
// texdiff.h
|
|
//
|
|
// TextureDiff base code for inclusion as an inline function or
|
|
// regular function from common code.
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// TextureDiff
|
|
//
|
|
// Computes the difference between two texture coordinates according
|
|
// to the given texture wrap mode.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
{
|
|
FLOAT fDiff1 = fTb - fTa;
|
|
|
|
if (iMode == 0)
|
|
{
|
|
// Wrap not set, return plain difference.
|
|
return fDiff1;
|
|
}
|
|
else
|
|
{
|
|
FLOAT fDiff2;
|
|
|
|
// Wrap set, compute shortest distance of plain difference
|
|
// and wrap difference.
|
|
|
|
fDiff2 = fDiff1;
|
|
if (FLOAT_LTZ(fDiff1))
|
|
{
|
|
fDiff2 += g_fOne;
|
|
}
|
|
else if (FLOAT_GTZ(fDiff1))
|
|
{
|
|
fDiff2 -= g_fOne;
|
|
}
|
|
if (ABSF(fDiff1) < ABSF(fDiff2))
|
|
{
|
|
return fDiff1;
|
|
}
|
|
else
|
|
{
|
|
return fDiff2;
|
|
}
|
|
}
|
|
}
|