Added TEX_THRESHOLD_DEFAULT constant

This commit is contained in:
Chuck Walbourn 2016-09-14 10:56:38 -07:00
parent 1dec86435d
commit 9290fcdf04
6 changed files with 27 additions and 22 deletions

View File

@ -377,7 +377,7 @@ namespace
_Out_ D3DX_BC1 *pBC, _Out_ D3DX_BC1 *pBC,
_In_reads_(NUM_PIXELS_PER_BLOCK) const HDRColorA *pColor, _In_reads_(NUM_PIXELS_PER_BLOCK) const HDRColorA *pColor,
bool bColorKey, bool bColorKey,
float alphaRef, float threshold,
DWORD flags) DWORD flags)
{ {
assert(pBC && pColor); assert(pBC && pColor);
@ -392,7 +392,7 @@ namespace
for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i) for (size_t i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
{ {
if (pColor[i].a < alphaRef) if (pColor[i].a < threshold)
uColorKey++; uColorKey++;
} }
@ -604,7 +604,7 @@ namespace
for (i = 0; i < NUM_PIXELS_PER_BLOCK; ++i) for (i = 0; i < NUM_PIXELS_PER_BLOCK; ++i)
{ {
if ((3 == uSteps) && (pColor[i].a < alphaRef)) if ((3 == uSteps) && (pColor[i].a < threshold))
{ {
dw = (3 << 30) | (dw >> 2); dw = (3 << 30) | (dw >> 2);
} }
@ -735,7 +735,7 @@ void DirectX::D3DXDecodeBC1(XMVECTOR *pColor, const uint8_t *pBC)
} }
_Use_decl_annotations_ _Use_decl_annotations_
void DirectX::D3DXEncodeBC1(uint8_t *pBC, const XMVECTOR *pColor, float alphaRef, DWORD flags) void DirectX::D3DXEncodeBC1(uint8_t *pBC, const XMVECTOR *pColor, float threshold, DWORD flags)
{ {
assert(pBC && pColor); assert(pBC && pColor);
@ -792,7 +792,7 @@ void DirectX::D3DXEncodeBC1(uint8_t *pBC, const XMVECTOR *pColor, float alphaRef
} }
auto pBC1 = reinterpret_cast<D3DX_BC1 *>(pBC); auto pBC1 = reinterpret_cast<D3DX_BC1 *>(pBC);
EncodeBC1(pBC1, Color, true, alphaRef, flags); EncodeBC1(pBC1, Color, true, threshold, flags);
} }

View File

@ -875,7 +875,7 @@ void D3DXDecodeBC6HU(_Out_writes_(NUM_PIXELS_PER_BLOCK) XMVECTOR *pColor, _In_re
void D3DXDecodeBC6HS(_Out_writes_(NUM_PIXELS_PER_BLOCK) XMVECTOR *pColor, _In_reads_(16) const uint8_t *pBC); void D3DXDecodeBC6HS(_Out_writes_(NUM_PIXELS_PER_BLOCK) XMVECTOR *pColor, _In_reads_(16) const uint8_t *pBC);
void D3DXDecodeBC7(_Out_writes_(NUM_PIXELS_PER_BLOCK) XMVECTOR *pColor, _In_reads_(16) const uint8_t *pBC); void D3DXDecodeBC7(_Out_writes_(NUM_PIXELS_PER_BLOCK) XMVECTOR *pColor, _In_reads_(16) const uint8_t *pBC);
void D3DXEncodeBC1(_Out_writes_(8) uint8_t *pBC, _In_reads_(NUM_PIXELS_PER_BLOCK) const XMVECTOR *pColor, _In_ float alphaRef, _In_ DWORD flags); void D3DXEncodeBC1(_Out_writes_(8) uint8_t *pBC, _In_reads_(NUM_PIXELS_PER_BLOCK) const XMVECTOR *pColor, _In_ float threshold, _In_ DWORD flags);
// BC1 requires one additional parameter, so it doesn't match signature of BC_ENCODE above // BC1 requires one additional parameter, so it doesn't match signature of BC_ENCODE above
void D3DXEncodeBC2(_Out_writes_(16) uint8_t *pBC, _In_reads_(NUM_PIXELS_PER_BLOCK) const XMVECTOR *pColor, _In_ DWORD flags); void D3DXEncodeBC2(_Out_writes_(16) uint8_t *pBC, _In_reads_(NUM_PIXELS_PER_BLOCK) const XMVECTOR *pColor, _In_ DWORD flags);

View File

@ -451,6 +451,9 @@ namespace DirectX
// Resize the image to width x height. Defaults to Fant filtering. // Resize the image to width x height. Defaults to Fant filtering.
// Note for a complex resize, the result will always have mipLevels == 1 // Note for a complex resize, the result will always have mipLevels == 1
const float TEX_THRESHOLD_DEFAULT = 0.5f;
// Default value for alpha threshold used when converting to 1-bit alpha
HRESULT __cdecl Convert( _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold, HRESULT __cdecl Convert( _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold,
_Out_ ScratchImage& image ); _Out_ ScratchImage& image );
HRESULT __cdecl Convert( _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata, HRESULT __cdecl Convert( _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata,
@ -527,11 +530,11 @@ namespace DirectX
// Compress is free to use multithreading to improve performance (by default it does not use multithreading) // Compress is free to use multithreading to improve performance (by default it does not use multithreading)
}; };
HRESULT __cdecl Compress( _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float alphaRef, HRESULT __cdecl Compress( _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float threshold,
_Out_ ScratchImage& cImage ); _Out_ ScratchImage& cImage );
HRESULT __cdecl Compress( _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata, HRESULT __cdecl Compress( _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata,
_In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float alphaRef, _Out_ ScratchImage& cImages ); _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float threshold, _Out_ ScratchImage& cImages );
// Note that alphaRef is only used by BC1. 0.5f is a typical value to use // Note that threshold is only used by BC1. TEX_THRESHOLD_DEFAULT is a typical value to use
HRESULT __cdecl Compress( _In_ ID3D11Device* pDevice, _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, HRESULT __cdecl Compress( _In_ ID3D11Device* pDevice, _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress,
_In_ float alphaWeight, _Out_ ScratchImage& image ); _In_ float alphaWeight, _Out_ ScratchImage& image );

View File

@ -75,7 +75,7 @@ namespace
const Image& result, const Image& result,
DWORD bcflags, DWORD bcflags,
DWORD srgb, DWORD srgb,
float alphaRef) float threshold)
{ {
if (!image.pixels || !result.pixels) if (!image.pixels || !result.pixels)
return E_POINTER; return E_POINTER;
@ -183,7 +183,7 @@ namespace
if (pfEncode) if (pfEncode)
pfEncode(dptr, temp, bcflags); pfEncode(dptr, temp, bcflags);
else else
D3DXEncodeBC1(dptr, temp, alphaRef, bcflags); D3DXEncodeBC1(dptr, temp, threshold, bcflags);
sptr += sbpp * 4; sptr += sbpp * 4;
dptr += blocksize; dptr += blocksize;
@ -204,7 +204,7 @@ namespace
const Image& result, const Image& result,
DWORD bcflags, DWORD bcflags,
DWORD srgb, DWORD srgb,
float alphaRef) float threshold)
{ {
if (!image.pixels || !result.pixels) if (!image.pixels || !result.pixels)
return E_POINTER; return E_POINTER;
@ -323,7 +323,7 @@ namespace
if (pfEncode) if (pfEncode)
pfEncode(pDest, temp, bcflags); pfEncode(pDest, temp, bcflags);
else else
D3DXEncodeBC1(pDest, temp, alphaRef, bcflags); D3DXEncodeBC1(pDest, temp, threshold, bcflags);
} }
return (fail) ? E_FAIL : S_OK; return (fail) ? E_FAIL : S_OK;
@ -594,7 +594,7 @@ HRESULT DirectX::Compress(
const Image& srcImage, const Image& srcImage,
DXGI_FORMAT format, DXGI_FORMAT format,
DWORD compress, DWORD compress,
float alphaRef, float threshold,
ScratchImage& image) ScratchImage& image)
{ {
if (IsCompressed(srcImage.format) || !IsCompressed(format)) if (IsCompressed(srcImage.format) || !IsCompressed(format))
@ -622,12 +622,12 @@ HRESULT DirectX::Compress(
#ifndef _OPENMP #ifndef _OPENMP
return E_NOTIMPL; return E_NOTIMPL;
#else #else
hr = CompressBC_Parallel(srcImage, *img, GetBCFlags(compress), GetSRGBFlags(compress), alphaRef); hr = CompressBC_Parallel(srcImage, *img, GetBCFlags(compress), GetSRGBFlags(compress), threshold);
#endif // _OPENMP #endif // _OPENMP
} }
else else
{ {
hr = CompressBC(srcImage, *img, GetBCFlags(compress), GetSRGBFlags(compress), alphaRef); hr = CompressBC(srcImage, *img, GetBCFlags(compress), GetSRGBFlags(compress), threshold);
} }
if (FAILED(hr)) if (FAILED(hr))
@ -643,7 +643,7 @@ HRESULT DirectX::Compress(
const TexMetadata& metadata, const TexMetadata& metadata,
DXGI_FORMAT format, DXGI_FORMAT format,
DWORD compress, DWORD compress,
float alphaRef, float threshold,
ScratchImage& cImages) ScratchImage& cImages)
{ {
if (!srcImages || !nimages) if (!srcImages || !nimages)
@ -696,7 +696,7 @@ HRESULT DirectX::Compress(
#else #else
if (compress & TEX_COMPRESS_PARALLEL) if (compress & TEX_COMPRESS_PARALLEL)
{ {
hr = CompressBC_Parallel(src, dest[index], GetBCFlags(compress), GetSRGBFlags(compress), alphaRef); hr = CompressBC_Parallel(src, dest[index], GetBCFlags(compress), GetSRGBFlags(compress), threshold);
if (FAILED(hr)) if (FAILED(hr))
{ {
cImages.Release(); cImages.Release();
@ -707,7 +707,7 @@ HRESULT DirectX::Compress(
} }
else else
{ {
hr = CompressBC(src, dest[index], GetBCFlags(compress), GetSRGBFlags(compress), alphaRef); hr = CompressBC(src, dest[index], GetBCFlags(compress), GetSRGBFlags(compress), threshold);
if (FAILED(hr)) if (FAILED(hr))
{ {
cImages.Release(); cImages.Release();

View File

@ -759,7 +759,8 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 1; return 1;
} }
hr = Convert(image->GetImages(), image->GetImageCount(), image->GetMetadata(), format, dwFilter | dwFilterOpts, 0.5f, *timage.get()); hr = Convert(image->GetImages(), image->GetImageCount(), image->GetMetadata(), format,
dwFilter | dwFilterOpts, TEX_THRESHOLD_DEFAULT, *timage.get());
if (FAILED(hr)) if (FAILED(hr))
{ {
wprintf(L" FAILED [convert] (%x)\n", hr); wprintf(L" FAILED [convert] (%x)\n", hr);

View File

@ -1707,7 +1707,8 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
return 1; return 1;
} }
hr = Convert(image->GetImages(), image->GetImageCount(), image->GetMetadata(), tformat, dwFilter | dwFilterOpts | dwSRGB, 0.5f, *timage); hr = Convert(image->GetImages(), image->GetImageCount(), image->GetMetadata(), tformat,
dwFilter | dwFilterOpts | dwSRGB, TEX_THRESHOLD_DEFAULT, *timage);
if (FAILED(hr)) if (FAILED(hr))
{ {
wprintf(L" FAILED [convert] (%x)\n", hr); wprintf(L" FAILED [convert] (%x)\n", hr);
@ -2069,7 +2070,7 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[])
} }
else else
{ {
hr = Compress(img, nimg, info, tformat, cflags | dwSRGB, 0.5f, *timage); hr = Compress(img, nimg, info, tformat, cflags | dwSRGB, TEX_THRESHOLD_DEFAULT, *timage);
} }
if (FAILED(hr)) if (FAILED(hr))
{ {