summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorPokechu22 <Pokechu022@gmail.com>2021-02-11 22:38:07 -0800
committerPokechu22 <Pokechu022@gmail.com>2021-03-06 19:27:18 -0800
commitdb8ced7e4e4724c38f148ee449c346e447dd3942 (patch)
tree4eeefa876565c14914e7b44e11a0ee8276594b10 /Source/Core/VideoCommon
parentf2bea6770966e6b69e4d005fbf1dc9de5c854a57 (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.cpp26
-rw-r--r--Source/Core/VideoCommon/BPMemory.h2
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