mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-17 02:07:58 -05:00
Add Model dumping for T6
This commit is contained in:
@ -34,10 +34,17 @@ uint32_t Pack32::Vec4PackGfxColor(const float* in)
|
||||
| static_cast<uint8_t>(std::clamp(in[3], 0.0f, 1.0f) * 255.0f) << 24;
|
||||
}
|
||||
|
||||
void Pack32::Vec2UnpackTexCoords(const uint32_t in, float* out)
|
||||
void Pack32::Vec2UnpackTexCoordsUV(const uint32_t in, float* out)
|
||||
{
|
||||
PackUtil32 packTemp{};
|
||||
const auto inHiDw = static_cast<half_float_t>((in >> 16) & UINT16_MAX);
|
||||
const auto inLoDw = static_cast<half_float_t>(in & UINT16_MAX);
|
||||
|
||||
out[0] = HalfFloat::ToFloat(inLoDw);
|
||||
out[1] = HalfFloat::ToFloat(inHiDw);
|
||||
}
|
||||
|
||||
void Pack32::Vec2UnpackTexCoordsVU(const uint32_t in, float* out)
|
||||
{
|
||||
const auto inHiDw = static_cast<half_float_t>((in >> 16) & UINT16_MAX);
|
||||
const auto inLoDw = static_cast<half_float_t>(in & UINT16_MAX);
|
||||
|
||||
@ -45,7 +52,7 @@ void Pack32::Vec2UnpackTexCoords(const uint32_t in, float* out)
|
||||
out[1] = HalfFloat::ToFloat(inLoDw);
|
||||
}
|
||||
|
||||
void Pack32::Vec3UnpackUnitVec(const uint32_t in, float* out)
|
||||
void Pack32::Vec3UnpackUnitVecScaleBased(const uint32_t in, float* out)
|
||||
{
|
||||
assert(out != nullptr);
|
||||
|
||||
@ -56,6 +63,20 @@ void Pack32::Vec3UnpackUnitVec(const uint32_t in, float* out)
|
||||
out[2] = (static_cast<float>(_in.uc[2]) + -127.0f) * decodeScale;
|
||||
}
|
||||
|
||||
void Pack32::Vec3UnpackUnitVecThirdBased(const uint32_t in, float* out)
|
||||
{
|
||||
PackUtil32 v0{ (in >> 0) & 0x3FF };
|
||||
PackUtil32 v1{ (in >> 10) & 0x3FF };
|
||||
PackUtil32 v2{ (in >> 20) & 0x3FF };
|
||||
|
||||
v0.u = v0.u - 2 * (v0.u & 0x200) + 0x40400000;
|
||||
v1.u = v1.u - 2 * (v1.u & 0x200) + 0x40400000;
|
||||
v2.u = v2.u - 2 * (v2.u & 0x200) + 0x40400000;
|
||||
out[0] = (v0.f - 3.0f) * 8208.0312f;
|
||||
out[1] = (v1.f - 3.0f) * 8208.0312f;
|
||||
out[2] = (v2.f - 3.0f) * 8208.0312f;
|
||||
}
|
||||
|
||||
void Pack32::Vec4UnpackGfxColor(uint32_t in, float* out)
|
||||
{
|
||||
out[0] = static_cast<float>(in & UINT8_MAX) / 255.0f;
|
||||
|
@ -10,7 +10,9 @@ public:
|
||||
static uint32_t Vec2PackTexCoords(const float* in);
|
||||
static uint32_t Vec3PackUnitVec(const float* in);
|
||||
static uint32_t Vec4PackGfxColor(const float* in);
|
||||
static void Vec2UnpackTexCoords(uint32_t in, float* out);
|
||||
static void Vec3UnpackUnitVec(uint32_t in, float* out);
|
||||
static void Vec2UnpackTexCoordsUV(uint32_t in, float* out);
|
||||
static void Vec2UnpackTexCoordsVU(uint32_t in, float* out);
|
||||
static void Vec3UnpackUnitVecScaleBased(uint32_t in, float* out);
|
||||
static void Vec3UnpackUnitVecThirdBased(uint32_t in, float* out);
|
||||
static void Vec4UnpackGfxColor(uint32_t in, float* out);
|
||||
};
|
Reference in New Issue
Block a user