mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-07-02 22:08:11 +00:00
fix: iwi rgb and rgba byte order wrong (#864)
This commit is contained in:
@@ -51,7 +51,6 @@ namespace
|
|||||||
{ImageFormatId::BC4, ImageFormatId::B8_G8_R8 },
|
{ImageFormatId::BC4, ImageFormatId::B8_G8_R8 },
|
||||||
{ImageFormatId::BC5, ImageFormatId::B8_G8_R8 },
|
{ImageFormatId::BC5, ImageFormatId::B8_G8_R8 },
|
||||||
{ImageFormatId::B8_G8_R8_X8, ImageFormatId::B8_G8_R8 },
|
{ImageFormatId::B8_G8_R8_X8, ImageFormatId::B8_G8_R8 },
|
||||||
{ImageFormatId::R8_G8_B8, ImageFormatId::B8_G8_R8 },
|
|
||||||
{ImageFormatId::R8_G8_B8_A8, ImageFormatId::B8_G8_R8_A8},
|
{ImageFormatId::R8_G8_B8_A8, ImageFormatId::B8_G8_R8_A8},
|
||||||
{ImageFormatId::A8, ImageFormatId::B8_G8_R8 },
|
{ImageFormatId::A8, ImageFormatId::B8_G8_R8 },
|
||||||
{ImageFormatId::R8, ImageFormatId::B8_G8_R8 },
|
{ImageFormatId::R8, ImageFormatId::B8_G8_R8 },
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ namespace image
|
|||||||
std::unique_ptr<Texture> ConvertTextureForDdsFileOutputIfNecessary(const Texture* texture)
|
std::unique_ptr<Texture> ConvertTextureForDdsFileOutputIfNecessary(const Texture* texture)
|
||||||
{
|
{
|
||||||
static const std::unordered_map<ImageFormatId, ImageFormatId> ddsConversionTable{
|
static const std::unordered_map<ImageFormatId, ImageFormatId> ddsConversionTable{
|
||||||
{ImageFormatId::R8_G8_B8, ImageFormatId::B8_G8_R8_X8},
|
{ImageFormatId::B8_G8_R8, ImageFormatId::B8_G8_R8_X8},
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto entry = ddsConversionTable.find(texture->GetFormat()->GetId());
|
const auto entry = ddsConversionTable.find(texture->GetFormat()->GetId());
|
||||||
|
|||||||
@@ -2,27 +2,6 @@
|
|||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
const char* IMAGE_FORMAT_NAMES[]{
|
|
||||||
"R8_G8_B8",
|
|
||||||
"B8_G8_R8",
|
|
||||||
"B8_G8_R8_X8",
|
|
||||||
"R8_G8_B8_A8",
|
|
||||||
"B8_G8_R8_A8",
|
|
||||||
"A8",
|
|
||||||
"R16_G16_B16_A16_FLOAT",
|
|
||||||
"R8",
|
|
||||||
"R8_A8",
|
|
||||||
"BC1",
|
|
||||||
"BC2",
|
|
||||||
"BC3",
|
|
||||||
"BC4",
|
|
||||||
"BC5",
|
|
||||||
};
|
|
||||||
static_assert(std::extent_v<decltype(IMAGE_FORMAT_NAMES)> == static_cast<unsigned>(image::ImageFormatId::MAX));
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
namespace image
|
namespace image
|
||||||
{
|
{
|
||||||
ImageFormat::ImageFormat(const ImageFormatId id, std::string name, const oat::D3DFORMAT d3dFormat, const oat::DXGI_FORMAT dxgiFormat)
|
ImageFormat::ImageFormat(const ImageFormatId id, std::string name, const oat::D3DFORMAT d3dFormat, const oat::DXGI_FORMAT dxgiFormat)
|
||||||
@@ -211,8 +190,7 @@ namespace image
|
|||||||
|
|
||||||
namespace format
|
namespace format
|
||||||
{
|
{
|
||||||
const ImageFormatUnsigned R8_G8_B8(ImageFormatId::R8_G8_B8, "R8_G8_B8", oat::D3DFMT_R8G8B8, oat::DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0);
|
const ImageFormatUnsigned B8_G8_R8(ImageFormatId::B8_G8_R8, "B8_G8_R8", oat::D3DFMT_R8G8B8, oat::DXGI_FORMAT_UNKNOWN, 24, 16, 8, 8, 8, 0, 8, 0, 0);
|
||||||
const ImageFormatUnsigned B8_G8_R8(ImageFormatId::B8_G8_R8, "B8_G8_R8", oat::D3DFMT_UNKNOWN, oat::DXGI_FORMAT_UNKNOWN, 24, 16, 8, 8, 8, 0, 8, 0, 0);
|
|
||||||
const ImageFormatUnsigned
|
const ImageFormatUnsigned
|
||||||
B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, "B8_G8_R8_X8", oat::D3DFMT_X8R8G8B8, oat::DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0);
|
B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, "B8_G8_R8_X8", oat::D3DFMT_X8R8G8B8, oat::DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0);
|
||||||
const ImageFormatUnsigned
|
const ImageFormatUnsigned
|
||||||
@@ -242,7 +220,6 @@ namespace image
|
|||||||
const ImageFormatBlockCompressed BC5(ImageFormatId::BC5, "BC5", oat::D3DFMT_UNKNOWN, oat::DXGI_FORMAT_BC5_UNORM, 4, 128, true, true, false, false);
|
const ImageFormatBlockCompressed BC5(ImageFormatId::BC5, "BC5", oat::D3DFMT_UNKNOWN, oat::DXGI_FORMAT_BC5_UNORM, 4, 128, true, true, false, false);
|
||||||
|
|
||||||
const ImageFormat* const ALL[static_cast<unsigned>(ImageFormatId::MAX)]{
|
const ImageFormat* const ALL[static_cast<unsigned>(ImageFormatId::MAX)]{
|
||||||
&R8_G8_B8,
|
|
||||||
&B8_G8_R8,
|
&B8_G8_R8,
|
||||||
&B8_G8_R8_X8,
|
&B8_G8_R8_X8,
|
||||||
&R8_G8_B8_A8,
|
&R8_G8_B8_A8,
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ namespace image
|
|||||||
{
|
{
|
||||||
enum class ImageFormatId : std::uint8_t
|
enum class ImageFormatId : std::uint8_t
|
||||||
{
|
{
|
||||||
R8_G8_B8,
|
|
||||||
B8_G8_R8,
|
B8_G8_R8,
|
||||||
B8_G8_R8_X8,
|
B8_G8_R8_X8,
|
||||||
R8_G8_B8_A8,
|
R8_G8_B8_A8,
|
||||||
@@ -139,7 +138,6 @@ namespace image
|
|||||||
|
|
||||||
namespace format
|
namespace format
|
||||||
{
|
{
|
||||||
extern const ImageFormatUnsigned R8_G8_B8;
|
|
||||||
extern const ImageFormatUnsigned B8_G8_R8;
|
extern const ImageFormatUnsigned B8_G8_R8;
|
||||||
extern const ImageFormatUnsigned B8_G8_R8_X8;
|
extern const ImageFormatUnsigned B8_G8_R8_X8;
|
||||||
extern const ImageFormatUnsigned R8_G8_B8_A8;
|
extern const ImageFormatUnsigned R8_G8_B8_A8;
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ namespace
|
|||||||
switch (static_cast<iwi6::IwiFormat>(format))
|
switch (static_cast<iwi6::IwiFormat>(format))
|
||||||
{
|
{
|
||||||
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
||||||
return &format::R8_G8_B8_A8;
|
return &format::B8_G8_R8_A8;
|
||||||
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
||||||
return &format::R8_G8_B8;
|
return &format::B8_G8_R8;
|
||||||
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
case iwi6::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
||||||
return &format::A8;
|
return &format::A8;
|
||||||
case iwi6::IwiFormat::IMG_FORMAT_DXT1:
|
case iwi6::IwiFormat::IMG_FORMAT_DXT1:
|
||||||
@@ -121,9 +121,9 @@ namespace
|
|||||||
switch (static_cast<iwi8::IwiFormat>(format))
|
switch (static_cast<iwi8::IwiFormat>(format))
|
||||||
{
|
{
|
||||||
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
||||||
return &format::R8_G8_B8_A8;
|
return &format::B8_G8_R8_A8;
|
||||||
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
||||||
return &format::R8_G8_B8;
|
return &format::B8_G8_R8;
|
||||||
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
case iwi8::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
||||||
return &format::A8;
|
return &format::A8;
|
||||||
case iwi8::IwiFormat::IMG_FORMAT_DXT1:
|
case iwi8::IwiFormat::IMG_FORMAT_DXT1:
|
||||||
@@ -250,9 +250,9 @@ namespace
|
|||||||
switch (static_cast<iwi13::IwiFormat>(format))
|
switch (static_cast<iwi13::IwiFormat>(format))
|
||||||
{
|
{
|
||||||
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_RGBA:
|
||||||
return &format::R8_G8_B8_A8;
|
return &format::B8_G8_R8_A8;
|
||||||
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
||||||
return &format::R8_G8_B8;
|
return &format::B8_G8_R8;
|
||||||
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
case iwi13::IwiFormat::IMG_FORMAT_BITMAP_ALPHA:
|
||||||
return &format::A8;
|
return &format::A8;
|
||||||
case iwi13::IwiFormat::IMG_FORMAT_DXT1:
|
case iwi13::IwiFormat::IMG_FORMAT_DXT1:
|
||||||
@@ -376,7 +376,7 @@ namespace
|
|||||||
assert(false); // Unsupported yet
|
assert(false); // Unsupported yet
|
||||||
return &format::R16_G16_B16_A16_FLOAT;
|
return &format::R16_G16_B16_A16_FLOAT;
|
||||||
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_RGB:
|
||||||
return &format::R8_G8_B8;
|
return &format::B8_G8_R8; // This is a guess, idk the byte order as PC does not support this
|
||||||
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_LUMINANCE_ALPHA:
|
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_LUMINANCE_ALPHA:
|
||||||
return &format::R8_A8;
|
return &format::R8_A8;
|
||||||
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_LUMINANCE:
|
case iwi27::IwiFormat::IMG_FORMAT_BITMAP_LUMINANCE:
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ IwiFormat IwiWriter::GetIwiFormatForImageFormat(const ImageFormat* imageFormat)
|
|||||||
{
|
{
|
||||||
switch (imageFormat->GetId())
|
switch (imageFormat->GetId())
|
||||||
{
|
{
|
||||||
case ImageFormatId::R8_G8_B8:
|
case ImageFormatId::B8_G8_R8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
||||||
|
|
||||||
case ImageFormatId::R8_G8_B8_A8:
|
case ImageFormatId::B8_G8_R8_A8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
||||||
|
|
||||||
case ImageFormatId::A8:
|
case ImageFormatId::A8:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ IwiFormat IwiWriter::GetIwiFormatForImageFormat(const ImageFormat* imageFormat)
|
|||||||
{
|
{
|
||||||
switch (imageFormat->GetId())
|
switch (imageFormat->GetId())
|
||||||
{
|
{
|
||||||
case ImageFormatId::R8_G8_B8:
|
case ImageFormatId::B8_G8_R8: // This is a guess, idk the byte order as PC does not support this
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
||||||
|
|
||||||
case ImageFormatId::R8_G8_B8_A8:
|
case ImageFormatId::R8_G8_B8_A8:
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ IwiFormat IwiWriter::GetIwiFormatForImageFormat(const ImageFormat* imageFormat)
|
|||||||
{
|
{
|
||||||
switch (imageFormat->GetId())
|
switch (imageFormat->GetId())
|
||||||
{
|
{
|
||||||
case ImageFormatId::R8_G8_B8:
|
case ImageFormatId::B8_G8_R8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
||||||
|
|
||||||
case ImageFormatId::R8_G8_B8_A8:
|
case ImageFormatId::B8_G8_R8_A8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
||||||
|
|
||||||
case ImageFormatId::A8:
|
case ImageFormatId::A8:
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ IwiFormat IwiWriter::GetIwiFormatForImageFormat(const ImageFormat* imageFormat)
|
|||||||
{
|
{
|
||||||
switch (imageFormat->GetId())
|
switch (imageFormat->GetId())
|
||||||
{
|
{
|
||||||
case ImageFormatId::R8_G8_B8:
|
case ImageFormatId::B8_G8_R8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGB;
|
||||||
|
|
||||||
case ImageFormatId::R8_G8_B8_A8:
|
case ImageFormatId::B8_G8_R8_A8:
|
||||||
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
return IwiFormat::IMG_FORMAT_BITMAP_RGBA;
|
||||||
|
|
||||||
case ImageFormatId::A8:
|
case ImageFormatId::A8:
|
||||||
|
|||||||
Reference in New Issue
Block a user