From 5c67bbaa86d8f6c1dc19414329d49ac413b20161 Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Wed, 8 Jul 2026 07:33:30 +0200 Subject: [PATCH] fix: dds dumping for A8 textures (#888) --- src/ObjImage/Image/DdsWriter.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ObjImage/Image/DdsWriter.cpp b/src/ObjImage/Image/DdsWriter.cpp index 5b2c6f2e..e4bffb62 100644 --- a/src/ObjImage/Image/DdsWriter.cpp +++ b/src/ObjImage/Image/DdsWriter.cpp @@ -93,13 +93,24 @@ namespace pf.dwABitMask = format->HasA() ? Mask1(format->m_a_size) << format->m_a_offset : 0; pf.dwFlags = 0; - if (format->HasA()) - pf.dwFlags |= DDPF_ALPHAPIXELS; - if (format->HasR() && !format->HasG() && !format->HasB()) - pf.dwFlags |= DDPF_LUMINANCE; + const auto hasAnyColor = format->HasR() || format->HasG() || format->HasB(); + const auto hasAlpha = format->HasA(); + + if (!hasAnyColor && hasAlpha) + { + pf.dwFlags |= DDPF_ALPHA; + } else - pf.dwFlags |= DDPF_RGB; + { + if (hasAlpha) + pf.dwFlags |= DDPF_ALPHAPIXELS; + + if (format->HasR() && !format->HasG() && !format->HasB()) + pf.dwFlags |= DDPF_LUMINANCE; + else if (hasAnyColor) + pf.dwFlags |= DDPF_RGB; + } } void PopulatePixelFormat(DDS_PIXELFORMAT& pf)