chore(component): clean up mip level calculation in CCharacterComponent::PasteFromSkin

This commit is contained in:
fallenoak 2025-10-22 08:29:34 -05:00
parent af887872d0
commit 5f211e0a38
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
2 changed files with 7 additions and 5 deletions

View File

@ -135,13 +135,15 @@ void CCharacterComponent::PasteFromSkin(COMPONENT_SECTIONS section, void* srcTex
srcInfo.alphaSize = 0; srcInfo.alphaSize = 0;
if (srcInfo.width >= CCharacterComponent::s_textureSize || srcInfo.height >= CCharacterComponent::s_textureSize ) { if (srcInfo.width >= CCharacterComponent::s_textureSize || srcInfo.height >= CCharacterComponent::s_textureSize ) {
int32_t levelDelta; // Calculate mip level matching CCharacterComponent::s_textureSize
int32_t mipLevel = 0;
int32_t srcWidth = srcInfo.width; int32_t srcWidth = srcInfo.width;
for (levelDelta = 0; CCharacterComponent::s_textureSize < srcWidth; levelDelta++) { while (srcWidth > CCharacterComponent::s_textureSize) {
srcWidth >>= 1; srcWidth /= 2;
mipLevel++;
} }
CCharacterComponent::Paste(srcTexture, dstMips, sectionInfo.pos, sectionInfo.pos, sectionInfo.size, srcInfo, levelDelta); CCharacterComponent::Paste(srcTexture, dstMips, sectionInfo.pos, sectionInfo.pos, sectionInfo.size, srcInfo, mipLevel);
} else { } else {
CCharacterComponent::PasteScale(srcTexture, dstMips, sectionInfo.pos, sectionInfo.pos, sectionInfo.size, srcInfo); CCharacterComponent::PasteScale(srcTexture, dstMips, sectionInfo.pos, sectionInfo.pos, sectionInfo.size, srcInfo);
} }

View File

@ -87,7 +87,7 @@ class CCharacterComponent {
static void RenderPrepLU(CCharacterComponent* component); static void RenderPrepLU(CCharacterComponent* component);
static void RenderPrepTL(CCharacterComponent* component); static void RenderPrepTL(CCharacterComponent* component);
static void RenderPrepTU(CCharacterComponent* component); static void RenderPrepTU(CCharacterComponent* component);
static void Paste(void* srcTexture, MipBits* dstMips, const C2iVector& a3, const C2iVector& a4, const C2iVector& a5, TCTEXTUREINFO& srcInfo, int32_t a7); static void Paste(void* srcTexture, MipBits* dstMips, const C2iVector& a3, const C2iVector& a4, const C2iVector& a5, TCTEXTUREINFO& srcInfo, int32_t mipLevel);
static void PasteFromSkin(COMPONENT_SECTIONS section, void* srcTexture, MipBits* dstMips); static void PasteFromSkin(COMPONENT_SECTIONS section, void* srcTexture, MipBits* dstMips);
static void PasteScale(void* srcTexture, MipBits* dstMips, const C2iVector& a3, const C2iVector& a4, const C2iVector& a5, TCTEXTUREINFO& srcInfo); static void PasteScale(void* srcTexture, MipBits* dstMips, const C2iVector& a3, const C2iVector& a4, const C2iVector& a5, TCTEXTUREINFO& srcInfo);
static void UpdateBaseTexture(EGxTexCommand cmd, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevel, void* userArg, uint32_t& texelStrideInBytes, const void*& texels); static void UpdateBaseTexture(EGxTexCommand cmd, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevel, void* userArg, uint32_t& texelStrideInBytes, const void*& texels);