From 9d7c832874d2971099374cff6017de18f6932717 Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Thu, 13 Feb 2020 23:36:16 -0800 Subject: [PATCH] texconv: Fix for -nmap when outputing compressed UNORM formats --- Texconv/texconv.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Texconv/texconv.cpp b/Texconv/texconv.cpp index 69b3826..6fdcc9b 100644 --- a/Texconv/texconv.cpp +++ b/Texconv/texconv.cpp @@ -2465,7 +2465,22 @@ int __cdecl wmain(_In_ int argc, _In_z_count_(argc) wchar_t* argv[]) DXGI_FORMAT nmfmt = tformat; if (IsCompressed(tformat)) { - nmfmt = (dwNormalMap & CNMAP_COMPUTE_OCCLUSION) ? DXGI_FORMAT_R32G32B32A32_FLOAT : DXGI_FORMAT_R32G32B32_FLOAT; + switch (tformat) + { + case DXGI_FORMAT_BC4_SNORM: + case DXGI_FORMAT_BC5_SNORM: + nmfmt = DXGI_FORMAT_R8G8B8A8_SNORM; + break; + + case DXGI_FORMAT_BC6H_SF16: + case DXGI_FORMAT_BC6H_UF16: + nmfmt = DXGI_FORMAT_R32G32B32_FLOAT; + break; + + default: + nmfmt = DXGI_FORMAT_R8G8B8A8_UNORM; + break; + } } hr = ComputeNormalMap(image->GetImages(), image->GetImageCount(), image->GetMetadata(), dwNormalMap, nmapAmplitude, nmfmt, *timage);