diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2021-02-11 22:38:07 -0800 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2021-03-06 19:27:18 -0800 |
| commit | db8ced7e4e4724c38f148ee449c346e447dd3942 (patch) | |
| tree | 4eeefa876565c14914e7b44e11a0ee8276594b10 /Source/Core/VideoCommon | |
| parent | f2bea6770966e6b69e4d005fbf1dc9de5c854a57 (diff) | |
Add FogParam0::FloatValue and FogParam3::FloatValue
This value will be used in the register description; so expose it in a way that can be re-used instead of calculating it in 2 places later.
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/BPMemory.cpp | 26 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/BPMemory.h | 2 |
2 files changed, 18 insertions, 10 deletions
diff --git a/Source/Core/VideoCommon/BPMemory.cpp b/Source/Core/VideoCommon/BPMemory.cpp index cb510e9e6a..e3887327d3 100644 --- a/Source/Core/VideoCommon/BPMemory.cpp +++ b/Source/Core/VideoCommon/BPMemory.cpp @@ -47,16 +47,26 @@ bool FogParams::IsNaNCase() const return a.exp == 255 && c_proj_fsel.c_exp == 255; } +float FogParam0::FloatValue() const +{ + // scale mantissa from 11 to 23 bits + const u32 integral = (sign << 31) | (exp << 23) | (mant << 12); + return Common::BitCast<float>(integral); +} + +float FogParam3::FloatValue() const +{ + // scale mantissa from 11 to 23 bits + const u32 integral = (c_sign << 31) | (c_exp << 23) | (c_mant << 12); + return Common::BitCast<float>(integral); +} + float FogParams::GetA() const { if (IsNaNCase()) return 0.0f; - // scale mantissa from 11 to 23 bits - const u32 integral = (static_cast<u32>(a.sign) << 31) | (static_cast<u32>(a.exp) << 23) | - (static_cast<u32>(a.mant) << 12); - - return Common::BitCast<float>(integral); + return a.FloatValue(); } float FogParams::GetC() const @@ -67,9 +77,5 @@ float FogParams::GetC() const return !a.sign && !c_proj_fsel.c_sign ? -inf : inf; } - // scale mantissa from 11 to 23 bits - const u32 integral = (c_proj_fsel.c_sign.Value() << 31) | (c_proj_fsel.c_exp.Value() << 23) | - (c_proj_fsel.c_mant.Value() << 12); - - return Common::BitCast<float>(integral); + return c_proj_fsel.FloatValue(); } diff --git a/Source/Core/VideoCommon/BPMemory.h b/Source/Core/VideoCommon/BPMemory.h index 86cc11f7d8..f6d54a6e74 100644 --- a/Source/Core/VideoCommon/BPMemory.h +++ b/Source/Core/VideoCommon/BPMemory.h @@ -661,6 +661,7 @@ union FogParam0 BitField<19, 1, u32> sign; u32 hex; + float FloatValue() const; }; union FogParam3 @@ -673,6 +674,7 @@ union FogParam3 // backward exp, 7 - backward exp2 u32 hex; + float FloatValue() const; }; union FogRangeKElement |
