Minor code cleanup
This commit is contained in:
Родитель
6bac563715
Коммит
31b6c9309c
|
@ -329,7 +329,7 @@ namespace
|
|||
assert(pColor && pBC);
|
||||
static_assert(sizeof(D3DX_BC1) == 8, "D3DX_BC1 should be 8 bytes");
|
||||
|
||||
static XMVECTORF32 s_Scale = { 1.f / 31.f, 1.f / 63.f, 1.f / 31.f, 1.f };
|
||||
static XMVECTORF32 s_Scale = { { { 1.f / 31.f, 1.f / 63.f, 1.f / 31.f, 1.f } } };
|
||||
|
||||
XMVECTOR clr0 = XMLoadU565(reinterpret_cast<const XMU565*>(&pBC->rgb[0]));
|
||||
XMVECTOR clr1 = XMLoadU565(reinterpret_cast<const XMU565*>(&pBC->rgb[1]));
|
||||
|
|
|
@ -1043,20 +1043,20 @@ const D3DX_BC6H::ModeDescriptor D3DX_BC6H::ms_aDesc[14][82] =
|
|||
// Mode, Partitions, Transformed, IndexPrec, RGBAPrec
|
||||
const D3DX_BC6H::ModeInfo D3DX_BC6H::ms_aInfo[] =
|
||||
{
|
||||
{0x00, 1, true, 3, LDRColorA(10,10,10,0), LDRColorA( 5, 5, 5,0), LDRColorA(5,5,5,0), LDRColorA(5,5,5,0)}, // Mode 1
|
||||
{0x01, 1, true, 3, LDRColorA( 7, 7, 7,0), LDRColorA( 6, 6, 6,0), LDRColorA(6,6,6,0), LDRColorA(6,6,6,0)}, // Mode 2
|
||||
{0x02, 1, true, 3, LDRColorA(11,11,11,0), LDRColorA( 5, 4, 4,0), LDRColorA(5,4,4,0), LDRColorA(5,4,4,0)}, // Mode 3
|
||||
{0x06, 1, true, 3, LDRColorA(11,11,11,0), LDRColorA( 4, 5, 4,0), LDRColorA(4,5,4,0), LDRColorA(4,5,4,0)}, // Mode 4
|
||||
{0x0a, 1, true, 3, LDRColorA(11,11,11,0), LDRColorA( 4, 4, 5,0), LDRColorA(4,4,5,0), LDRColorA(4,4,5,0)}, // Mode 5
|
||||
{0x0e, 1, true, 3, LDRColorA( 9, 9, 9,0), LDRColorA( 5, 5, 5,0), LDRColorA(5,5,5,0), LDRColorA(5,5,5,0)}, // Mode 6
|
||||
{0x12, 1, true, 3, LDRColorA( 8, 8, 8,0), LDRColorA( 6, 5, 5,0), LDRColorA(6,5,5,0), LDRColorA(6,5,5,0)}, // Mode 7
|
||||
{0x16, 1, true, 3, LDRColorA( 8, 8, 8,0), LDRColorA( 5, 6, 5,0), LDRColorA(5,6,5,0), LDRColorA(5,6,5,0)}, // Mode 8
|
||||
{0x1a, 1, true, 3, LDRColorA( 8, 8, 8,0), LDRColorA( 5, 5, 6,0), LDRColorA(5,5,6,0), LDRColorA(5,5,6,0)}, // Mode 9
|
||||
{0x1e, 1, false, 3, LDRColorA( 6, 6, 6,0), LDRColorA( 6, 6, 6,0), LDRColorA(6,6,6,0), LDRColorA(6,6,6,0)}, // Mode 10
|
||||
{0x03, 0, false, 4, LDRColorA(10,10,10,0), LDRColorA(10,10,10,0), LDRColorA(0,0,0,0), LDRColorA(0,0,0,0)}, // Mode 11
|
||||
{0x07, 0, true, 4, LDRColorA(11,11,11,0), LDRColorA( 9, 9, 9,0), LDRColorA(0,0,0,0), LDRColorA(0,0,0,0)}, // Mode 12
|
||||
{0x0b, 0, true, 4, LDRColorA(12,12,12,0), LDRColorA( 8, 8, 8,0), LDRColorA(0,0,0,0), LDRColorA(0,0,0,0)}, // Mode 13
|
||||
{0x0f, 0, true, 4, LDRColorA(16,16,16,0), LDRColorA( 4, 4, 4,0), LDRColorA(0,0,0,0), LDRColorA(0,0,0,0)}, // Mode 14
|
||||
{0x00, 1, true, 3, { { LDRColorA(10,10,10,0), LDRColorA( 5, 5, 5,0) }, { LDRColorA(5,5,5,0), LDRColorA(5,5,5,0) } } }, // Mode 1
|
||||
{0x01, 1, true, 3, { { LDRColorA( 7, 7, 7,0), LDRColorA( 6, 6, 6,0) }, { LDRColorA(6,6,6,0), LDRColorA(6,6,6,0) } } }, // Mode 2
|
||||
{0x02, 1, true, 3, { { LDRColorA(11,11,11,0), LDRColorA( 5, 4, 4,0) }, { LDRColorA(5,4,4,0), LDRColorA(5,4,4,0) } } }, // Mode 3
|
||||
{0x06, 1, true, 3, { { LDRColorA(11,11,11,0), LDRColorA( 4, 5, 4,0) }, { LDRColorA(4,5,4,0), LDRColorA(4,5,4,0) } } }, // Mode 4
|
||||
{0x0a, 1, true, 3, { { LDRColorA(11,11,11,0), LDRColorA( 4, 4, 5,0) }, { LDRColorA(4,4,5,0), LDRColorA(4,4,5,0) } } }, // Mode 5
|
||||
{0x0e, 1, true, 3, { { LDRColorA( 9, 9, 9,0), LDRColorA( 5, 5, 5,0) }, { LDRColorA(5,5,5,0), LDRColorA(5,5,5,0) } } }, // Mode 6
|
||||
{0x12, 1, true, 3, { { LDRColorA( 8, 8, 8,0), LDRColorA( 6, 5, 5,0) }, { LDRColorA(6,5,5,0), LDRColorA(6,5,5,0) } } }, // Mode 7
|
||||
{0x16, 1, true, 3, { { LDRColorA( 8, 8, 8,0), LDRColorA( 5, 6, 5,0) }, { LDRColorA(5,6,5,0), LDRColorA(5,6,5,0) } } }, // Mode 8
|
||||
{0x1a, 1, true, 3, { { LDRColorA( 8, 8, 8,0), LDRColorA( 5, 5, 6,0) }, { LDRColorA(5,5,6,0), LDRColorA(5,5,6,0) } } }, // Mode 9
|
||||
{0x1e, 1, false, 3, { { LDRColorA( 6, 6, 6,0), LDRColorA( 6, 6, 6,0) }, { LDRColorA(6,6,6,0), LDRColorA(6,6,6,0) } } }, // Mode 10
|
||||
{0x03, 0, false, 4, { { LDRColorA(10,10,10,0), LDRColorA(10,10,10,0) }, { LDRColorA(0,0,0,0), LDRColorA(0,0,0,0) } } }, // Mode 11
|
||||
{0x07, 0, true, 4, { { LDRColorA(11,11,11,0), LDRColorA( 9, 9, 9,0) }, { LDRColorA(0,0,0,0), LDRColorA(0,0,0,0) } } }, // Mode 12
|
||||
{0x0b, 0, true, 4, { { LDRColorA(12,12,12,0), LDRColorA( 8, 8, 8,0) }, { LDRColorA(0,0,0,0), LDRColorA(0,0,0,0) } } }, // Mode 13
|
||||
{0x0f, 0, true, 4, { { LDRColorA(16,16,16,0), LDRColorA( 4, 4, 4,0) }, { LDRColorA(0,0,0,0), LDRColorA(0,0,0,0) } } }, // Mode 14
|
||||
};
|
||||
|
||||
const int D3DX_BC6H::ms_aModeToInfo[] =
|
||||
|
@ -1574,7 +1574,7 @@ namespace
|
|||
|
||||
if (uIndexPrec2 == 0)
|
||||
{
|
||||
for (register size_t i = 0; i < uNumIndices && fBestErr > 0; i++)
|
||||
for (size_t i = 0; i < uNumIndices && fBestErr > 0; i++)
|
||||
{
|
||||
XMVECTOR tpixel = XMLoadUByte4(reinterpret_cast<const XMUBYTE4*>(&aPalette[i]));
|
||||
// Compute ErrorMetric
|
||||
|
@ -1593,7 +1593,7 @@ namespace
|
|||
}
|
||||
else
|
||||
{
|
||||
for (register size_t i = 0; i < uNumIndices && fBestErr > 0; i++)
|
||||
for (size_t i = 0; i < uNumIndices && fBestErr > 0; i++)
|
||||
{
|
||||
XMVECTOR tpixel = XMLoadUByte4(reinterpret_cast<const XMUBYTE4*>(&aPalette[i]));
|
||||
// Compute ErrorMetricRGB
|
||||
|
@ -1610,7 +1610,7 @@ namespace
|
|||
}
|
||||
fTotalErr += fBestErr;
|
||||
fBestErr = FLT_MAX;
|
||||
for (register size_t i = 0; i < uNumIndices2 && fBestErr > 0; i++)
|
||||
for (size_t i = 0; i < uNumIndices2 && fBestErr > 0; i++)
|
||||
{
|
||||
// Compute ErrorMetricAlpha
|
||||
float ea = float(pixel.a) - float(aPalette[i].a);
|
||||
|
@ -1837,9 +1837,9 @@ void D3DX_BC6H::Encode(bool bSigned, const HDRColorA* const pIn)
|
|||
}
|
||||
|
||||
// Bubble up the first uItems items
|
||||
for (register size_t i = 0; i < uItems; i++)
|
||||
for (size_t i = 0; i < uItems; i++)
|
||||
{
|
||||
for (register size_t j = i + 1; j < uShapes; j++)
|
||||
for (size_t j = i + 1; j < uShapes; j++)
|
||||
{
|
||||
if (afRoughMSE[i] > afRoughMSE[j])
|
||||
{
|
||||
|
@ -2423,7 +2423,7 @@ void D3DX_BC6H::GeneratePaletteUnquantized(const EncodeParams* pEP, size_t uRegi
|
|||
return;
|
||||
}
|
||||
|
||||
for (register size_t i = 0; i < uNumIndices; ++i)
|
||||
for (size_t i = 0; i < uNumIndices; ++i)
|
||||
{
|
||||
aPalette[i].r = (endPts.A.r * (BC67_WEIGHT_MAX - aWeights[i]) + endPts.B.r * aWeights[i] + BC67_WEIGHT_ROUND) >> BC67_WEIGHT_SHIFT;
|
||||
aPalette[i].g = (endPts.A.g * (BC67_WEIGHT_MAX - aWeights[i]) + endPts.B.g * aWeights[i] + BC67_WEIGHT_ROUND) >> BC67_WEIGHT_SHIFT;
|
||||
|
@ -2476,7 +2476,7 @@ float D3DX_BC6H::RoughMSE(EncodeParams* pEP) const
|
|||
for (size_t p = 0; p <= uPartitions; ++p)
|
||||
{
|
||||
size_t np = 0;
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
{
|
||||
if (g_aPartitionTable[uPartitions][pEP->uShape][i] == p)
|
||||
{
|
||||
|
@ -2542,7 +2542,7 @@ void D3DX_BC7::Decode(HDRColorA* pOut) const
|
|||
const uint8_t uNumEndPts = (uPartitions + 1) << 1;
|
||||
const uint8_t uIndexPrec = ms_aInfo[uMode].uIndexPrec;
|
||||
const uint8_t uIndexPrec2 = ms_aInfo[uMode].uIndexPrec2;
|
||||
register size_t i;
|
||||
size_t i;
|
||||
size_t uStartBit = uMode + 1;
|
||||
uint8_t P[6];
|
||||
uint8_t uShape = GetBits(uStartBit, ms_aInfo[uMode].uPartitionBits);
|
||||
|
@ -2643,7 +2643,7 @@ void D3DX_BC7::Decode(HDRColorA* pOut) const
|
|||
for (i = 0; i < uNumEndPts; i++)
|
||||
{
|
||||
size_t pi = i * ms_aInfo[uMode].uPBits / uNumEndPts;
|
||||
for (register uint8_t ch = 0; ch < BC7_NUM_CHANNELS; ch++)
|
||||
for (uint8_t ch = 0; ch < BC7_NUM_CHANNELS; ch++)
|
||||
{
|
||||
if (RGBAPrec[ch] != RGBAPrecWithP[ch])
|
||||
{
|
||||
|
@ -2780,9 +2780,9 @@ void D3DX_BC7::Encode(DWORD flags, const HDRColorA* const pIn)
|
|||
{
|
||||
switch (r)
|
||||
{
|
||||
case 1: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].r, EP.aLDRPixels[i].a); break;
|
||||
case 2: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].g, EP.aLDRPixels[i].a); break;
|
||||
case 3: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].b, EP.aLDRPixels[i].a); break;
|
||||
case 1: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].r, EP.aLDRPixels[i].a); break;
|
||||
case 2: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].g, EP.aLDRPixels[i].a); break;
|
||||
case 3: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].b, EP.aLDRPixels[i].a); break;
|
||||
}
|
||||
|
||||
for (size_t im = 0; im < uNumIdxMode && fMSEBest > 0; ++im)
|
||||
|
@ -2820,9 +2820,9 @@ void D3DX_BC7::Encode(DWORD flags, const HDRColorA* const pIn)
|
|||
|
||||
switch (r)
|
||||
{
|
||||
case 1: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].r, EP.aLDRPixels[i].a); break;
|
||||
case 2: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].g, EP.aLDRPixels[i].a); break;
|
||||
case 3: for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].b, EP.aLDRPixels[i].a); break;
|
||||
case 1: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].r, EP.aLDRPixels[i].a); break;
|
||||
case 2: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].g, EP.aLDRPixels[i].a); break;
|
||||
case 3: for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++) std::swap(EP.aLDRPixels[i].b, EP.aLDRPixels[i].a); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2849,14 +2849,14 @@ void D3DX_BC7::GeneratePaletteQuantized(const EncodeParams* pEP, size_t uIndexMo
|
|||
LDRColorA b = Unquantize(endPts.B, ms_aInfo[pEP->uMode].RGBAPrecWithP);
|
||||
if (uIndexPrec2 == 0)
|
||||
{
|
||||
for (register size_t i = 0; i < uNumIndices; i++)
|
||||
for (size_t i = 0; i < uNumIndices; i++)
|
||||
LDRColorA::Interpolate(a, b, i, i, uIndexPrec, uIndexPrec, aPalette[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (register size_t i = 0; i < uNumIndices; i++)
|
||||
for (size_t i = 0; i < uNumIndices; i++)
|
||||
LDRColorA::InterpolateRGB(a, b, i, uIndexPrec, aPalette[i]);
|
||||
for (register size_t i = 0; i < uNumIndices2; i++)
|
||||
for (size_t i = 0; i < uNumIndices2; i++)
|
||||
LDRColorA::InterpolateA(a, b, i, uIndexPrec2, aPalette[i]);
|
||||
}
|
||||
}
|
||||
|
@ -3055,7 +3055,7 @@ void D3DX_BC7::OptimizeEndPoints(const EncodeParams* pEP, size_t uShape, size_t
|
|||
{
|
||||
// collect the pixels in the region
|
||||
size_t np = 0;
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
if (g_aPartitionTable[uPartitions][uShape][i] == p)
|
||||
aPixels[np++] = pEP->aLDRPixels[i];
|
||||
|
||||
|
@ -3094,7 +3094,7 @@ void D3DX_BC7::AssignIndices(const EncodeParams* pEP, size_t uShape, size_t uInd
|
|||
afTotErr[p] = 0;
|
||||
}
|
||||
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
{
|
||||
uint8_t uRegion = g_aPartitionTable[uPartitions][uShape][i];
|
||||
assert(uRegion < BC7_MAX_REGIONS);
|
||||
|
@ -3105,12 +3105,12 @@ void D3DX_BC7::AssignIndices(const EncodeParams* pEP, size_t uShape, size_t uInd
|
|||
// swap endpoints as needed to ensure that the indices at index_positions have a 0 high-order bit
|
||||
if (uIndexPrec2 == 0)
|
||||
{
|
||||
for (register size_t p = 0; p <= uPartitions; p++)
|
||||
for (size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
if (aIndices[g_aFixUp[uPartitions][uShape][p]] & uHighestIndexBit)
|
||||
{
|
||||
std::swap(endPts[p].A, endPts[p].B);
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
if (g_aPartitionTable[uPartitions][uShape][i] == p)
|
||||
aIndices[i] = uNumIndices - 1 - aIndices[i];
|
||||
}
|
||||
|
@ -3119,14 +3119,14 @@ void D3DX_BC7::AssignIndices(const EncodeParams* pEP, size_t uShape, size_t uInd
|
|||
}
|
||||
else
|
||||
{
|
||||
for (register size_t p = 0; p <= uPartitions; p++)
|
||||
for (size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
if (aIndices[g_aFixUp[uPartitions][uShape][p]] & uHighestIndexBit)
|
||||
{
|
||||
std::swap(endPts[p].A.r, endPts[p].B.r);
|
||||
std::swap(endPts[p].A.g, endPts[p].B.g);
|
||||
std::swap(endPts[p].A.b, endPts[p].B.b);
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
if (g_aPartitionTable[uPartitions][uShape][i] == p)
|
||||
aIndices[i] = uNumIndices - 1 - aIndices[i];
|
||||
}
|
||||
|
@ -3135,7 +3135,7 @@ void D3DX_BC7::AssignIndices(const EncodeParams* pEP, size_t uShape, size_t uInd
|
|||
if (aIndices2[0] & uHighestIndexBit2)
|
||||
{
|
||||
std::swap(endPts[p].A.a, endPts[p].B.a);
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
aIndices2[i] = uNumIndices2 - 1 - aIndices2[i];
|
||||
}
|
||||
assert((aIndices2[0] & uHighestIndexBit2) == 0);
|
||||
|
@ -3156,7 +3156,7 @@ void D3DX_BC7::EmitBlock(const EncodeParams* pEP, size_t uShape, size_t uRotatio
|
|||
const size_t uIndexPrec2 = ms_aInfo[pEP->uMode].uIndexPrec2;
|
||||
const LDRColorA RGBAPrec = ms_aInfo[pEP->uMode].RGBAPrec;
|
||||
const LDRColorA RGBAPrecWithP = ms_aInfo[pEP->uMode].RGBAPrecWithP;
|
||||
register size_t i;
|
||||
size_t i;
|
||||
size_t uStartBit = 0;
|
||||
SetBits(uStartBit, pEP->uMode, 0);
|
||||
SetBits(uStartBit, 1, 1);
|
||||
|
@ -3251,7 +3251,7 @@ float D3DX_BC7::Refine(const EncodeParams* pEP, size_t uShape, size_t uRotation,
|
|||
float aOrgErr[BC7_MAX_REGIONS];
|
||||
float aOptErr[BC7_MAX_REGIONS];
|
||||
|
||||
for(register size_t p = 0; p <= uPartitions; p++)
|
||||
for(size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
aOrgEndPts[p].A = Quantize(aEndPts[p].A, ms_aInfo[pEP->uMode].RGBAPrecWithP);
|
||||
aOrgEndPts[p].B = Quantize(aEndPts[p].B, ms_aInfo[pEP->uMode].RGBAPrecWithP);
|
||||
|
@ -3262,7 +3262,7 @@ float D3DX_BC7::Refine(const EncodeParams* pEP, size_t uShape, size_t uRotation,
|
|||
AssignIndices(pEP, uShape, uIndexMode, aOptEndPts, aOptIdx, aOptIdx2, aOptErr);
|
||||
|
||||
float fOrgTotErr = 0, fOptTotErr = 0;
|
||||
for(register size_t p = 0; p <= uPartitions; p++)
|
||||
for(size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
fOrgTotErr += aOrgErr[p];
|
||||
fOptTotErr += aOptErr[p];
|
||||
|
@ -3289,7 +3289,7 @@ float D3DX_BC7::MapColors(const EncodeParams* pEP, const LDRColorA aColors[], si
|
|||
float fTotalErr = 0;
|
||||
|
||||
GeneratePaletteQuantized(pEP, uIndexMode, endPts, aPalette);
|
||||
for (register size_t i = 0; i < np; ++i)
|
||||
for (size_t i = 0; i < np; ++i)
|
||||
{
|
||||
fTotalErr += ComputeError(aColors[i], aPalette, uIndexPrec, uIndexPrec2);
|
||||
if (fTotalErr > fMinErr) // check for early exit
|
||||
|
@ -3324,7 +3324,7 @@ float D3DX_BC7::RoughMSE(EncodeParams* pEP, size_t uShape, size_t uIndexMode)
|
|||
for (size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
size_t np = 0;
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
{
|
||||
if (g_aPartitionTable[uPartitions][uShape][i] == p)
|
||||
{
|
||||
|
@ -3361,7 +3361,7 @@ float D3DX_BC7::RoughMSE(EncodeParams* pEP, size_t uShape, size_t uIndexMode)
|
|||
else
|
||||
{
|
||||
uint8_t uMinAlpha = 255, uMaxAlpha = 0;
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
|
||||
{
|
||||
uMinAlpha = std::min<uint8_t>(uMinAlpha, pEP->aLDRPixels[auPixIdx[i]].a);
|
||||
uMaxAlpha = std::max<uint8_t>(uMaxAlpha, pEP->aLDRPixels[auPixIdx[i]].a);
|
||||
|
@ -3383,22 +3383,22 @@ float D3DX_BC7::RoughMSE(EncodeParams* pEP, size_t uShape, size_t uIndexMode)
|
|||
if (uIndexPrec2 == 0)
|
||||
{
|
||||
for (size_t p = 0; p <= uPartitions; p++)
|
||||
for (register size_t i = 0; i < uNumIndices; i++)
|
||||
for (size_t i = 0; i < uNumIndices; i++)
|
||||
LDRColorA::Interpolate(aEndPts[p].A, aEndPts[p].B, i, i, uIndexPrec, uIndexPrec, aPalette[p][i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (size_t p = 0; p <= uPartitions; p++)
|
||||
{
|
||||
for (register size_t i = 0; i < uNumIndices; i++)
|
||||
for (size_t i = 0; i < uNumIndices; i++)
|
||||
LDRColorA::InterpolateRGB(aEndPts[p].A, aEndPts[p].B, i, uIndexPrec, aPalette[p][i]);
|
||||
for (register size_t i = 0; i < uNumIndices2; i++)
|
||||
for (size_t i = 0; i < uNumIndices2; i++)
|
||||
LDRColorA::InterpolateA(aEndPts[p].A, aEndPts[p].B, i, uIndexPrec2, aPalette[p][i]);
|
||||
}
|
||||
}
|
||||
|
||||
float fTotalErr = 0;
|
||||
for (register size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; i++)
|
||||
{
|
||||
uint8_t uRegion = g_aPartitionTable[uPartitions][uShape][i];
|
||||
fTotalErr += ComputeError(pEP->aLDRPixels[i], aPalette[uRegion], uIndexPrec, uIndexPrec2);
|
||||
|
|
|
@ -28,20 +28,20 @@ namespace
|
|||
{
|
||||
inline DWORD GetBCFlags(_In_ DWORD compress)
|
||||
{
|
||||
static_assert(TEX_COMPRESS_RGB_DITHER == BC_FLAGS_DITHER_RGB, "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(TEX_COMPRESS_A_DITHER == BC_FLAGS_DITHER_A, "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(TEX_COMPRESS_DITHER == (BC_FLAGS_DITHER_RGB | BC_FLAGS_DITHER_A), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(TEX_COMPRESS_UNIFORM == BC_FLAGS_UNIFORM, "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(TEX_COMPRESS_BC7_USE_3SUBSETS == BC_FLAGS_USE_3SUBSETS, "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(TEX_COMPRESS_BC7_QUICK == BC_FLAGS_FORCE_BC7_MODE6, "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_RGB_DITHER) == static_cast<int>(BC_FLAGS_DITHER_RGB), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_A_DITHER) == static_cast<int>(BC_FLAGS_DITHER_A), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_DITHER) == static_cast<int>(BC_FLAGS_DITHER_RGB | BC_FLAGS_DITHER_A), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_UNIFORM) == static_cast<int>(BC_FLAGS_UNIFORM), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_BC7_USE_3SUBSETS) == static_cast<int>(BC_FLAGS_USE_3SUBSETS), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_BC7_QUICK) == static_cast<int>(BC_FLAGS_FORCE_BC7_MODE6), "TEX_COMPRESS_* flags should match BC_FLAGS_*");
|
||||
return (compress & (BC_FLAGS_DITHER_RGB | BC_FLAGS_DITHER_A | BC_FLAGS_UNIFORM | BC_FLAGS_USE_3SUBSETS | BC_FLAGS_FORCE_BC7_MODE6));
|
||||
}
|
||||
|
||||
inline DWORD GetSRGBFlags(_In_ DWORD compress)
|
||||
{
|
||||
static_assert(TEX_COMPRESS_SRGB_IN == TEX_FILTER_SRGB_IN, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_COMPRESS_SRGB_OUT == TEX_FILTER_SRGB_OUT, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_COMPRESS_SRGB == TEX_FILTER_SRGB, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB_IN) == static_cast<int>(TEX_FILTER_SRGB_IN), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB_OUT) == static_cast<int>(TEX_FILTER_SRGB_OUT), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB) == static_cast<int>(TEX_FILTER_SRGB), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
return (compress & TEX_COMPRESS_SRGB);
|
||||
}
|
||||
|
||||
|
@ -532,7 +532,7 @@ namespace DirectX
|
|||
}
|
||||
|
||||
// Scan blocks for non-opaque alpha
|
||||
static const XMVECTORF32 threshold = { 0.99f, 0.99f, 0.99f, 0.99f };
|
||||
static const XMVECTORF32 threshold = { { { 0.99f, 0.99f, 0.99f, 0.99f } } };
|
||||
|
||||
__declspec(align(16)) XMVECTOR temp[16];
|
||||
const uint8_t *pPixels = cImage.pixels;
|
||||
|
|
|
@ -23,9 +23,9 @@ namespace
|
|||
{
|
||||
inline DWORD GetSRGBFlags(_In_ DWORD compress)
|
||||
{
|
||||
static_assert(TEX_COMPRESS_SRGB_IN == TEX_FILTER_SRGB_IN, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_COMPRESS_SRGB_OUT == TEX_FILTER_SRGB_OUT, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_COMPRESS_SRGB == TEX_FILTER_SRGB, "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB_IN) == static_cast<int>(TEX_FILTER_SRGB_IN), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB_OUT) == static_cast<int>(TEX_FILTER_SRGB_OUT), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_COMPRESS_SRGB) == static_cast<int>(TEX_FILTER_SRGB), "TEX_COMPRESS_SRGB* should match TEX_FILTER_SRGB*");
|
||||
return (compress & TEX_COMPRESS_SRGB);
|
||||
}
|
||||
|
||||
|
|
|
@ -192,10 +192,10 @@ namespace
|
|||
}
|
||||
#endif
|
||||
|
||||
const XMVECTORF32 g_Grayscale = { 0.2125f, 0.7154f, 0.0721f, 0.0f };
|
||||
const XMVECTORF32 g_HalfMin = { -65504.f, -65504.f, -65504.f, -65504.f };
|
||||
const XMVECTORF32 g_HalfMax = { 65504.f, 65504.f, 65504.f, 65504.f };
|
||||
const XMVECTORF32 g_8BitBias = { 0.5f / 255.f, 0.5f / 255.f, 0.5f / 255.f, 0.5f / 255.f };
|
||||
const XMVECTORF32 g_Grayscale = { { { 0.2125f, 0.7154f, 0.0721f, 0.0f } } };
|
||||
const XMVECTORF32 g_HalfMin = { { { -65504.f, -65504.f, -65504.f, -65504.f } } };
|
||||
const XMVECTORF32 g_HalfMax = { { { 65504.f, 65504.f, 65504.f, 65504.f } } };
|
||||
const XMVECTORF32 g_8BitBias = { { { 0.5f / 255.f, 0.5f / 255.f, 0.5f / 255.f, 0.5f / 255.f } } };
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
@ -707,9 +707,10 @@ bool DirectX::_ExpandScanline(
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1209,7 +1210,7 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
case DXGI_FORMAT_B5G6R5_UNORM:
|
||||
if (size >= sizeof(XMU565))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 1.f / 31.f, 1.f / 63.f, 1.f / 31.f, 1.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 1.f / 31.f, 1.f / 63.f, 1.f / 31.f, 1.f } } };
|
||||
const XMU565 * __restrict sPtr = reinterpret_cast<const XMU565*>(pSource);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMU565) + 1); icount += sizeof(XMU565))
|
||||
{
|
||||
|
@ -1226,7 +1227,7 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
||||
if (size >= sizeof(XMU555))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 1.f / 31.f, 1.f / 31.f, 1.f / 31.f, 1.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 1.f / 31.f, 1.f / 31.f, 1.f / 31.f, 1.f } } };
|
||||
const XMU555 * __restrict sPtr = reinterpret_cast<const XMU555*>(pSource);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMU555) + 1); icount += sizeof(XMU555))
|
||||
{
|
||||
|
@ -1493,7 +1494,7 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
case DXGI_FORMAT_B4G4R4A4_UNORM:
|
||||
if (size >= sizeof(XMUNIBBLE4))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 1.f / 15.f, 1.f / 15.f, 1.f / 15.f, 1.f / 15.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 1.f / 15.f, 1.f / 15.f, 1.f / 15.f, 1.f / 15.f } } };
|
||||
const XMUNIBBLE4 * __restrict sPtr = reinterpret_cast<const XMUNIBBLE4*>(pSource);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMUNIBBLE4) + 1); icount += sizeof(XMUNIBBLE4))
|
||||
{
|
||||
|
@ -1515,12 +1516,12 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
{
|
||||
if (dPtr >= ePtr) break;
|
||||
|
||||
XMVECTORF32 vResult = {
|
||||
XMVECTORF32 vResult = { { {
|
||||
FloatFrom7e3(sPtr->x),
|
||||
FloatFrom7e3(sPtr->y),
|
||||
FloatFrom7e3(sPtr->z),
|
||||
(float)(sPtr->v >> 30) / 3.0f
|
||||
};
|
||||
} } };
|
||||
|
||||
++sPtr;
|
||||
|
||||
|
@ -1539,12 +1540,12 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
{
|
||||
if (dPtr >= ePtr) break;
|
||||
|
||||
XMVECTORF32 vResult = {
|
||||
XMVECTORF32 vResult = { { {
|
||||
FloatFrom6e4(sPtr->x),
|
||||
FloatFrom6e4(sPtr->y),
|
||||
FloatFrom6e4(sPtr->z),
|
||||
(float)(sPtr->v >> 30) / 3.0f
|
||||
};
|
||||
} } };
|
||||
|
||||
++sPtr;
|
||||
|
||||
|
@ -1562,7 +1563,7 @@ _Use_decl_annotations_ bool DirectX::_LoadScanline(
|
|||
// Xbox One specific format
|
||||
if (size >= sizeof(uint8_t))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 1.f / 15.f, 1.f / 15.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 1.f / 15.f, 1.f / 15.f, 0.f, 0.f } } };
|
||||
const uint8_t * __restrict sPtr = reinterpret_cast<const uint8_t*>(pSource);
|
||||
for (size_t icount = 0; icount < (size - sizeof(uint8_t) + 1); icount += sizeof(uint8_t))
|
||||
{
|
||||
|
@ -1810,7 +1811,7 @@ bool DirectX::_StoreScanline(
|
|||
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
||||
if (size >= sizeof(uint32_t))
|
||||
{
|
||||
static const XMVECTORF32 clamp = { 1.f, 255.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 clamp = { { { 1.f, 255.f, 0.f, 0.f } } };
|
||||
XMVECTOR zero = XMVectorZero();
|
||||
uint32_t *dPtr = reinterpret_cast<uint32_t*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(uint32_t) + 1); icount += sizeof(uint32_t))
|
||||
|
@ -2035,7 +2036,7 @@ bool DirectX::_StoreScanline(
|
|||
case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
||||
if (size >= sizeof(XMUBYTEN4))
|
||||
{
|
||||
static XMVECTORU32 select1101 = { XM_SELECT_1, XM_SELECT_1, XM_SELECT_0, XM_SELECT_1 };
|
||||
static XMVECTORU32 select1101 = { { { XM_SELECT_1, XM_SELECT_1, XM_SELECT_0, XM_SELECT_1 } } };
|
||||
|
||||
XMUBYTEN4 * __restrict dPtr = reinterpret_cast<XMUBYTEN4*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMUBYTEN4) + 1); icount += sizeof(XMUBYTEN4))
|
||||
|
@ -2054,7 +2055,7 @@ bool DirectX::_StoreScanline(
|
|||
case DXGI_FORMAT_B5G6R5_UNORM:
|
||||
if (size >= sizeof(XMU565))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 31.f, 63.f, 31.f, 1.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 31.f, 63.f, 31.f, 1.f } } };
|
||||
XMU565 * __restrict dPtr = reinterpret_cast<XMU565*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMU565) + 1); icount += sizeof(XMU565))
|
||||
{
|
||||
|
@ -2070,7 +2071,7 @@ bool DirectX::_StoreScanline(
|
|||
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
||||
if (size >= sizeof(XMU555))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 31.f, 31.f, 31.f, 1.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 31.f, 31.f, 31.f, 1.f } } };
|
||||
XMU555 * __restrict dPtr = reinterpret_cast<XMU555*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMU555) + 1); icount += sizeof(XMU555))
|
||||
{
|
||||
|
@ -2358,7 +2359,7 @@ bool DirectX::_StoreScanline(
|
|||
case DXGI_FORMAT_B4G4R4A4_UNORM:
|
||||
if (size >= sizeof(XMUNIBBLE4))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 15.f, 15.f, 15.f, 15.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 15.f, 15.f, 15.f, 15.f } } };
|
||||
XMUNIBBLE4 * __restrict dPtr = reinterpret_cast<XMUNIBBLE4*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMUNIBBLE4) + 1); icount += sizeof(XMUNIBBLE4))
|
||||
{
|
||||
|
@ -2375,8 +2376,8 @@ bool DirectX::_StoreScanline(
|
|||
// Xbox One specific 7e3 format with alpha
|
||||
if (size >= sizeof(XMUDECN4))
|
||||
{
|
||||
static const XMVECTORF32 Scale = { 1.0f, 1.0f, 1.0f, 3.0f };
|
||||
static const XMVECTORF32 C = { 31.875f, 31.875f, 31.875f, 3.f };
|
||||
static const XMVECTORF32 Scale = { { { 1.0f, 1.0f, 1.0f, 3.0f } } };
|
||||
static const XMVECTORF32 C = { { { 31.875f, 31.875f, 31.875f, 3.f } } };
|
||||
|
||||
XMUDECN4 * __restrict dPtr = reinterpret_cast<XMUDECN4*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMUDECN4) + 1); icount += sizeof(XMUDECN4))
|
||||
|
@ -2403,8 +2404,8 @@ bool DirectX::_StoreScanline(
|
|||
// Xbox One specific 6e4 format with alpha
|
||||
if (size >= sizeof(XMUDECN4))
|
||||
{
|
||||
static const XMVECTORF32 Scale = { 1.0f, 1.0f, 1.0f, 3.0f };
|
||||
static const XMVECTORF32 C = { 508.f, 508.f, 508.f, 3.f };
|
||||
static const XMVECTORF32 Scale = { { { 1.0f, 1.0f, 1.0f, 3.0f } } };
|
||||
static const XMVECTORF32 C = { { { 508.f, 508.f, 508.f, 3.f } } };
|
||||
|
||||
XMUDECN4 * __restrict dPtr = reinterpret_cast<XMUDECN4*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(XMUDECN4) + 1); icount += sizeof(XMUDECN4))
|
||||
|
@ -2435,7 +2436,7 @@ bool DirectX::_StoreScanline(
|
|||
// Xbox One specific format
|
||||
if (size >= sizeof(uint8_t))
|
||||
{
|
||||
static const XMVECTORF32 s_Scale = { 15.f, 15.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 s_Scale = { { { 15.f, 15.f, 0.f, 0.f } } };
|
||||
uint8_t * __restrict dPtr = reinterpret_cast<uint8_t*>(pDestination);
|
||||
for (size_t icount = 0; icount < (size - sizeof(uint8_t) + 1); icount += sizeof(uint8_t))
|
||||
{
|
||||
|
@ -2974,6 +2975,9 @@ void DirectX::_ConvertScanline(
|
|||
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
||||
flags &= ~TEX_FILTER_SRGB_IN;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (outFormat)
|
||||
|
@ -2992,6 +2996,9 @@ void DirectX::_ConvertScanline(
|
|||
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
||||
flags &= ~TEX_FILTER_SRGB_OUT;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((flags & (TEX_FILTER_SRGB_IN | TEX_FILTER_SRGB_OUT)) == (TEX_FILTER_SRGB_IN | TEX_FILTER_SRGB_OUT))
|
||||
|
@ -3025,7 +3032,7 @@ void DirectX::_ConvertScanline(
|
|||
if (in->flags & CONVF_STENCIL)
|
||||
{
|
||||
// Stencil -> Alpha
|
||||
static const XMVECTORF32 S = { 1.f, 1.f, 1.f, 255.f };
|
||||
static const XMVECTORF32 S = { { { 1.f, 1.f, 1.f, 255.f } } };
|
||||
|
||||
if (out->flags & CONVF_UNORM)
|
||||
{
|
||||
|
@ -3206,8 +3213,8 @@ void DirectX::_ConvertScanline(
|
|||
if (out->flags & CONVF_STENCIL)
|
||||
{
|
||||
// Alpha -> Stencil (green channel)
|
||||
static const XMVECTORU32 select0100 = { XM_SELECT_0, XM_SELECT_1, XM_SELECT_0, XM_SELECT_0 };
|
||||
static const XMVECTORF32 S = { 255.f, 255.f, 255.f, 255.f };
|
||||
static const XMVECTORU32 select0100 = { { { XM_SELECT_0, XM_SELECT_1, XM_SELECT_0, XM_SELECT_0 } } };
|
||||
static const XMVECTORF32 S = { { { 255.f, 255.f, 255.f, 255.f } } };
|
||||
|
||||
if (in->flags & CONVF_UNORM)
|
||||
{
|
||||
|
@ -3613,20 +3620,20 @@ namespace
|
|||
-0.468750f, 0.031250f, -0.343750f, 0.156250f, -0.468750f, 0.031250f, -0.343750f, 0.156250f,
|
||||
};
|
||||
|
||||
const XMVECTORF32 g_Scale16pc = { 65535.f, 65535.f, 65535.f, 65535.f };
|
||||
const XMVECTORF32 g_Scale15pc = { 32767.f, 32767.f, 32767.f, 32767.f };
|
||||
const XMVECTORF32 g_Scale10pc = { 1023.f, 1023.f, 1023.f, 3.f };
|
||||
const XMVECTORF32 g_Scale9pc = { 511.f, 511.f, 511.f, 3.f };
|
||||
const XMVECTORF32 g_Scale8pc = { 255.f, 255.f, 255.f, 255.f };
|
||||
const XMVECTORF32 g_Scale7pc = { 127.f, 127.f, 127.f, 127.f };
|
||||
const XMVECTORF32 g_Scale565pc = { 31.f, 63.f, 31.f, 1.f };
|
||||
const XMVECTORF32 g_Scale5551pc = { 31.f, 31.f, 31.f, 1.f };
|
||||
const XMVECTORF32 g_Scale4pc = { 15.f, 15.f, 15.f, 15.f };
|
||||
const XMVECTORF32 g_Scale16pc = { { { 65535.f, 65535.f, 65535.f, 65535.f } } };
|
||||
const XMVECTORF32 g_Scale15pc = { { { 32767.f, 32767.f, 32767.f, 32767.f } } };
|
||||
const XMVECTORF32 g_Scale10pc = { { { 1023.f, 1023.f, 1023.f, 3.f } } };
|
||||
const XMVECTORF32 g_Scale9pc = { { { 511.f, 511.f, 511.f, 3.f } } };
|
||||
const XMVECTORF32 g_Scale8pc = { { { 255.f, 255.f, 255.f, 255.f } } };
|
||||
const XMVECTORF32 g_Scale7pc = { { { 127.f, 127.f, 127.f, 127.f } } };
|
||||
const XMVECTORF32 g_Scale565pc = { { { 31.f, 63.f, 31.f, 1.f } } };
|
||||
const XMVECTORF32 g_Scale5551pc = { { { 31.f, 31.f, 31.f, 1.f } } };
|
||||
const XMVECTORF32 g_Scale4pc = { { { 15.f, 15.f, 15.f, 15.f } } };
|
||||
|
||||
const XMVECTORF32 g_ErrorWeight3 = { 3.f / 16.f, 3.f / 16.f, 3.f / 16.f, 3.f / 16.f };
|
||||
const XMVECTORF32 g_ErrorWeight5 = { 5.f / 16.f, 5.f / 16.f, 5.f / 16.f, 5.f / 16.f };
|
||||
const XMVECTORF32 g_ErrorWeight1 = { 1.f / 16.f, 1.f / 16.f, 1.f / 16.f, 1.f / 16.f };
|
||||
const XMVECTORF32 g_ErrorWeight7 = { 7.f / 16.f, 7.f / 16.f, 7.f / 16.f, 7.f / 16.f };
|
||||
const XMVECTORF32 g_ErrorWeight3 = { { { 3.f / 16.f, 3.f / 16.f, 3.f / 16.f, 3.f / 16.f } } };
|
||||
const XMVECTORF32 g_ErrorWeight5 = { { { 5.f / 16.f, 5.f / 16.f, 5.f / 16.f, 5.f / 16.f } } };
|
||||
const XMVECTORF32 g_ErrorWeight1 = { { { 1.f / 16.f, 1.f / 16.f, 1.f / 16.f, 1.f / 16.f } } };
|
||||
const XMVECTORF32 g_ErrorWeight7 = { { { 7.f / 16.f, 7.f / 16.f, 7.f / 16.f, 7.f / 16.f } } };
|
||||
|
||||
#define STORE_SCANLINE( type, scalev, clampzero, norm, itype, mask, row, bgr ) \
|
||||
if ( size >= sizeof(type) ) \
|
||||
|
@ -3868,10 +3875,10 @@ bool DirectX::_StoreScanlineDither(
|
|||
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
||||
if (size >= sizeof(XMUDEC4))
|
||||
{
|
||||
static const XMVECTORF32 Scale = { 510.0f, 510.0f, 510.0f, 3.0f };
|
||||
static const XMVECTORF32 Bias = { 384.0f, 384.0f, 384.0f, 0.0f };
|
||||
static const XMVECTORF32 MinXR = { -0.7529f, -0.7529f, -0.7529f, 0.f };
|
||||
static const XMVECTORF32 MaxXR = { 1.2529f, 1.2529f, 1.2529f, 1.0f };
|
||||
static const XMVECTORF32 Scale = { { { 510.0f, 510.0f, 510.0f, 3.0f } } };
|
||||
static const XMVECTORF32 Bias = { { { 384.0f, 384.0f, 384.0f, 0.0f } } };
|
||||
static const XMVECTORF32 MinXR = { { { -0.7529f, -0.7529f, -0.7529f, 0.f } } };
|
||||
static const XMVECTORF32 MaxXR = { { { 1.2529f, 1.2529f, 1.2529f, 1.0f } } };
|
||||
|
||||
XMUDEC4 * __restrict dest = reinterpret_cast<XMUDEC4*>(pDestination);
|
||||
for (size_t i = 0; i < count; ++i)
|
||||
|
@ -3947,9 +3954,9 @@ bool DirectX::_StoreScanlineDither(
|
|||
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
||||
if (size >= sizeof(uint32_t))
|
||||
{
|
||||
static const XMVECTORF32 Clamp = { 1.f, 255.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 Scale = { 16777215.f, 1.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 Scale2 = { 16777215.f, 255.f, 0.f, 0.f };
|
||||
static const XMVECTORF32 Clamp = { { { 1.f, 255.f, 0.f, 0.f } } };
|
||||
static const XMVECTORF32 Scale = { { { 16777215.f, 1.f, 0.f, 0.f } } };
|
||||
static const XMVECTORF32 Scale2 = { { { 16777215.f, 255.f, 0.f, 0.f } } };
|
||||
|
||||
uint32_t * __restrict dest = reinterpret_cast<uint32_t*>(pDestination);
|
||||
for (size_t i = 0; i < count; ++i)
|
||||
|
|
|
@ -26,9 +26,9 @@
|
|||
using namespace DirectX;
|
||||
using Microsoft::WRL::ComPtr;
|
||||
|
||||
static_assert(TEX_DIMENSION_TEXTURE1D == D3D11_RESOURCE_DIMENSION_TEXTURE1D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE2D == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE3D == D3D11_RESOURCE_DIMENSION_TEXTURE3D, "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE1D) == static_cast<int>(D3D11_RESOURCE_DIMENSION_TEXTURE1D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE2D) == static_cast<int>(D3D11_RESOURCE_DIMENSION_TEXTURE2D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE3D) == static_cast<int>(D3D11_RESOURCE_DIMENSION_TEXTURE3D), "header enum mismatch");
|
||||
|
||||
namespace
|
||||
{
|
||||
|
@ -240,6 +240,9 @@ bool DirectX::IsSupportedTexture(
|
|||
if (fl < D3D_FEATURE_LEVEL_11_0)
|
||||
return false;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Validate miplevel count
|
||||
|
|
|
@ -28,9 +28,9 @@
|
|||
using namespace DirectX;
|
||||
using Microsoft::WRL::ComPtr;
|
||||
|
||||
static_assert(TEX_DIMENSION_TEXTURE1D == D3D12_RESOURCE_DIMENSION_TEXTURE1D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE2D == D3D12_RESOURCE_DIMENSION_TEXTURE2D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE3D == D3D12_RESOURCE_DIMENSION_TEXTURE3D, "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE1D) == static_cast<int>(D3D12_RESOURCE_DIMENSION_TEXTURE1D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE2D) == static_cast<int>(D3D12_RESOURCE_DIMENSION_TEXTURE2D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE3D) == static_cast<int>(D3D12_RESOURCE_DIMENSION_TEXTURE3D), "header enum mismatch");
|
||||
|
||||
namespace
|
||||
{
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
|
||||
using namespace DirectX;
|
||||
|
||||
static_assert(TEX_DIMENSION_TEXTURE1D == DDS_DIMENSION_TEXTURE1D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE2D == DDS_DIMENSION_TEXTURE2D, "header enum mismatch");
|
||||
static_assert(TEX_DIMENSION_TEXTURE3D == DDS_DIMENSION_TEXTURE3D, "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE1D) == static_cast<int>(DDS_DIMENSION_TEXTURE1D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE2D) == static_cast<int>(DDS_DIMENSION_TEXTURE2D), "header enum mismatch");
|
||||
static_assert(static_cast<int>(TEX_DIMENSION_TEXTURE3D) == static_cast<int>(DDS_DIMENSION_TEXTURE3D), "header enum mismatch");
|
||||
|
||||
namespace
|
||||
{
|
||||
|
@ -316,7 +316,7 @@ namespace
|
|||
return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
static_assert(TEX_MISC_TEXTURECUBE == DDS_RESOURCE_MISC_TEXTURECUBE, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_MISC_TEXTURECUBE) == static_cast<int>(DDS_RESOURCE_MISC_TEXTURECUBE), "DDS header mismatch");
|
||||
|
||||
metadata.miscFlags = d3d10ext->miscFlag & ~TEX_MISC_TEXTURECUBE;
|
||||
|
||||
|
@ -368,13 +368,13 @@ namespace
|
|||
return HRESULT_FROM_WIN32(ERROR_INVALID_DATA);
|
||||
}
|
||||
|
||||
static_assert(TEX_MISC2_ALPHA_MODE_MASK == DDS_MISC_FLAGS2_ALPHA_MODE_MASK, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_MISC2_ALPHA_MODE_MASK) == static_cast<int>(DDS_MISC_FLAGS2_ALPHA_MODE_MASK), "DDS header mismatch");
|
||||
|
||||
static_assert(TEX_ALPHA_MODE_UNKNOWN == DDS_ALPHA_MODE_UNKNOWN, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_STRAIGHT == DDS_ALPHA_MODE_STRAIGHT, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_PREMULTIPLIED == DDS_ALPHA_MODE_PREMULTIPLIED, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_OPAQUE == DDS_ALPHA_MODE_OPAQUE, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_CUSTOM == DDS_ALPHA_MODE_CUSTOM, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_UNKNOWN) == static_cast<int>(DDS_ALPHA_MODE_UNKNOWN), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_STRAIGHT) == static_cast<int>(DDS_ALPHA_MODE_STRAIGHT), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_PREMULTIPLIED) == static_cast<int>(DDS_ALPHA_MODE_PREMULTIPLIED), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_OPAQUE) == static_cast<int>(DDS_ALPHA_MODE_OPAQUE), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_CUSTOM) == static_cast<int>(DDS_ALPHA_MODE_CUSTOM), "DDS header mismatch");
|
||||
|
||||
metadata.miscFlags2 = d3d10ext->miscFlags2;
|
||||
}
|
||||
|
@ -436,6 +436,9 @@ namespace
|
|||
metadata.format = DXGI_FORMAT_R16G16B16A16_UNORM;
|
||||
convFlags |= CONV_FLAGS_L16 | CONV_FLAGS_EXPAND;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -474,6 +477,9 @@ namespace
|
|||
metadata.format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
|
||||
convFlags |= CONV_FLAGS_SWIZZLE | CONV_FLAGS_NOALPHA;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -489,6 +495,9 @@ namespace
|
|||
convFlags |= CONV_FLAGS_EXPAND;
|
||||
if (metadata.format == DXGI_FORMAT_B5G6R5_UNORM)
|
||||
convFlags |= CONV_FLAGS_NOALPHA;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -583,6 +592,9 @@ HRESULT DirectX::_EncodeDDSHeader(
|
|||
case DXGI_FORMAT_R16_FLOAT:
|
||||
ddpf.dwSize = sizeof(DDS_PIXELFORMAT); ddpf.dwFlags = DDS_FOURCC; ddpf.dwFourCC = 111; // D3DFMT_R16F
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -695,7 +707,7 @@ HRESULT DirectX::_EncodeDDSHeader(
|
|||
if (metadata.arraySize > UINT16_MAX)
|
||||
return E_INVALIDARG;
|
||||
|
||||
static_assert(TEX_MISC_TEXTURECUBE == DDS_RESOURCE_MISC_TEXTURECUBE, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_MISC_TEXTURECUBE) == static_cast<int>(DDS_RESOURCE_MISC_TEXTURECUBE), "DDS header mismatch");
|
||||
|
||||
ext->miscFlag = metadata.miscFlags & ~TEX_MISC_TEXTURECUBE;
|
||||
|
||||
|
@ -710,13 +722,13 @@ HRESULT DirectX::_EncodeDDSHeader(
|
|||
ext->arraySize = static_cast<UINT>(metadata.arraySize);
|
||||
}
|
||||
|
||||
static_assert(TEX_MISC2_ALPHA_MODE_MASK == DDS_MISC_FLAGS2_ALPHA_MODE_MASK, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_MISC2_ALPHA_MODE_MASK) == static_cast<int>(DDS_MISC_FLAGS2_ALPHA_MODE_MASK), "DDS header mismatch");
|
||||
|
||||
static_assert(TEX_ALPHA_MODE_UNKNOWN == DDS_ALPHA_MODE_UNKNOWN, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_STRAIGHT == DDS_ALPHA_MODE_STRAIGHT, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_PREMULTIPLIED == DDS_ALPHA_MODE_PREMULTIPLIED, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_OPAQUE == DDS_ALPHA_MODE_OPAQUE, "DDS header mismatch");
|
||||
static_assert(TEX_ALPHA_MODE_CUSTOM == DDS_ALPHA_MODE_CUSTOM, "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_UNKNOWN) == static_cast<int>(DDS_ALPHA_MODE_UNKNOWN), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_STRAIGHT) == static_cast<int>(DDS_ALPHA_MODE_STRAIGHT), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_PREMULTIPLIED) == static_cast<int>(DDS_ALPHA_MODE_PREMULTIPLIED), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_OPAQUE) == static_cast<int>(DDS_ALPHA_MODE_OPAQUE), "DDS header mismatch");
|
||||
static_assert(static_cast<int>(TEX_ALPHA_MODE_CUSTOM) == static_cast<int>(DDS_ALPHA_MODE_CUSTOM), "DDS header mismatch");
|
||||
|
||||
if (flags & DDS_FLAGS_FORCE_DX10_EXT_MISC2)
|
||||
{
|
||||
|
@ -867,6 +879,9 @@ namespace
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -980,6 +995,9 @@ namespace
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1078,9 +1096,10 @@ namespace
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1617,7 +1636,7 @@ HRESULT DirectX::LoadFromDDSFile(
|
|||
if (!(convFlags & CONV_FLAGS_DX10))
|
||||
{
|
||||
// Must reset file position since we read more than the standard header above
|
||||
LARGE_INTEGER filePos = { sizeof(uint32_t) + sizeof(DDS_HEADER), 0 };
|
||||
LARGE_INTEGER filePos = { { sizeof(uint32_t) + sizeof(DDS_HEADER), 0 } };
|
||||
if (!SetFilePointerEx(hFile.get(), filePos, 0, FILE_BEGIN))
|
||||
{
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
|
|
|
@ -157,12 +157,12 @@ HRESULT DirectX::FlipRotate(
|
|||
return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
static_assert(TEX_FR_ROTATE0 == WICBitmapTransformRotate0, "TEX_FR_ROTATE0 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE90 == WICBitmapTransformRotate90, "TEX_FR_ROTATE90 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE180 == WICBitmapTransformRotate180, "TEX_FR_ROTATE180 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE270 == WICBitmapTransformRotate270, "TEX_FR_ROTATE270 no longer matches WIC");
|
||||
static_assert(TEX_FR_FLIP_HORIZONTAL == WICBitmapTransformFlipHorizontal, "TEX_FR_FLIP_HORIZONTAL no longer matches WIC");
|
||||
static_assert(TEX_FR_FLIP_VERTICAL == WICBitmapTransformFlipVertical, "TEX_FR_FLIP_VERTICAL no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE0) == static_cast<int>(WICBitmapTransformRotate0), "TEX_FR_ROTATE0 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE90) == static_cast<int>(WICBitmapTransformRotate90), "TEX_FR_ROTATE90 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE180) == static_cast<int>(WICBitmapTransformRotate180), "TEX_FR_ROTATE180 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE270) == static_cast<int>(WICBitmapTransformRotate270), "TEX_FR_ROTATE270 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_FLIP_HORIZONTAL) == static_cast<int>(WICBitmapTransformFlipHorizontal), "TEX_FR_FLIP_HORIZONTAL no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_FLIP_VERTICAL) == static_cast<int>(WICBitmapTransformFlipVertical), "TEX_FR_FLIP_VERTICAL no longer matches WIC");
|
||||
|
||||
// Only supports 90, 180, 270, or no rotation flags... not a combination of rotation flags
|
||||
switch (flags & (TEX_FR_ROTATE90 | TEX_FR_ROTATE180 | TEX_FR_ROTATE270))
|
||||
|
@ -239,12 +239,12 @@ HRESULT DirectX::FlipRotate(
|
|||
return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
static_assert(TEX_FR_ROTATE0 == WICBitmapTransformRotate0, "TEX_FR_ROTATE0 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE90 == WICBitmapTransformRotate90, "TEX_FR_ROTATE90 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE180 == WICBitmapTransformRotate180, "TEX_FR_ROTATE180 no longer matches WIC");
|
||||
static_assert(TEX_FR_ROTATE270 == WICBitmapTransformRotate270, "TEX_FR_ROTATE270 no longer matches WIC");
|
||||
static_assert(TEX_FR_FLIP_HORIZONTAL == WICBitmapTransformFlipHorizontal, "TEX_FR_FLIP_HORIZONTAL no longer matches WIC");
|
||||
static_assert(TEX_FR_FLIP_VERTICAL == WICBitmapTransformFlipVertical, "TEX_FR_FLIP_VERTICAL no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE0) == static_cast<int>(WICBitmapTransformRotate0), "TEX_FR_ROTATE0 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE90) == static_cast<int>(WICBitmapTransformRotate90), "TEX_FR_ROTATE90 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE180) == static_cast<int>(WICBitmapTransformRotate180), "TEX_FR_ROTATE180 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_ROTATE270) == static_cast<int>(WICBitmapTransformRotate270), "TEX_FR_ROTATE270 no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_FLIP_HORIZONTAL) == static_cast<int>(WICBitmapTransformFlipHorizontal), "TEX_FR_FLIP_HORIZONTAL no longer matches WIC");
|
||||
static_assert(static_cast<int>(TEX_FR_FLIP_VERTICAL) == static_cast<int>(WICBitmapTransformFlipVertical), "TEX_FR_FLIP_VERTICAL no longer matches WIC");
|
||||
|
||||
// Only supports 90, 180, 270, or no rotation flags... not a combination of rotation flags
|
||||
switch (flags & (TEX_FR_ROTATE90 | TEX_FR_ROTATE180 | TEX_FR_ROTATE270))
|
||||
|
|
|
@ -486,7 +486,8 @@ namespace
|
|||
{
|
||||
if (spanPtr[(runLen - 1) * 4] != spanPtr[runLen * 4])
|
||||
{
|
||||
scan[runLen++] = spanPtr[runLen * 4];
|
||||
scan[runLen] = spanPtr[runLen * 4];
|
||||
runLen++;
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
|
|
@ -768,7 +768,7 @@ bool ScratchImage::IsAlphaAllOpaque() const
|
|||
if (!scanline)
|
||||
return false;
|
||||
|
||||
static const XMVECTORF32 threshold = { 0.99f, 0.99f, 0.99f, 0.99f };
|
||||
static const XMVECTORF32 threshold = { { { 0.99f, 0.99f, 0.99f, 0.99f } } };
|
||||
|
||||
for (size_t index = 0; index < m_nimages; ++index)
|
||||
{
|
||||
|
|
|
@ -1294,7 +1294,7 @@ namespace
|
|||
{
|
||||
// Need to slightly bias results for floating-point error accumulation which can
|
||||
// be visible with harshly quantized values
|
||||
static const XMVECTORF32 Bias = { 0.f, 0.f, 0.f, 0.1f };
|
||||
static const XMVECTORF32 Bias = { { { 0.f, 0.f, 0.f, 0.1f } } };
|
||||
|
||||
XMVECTOR* ptr = pAccSrc;
|
||||
for (size_t i = 0; i < dest->width; ++i, ++ptr)
|
||||
|
@ -2474,7 +2474,7 @@ namespace
|
|||
{
|
||||
// Need to slightly bias results for floating-point error accumulation which can
|
||||
// be visible with harshly quantized values
|
||||
static const XMVECTORF32 Bias = { 0.f, 0.f, 0.f, 0.1f };
|
||||
static const XMVECTORF32 Bias = { { { 0.f, 0.f, 0.f, 0.1f } } };
|
||||
|
||||
XMVECTOR* ptr = pAccSrc;
|
||||
for (size_t i = 0; i < dest->width; ++i, ++ptr)
|
||||
|
|
|
@ -19,7 +19,7 @@ using namespace DirectX;
|
|||
|
||||
namespace
|
||||
{
|
||||
const XMVECTORF32 g_Gamma22 = { 2.2f, 2.2f, 2.2f, 1.f };
|
||||
const XMVECTORF32 g_Gamma22 = { { { 2.2f, 2.2f, 2.2f, 1.f } } };
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
HRESULT ComputeMSE_(
|
||||
|
@ -60,6 +60,9 @@ namespace
|
|||
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
||||
flags |= CMSE_IMAGE1_SRGB;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (image2.format)
|
||||
|
@ -80,6 +83,9 @@ namespace
|
|||
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
||||
flags |= CMSE_IMAGE2_SRGB;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
const uint8_t *pSrc1 = image1.pixels;
|
||||
|
@ -89,7 +95,7 @@ namespace
|
|||
const size_t rowPitch2 = image2.rowPitch;
|
||||
|
||||
XMVECTOR acc = g_XMZero;
|
||||
static XMVECTORF32 two = { 2.0f, 2.0f, 2.0f, 2.0f };
|
||||
static XMVECTORF32 two = { { { 2.0f, 2.0f, 2.0f, 2.0f } } };
|
||||
|
||||
for (size_t h = 0; h < image1.height; ++h)
|
||||
{
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace
|
|||
{
|
||||
XMFLOAT4A f;
|
||||
|
||||
static XMVECTORF32 lScale = { 0.2125f, 0.7154f, 0.0721f, 1.f };
|
||||
static XMVECTORF32 lScale = { { { 0.2125f, 0.7154f, 0.0721f, 1.f } } };
|
||||
|
||||
static_assert(CNMAP_CHANNEL_RED == 0x1, "CNMAP_CHANNEL_ flag values don't match mask");
|
||||
switch (flags & 0xf)
|
||||
|
|
|
@ -97,8 +97,8 @@ namespace DirectX
|
|||
{
|
||||
static_assert( TEX_FILTER_DITHER == 0x10000, "TEX_FILTER_DITHER* flag values don't match mask" );
|
||||
|
||||
static_assert( TEX_FILTER_DITHER == WIC_FLAGS_DITHER, "TEX_FILTER_DITHER* should match WIC_FLAGS_DITHER*" );
|
||||
static_assert( TEX_FILTER_DITHER_DIFFUSION == WIC_FLAGS_DITHER_DIFFUSION, "TEX_FILTER_DITHER* should match WIC_FLAGS_DITHER*" );
|
||||
static_assert(static_cast<int>(TEX_FILTER_DITHER) == static_cast<int>(WIC_FLAGS_DITHER), "TEX_FILTER_DITHER* should match WIC_FLAGS_DITHER*");
|
||||
static_assert(static_cast<int>(TEX_FILTER_DITHER_DIFFUSION) == static_cast<int>(WIC_FLAGS_DITHER_DIFFUSION), "TEX_FILTER_DITHER* should match WIC_FLAGS_DITHER*");
|
||||
|
||||
switch( flags & 0xF0000 )
|
||||
{
|
||||
|
@ -117,10 +117,10 @@ namespace DirectX
|
|||
{
|
||||
static_assert( TEX_FILTER_POINT == 0x100000, "TEX_FILTER_ flag values don't match TEX_FILTER_MASK" );
|
||||
|
||||
static_assert( TEX_FILTER_POINT == WIC_FLAGS_FILTER_POINT, "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*" );
|
||||
static_assert( TEX_FILTER_LINEAR == WIC_FLAGS_FILTER_LINEAR, "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*" );
|
||||
static_assert( TEX_FILTER_CUBIC == WIC_FLAGS_FILTER_CUBIC, "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*" );
|
||||
static_assert( TEX_FILTER_FANT == WIC_FLAGS_FILTER_FANT, "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*" );
|
||||
static_assert(static_cast<int>(TEX_FILTER_POINT) == static_cast<int>(WIC_FLAGS_FILTER_POINT), "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*");
|
||||
static_assert(static_cast<int>(TEX_FILTER_LINEAR) == static_cast<int>(WIC_FLAGS_FILTER_LINEAR), "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*");
|
||||
static_assert(static_cast<int>(TEX_FILTER_CUBIC) == static_cast<int>(WIC_FLAGS_FILTER_CUBIC), "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*");
|
||||
static_assert(static_cast<int>(TEX_FILTER_FANT) == static_cast<int>(WIC_FLAGS_FILTER_FANT), "TEX_FILTER_* flags should match WIC_FLAGS_FILTER_*");
|
||||
|
||||
switch( flags & TEX_FILTER_MASK )
|
||||
{
|
||||
|
|
|
@ -64,9 +64,9 @@ namespace
|
|||
assert(srcImage.width == destImage.width);
|
||||
assert(srcImage.height == destImage.height);
|
||||
|
||||
static_assert(TEX_PMALPHA_SRGB_IN == TEX_FILTER_SRGB_IN, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_PMALPHA_SRGB_OUT == TEX_FILTER_SRGB_OUT, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_PMALPHA_SRGB == TEX_FILTER_SRGB, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB_IN) == static_cast<int>(TEX_FILTER_SRGB_IN), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB_OUT) == static_cast<int>(TEX_FILTER_SRGB_OUT), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB) == static_cast<int>(TEX_FILTER_SRGB), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
flags &= TEX_PMALPHA_SRGB;
|
||||
|
||||
ScopedAlignedArrayXMVECTOR scanline(reinterpret_cast<XMVECTOR*>(_aligned_malloc((sizeof(XMVECTOR)*srcImage.width), 16)));
|
||||
|
@ -147,9 +147,9 @@ namespace
|
|||
assert(srcImage.width == destImage.width);
|
||||
assert(srcImage.height == destImage.height);
|
||||
|
||||
static_assert(TEX_PMALPHA_SRGB_IN == TEX_FILTER_SRGB_IN, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_PMALPHA_SRGB_OUT == TEX_FILTER_SRGB_OUT, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(TEX_PMALPHA_SRGB == TEX_FILTER_SRGB, "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB_IN) == static_cast<int>(TEX_FILTER_SRGB_IN), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB_OUT) == static_cast<int>(TEX_FILTER_SRGB_OUT), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
static_assert(static_cast<int>(TEX_PMALPHA_SRGB) == static_cast<int>(TEX_FILTER_SRGB), "TEX_PMALHPA_SRGB* should match TEX_FILTER_SRGB*");
|
||||
flags &= TEX_PMALPHA_SRGB;
|
||||
|
||||
ScopedAlignedArrayXMVECTOR scanline(reinterpret_cast<XMVECTOR*>(_aligned_malloc((sizeof(XMVECTOR)*srcImage.width), 16)));
|
||||
|
|
|
@ -758,7 +758,7 @@ namespace
|
|||
{
|
||||
// Need to slightly bias results for floating-point error accumulation which can
|
||||
// be visible with harshly quantized values
|
||||
static const XMVECTORF32 Bias = { 0.f, 0.f, 0.f, 0.1f };
|
||||
static const XMVECTORF32 Bias = { { { 0.f, 0.f, 0.f, 0.1f } } };
|
||||
|
||||
XMVECTOR* ptr = pAccSrc;
|
||||
for (size_t i = 0; i < destImage.width; ++i, ++ptr)
|
||||
|
|
|
@ -1040,7 +1040,7 @@ HRESULT DirectX::LoadFromTGAFile(
|
|||
if (offset > sizeof(TGA_HEADER))
|
||||
{
|
||||
// Skip past the id string
|
||||
LARGE_INTEGER filePos = { static_cast<DWORD>(offset), 0 };
|
||||
LARGE_INTEGER filePos = { { static_cast<DWORD>(offset), 0 } };
|
||||
if (!SetFilePointerEx(hFile.get(), filePos, 0, FILE_BEGIN))
|
||||
{
|
||||
return HRESULT_FROM_WIN32(GetLastError());
|
||||
|
@ -1184,6 +1184,9 @@ HRESULT DirectX::LoadFromTGAFile(
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else // RLE || EXPAND || INVERTX || !INVERTY
|
||||
|
|
|
@ -234,6 +234,10 @@ namespace
|
|||
if (pConvert)
|
||||
memcpy(pConvert, &GUID_WICPixelFormat8bppGray, sizeof(WICPixelFormatGUID));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return format;
|
||||
|
@ -1153,7 +1157,7 @@ HRESULT DirectX::SaveToWICMemory(
|
|||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
LARGE_INTEGER li = { 0 };
|
||||
LARGE_INTEGER li = { { 0 } };
|
||||
hr = stream->Seek(li, STREAM_SEEK_SET, 0);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
@ -1210,7 +1214,7 @@ HRESULT DirectX::SaveToWICMemory(
|
|||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
LARGE_INTEGER li = { 0 };
|
||||
LARGE_INTEGER li = { { 0 } };
|
||||
hr = stream->Seek(li, STREAM_SEEK_SET, 0);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
|
|
@ -27,8 +27,8 @@ namespace DirectX
|
|||
// Box filtering helpers
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
XMGLOBALCONST XMVECTORF32 g_boxScale = { 0.25f, 0.25f, 0.25f, 0.25f };
|
||||
XMGLOBALCONST XMVECTORF32 g_boxScale3D = { 0.125f, 0.125f, 0.125f, 0.125f };
|
||||
XMGLOBALCONST XMVECTORF32 g_boxScale = { { { 0.25f, 0.25f, 0.25f, 0.25f } } };
|
||||
XMGLOBALCONST XMVECTORF32 g_boxScale3D = { { { 0.125f, 0.125f, 0.125f, 0.125f } } };
|
||||
|
||||
#define AVERAGE4( res, p0, p1, p2, p3 ) \
|
||||
{ \
|
||||
|
@ -116,9 +116,9 @@ inline void _CreateLinearFilter(_In_ size_t source, _In_ size_t dest, _In_ bool
|
|||
// Cubic filtering helpers
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicThird = { 1.f/3.f, 1.f/3.f, 1.f/3.f, 1.f/3.f };
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicSixth = { 1.f/6.f, 1.f/6.f, 1.f/6.f, 1.f/6.f };
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicHalf = { 1.f/2.f, 1.f/2.f, 1.f/2.f, 1.f/2.f };
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicThird = { { { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } } };
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicSixth = { { { 1.f / 6.f, 1.f / 6.f, 1.f / 6.f, 1.f / 6.f } } };
|
||||
XMGLOBALCONST XMVECTORF32 g_cubicHalf = { { { 1.f / 2.f, 1.f / 2.f, 1.f / 2.f, 1.f / 2.f } } };
|
||||
|
||||
inline ptrdiff_t bounduvw(ptrdiff_t u, ptrdiff_t maxu, bool wrap, bool mirror)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче