fixup! Shaders: Fix multiplications between 0.0 and inf

This commit is contained in:
Yuri Kunde Schlesner 2015-08-24 02:10:11 -03:00
parent d8ef20c856
commit eff10959de

View file

@ -1031,8 +1031,8 @@ struct float24 {
} }
float24 operator * (const float24& flt) const { float24 operator * (const float24& flt) const {
if ((this->value == 0.f && flt.value == flt.value) || if ((this->value == 0.f && !std::isnan(flt.value)) ||
(flt.value == 0.f && this->value == this->value)) (flt.value == 0.f && !std::isnan(this->value)))
// PICA gives 0 instead of NaN when multiplying by inf // PICA gives 0 instead of NaN when multiplying by inf
return Zero(); return Zero();
return float24::FromFloat32(ToFloat32() * flt.ToFloat32()); return float24::FromFloat32(ToFloat32() * flt.ToFloat32());
@ -1051,8 +1051,8 @@ struct float24 {
} }
float24& operator *= (const float24& flt) { float24& operator *= (const float24& flt) {
if ((this->value == 0.f && flt.value == flt.value) || if ((this->value == 0.f && !std::isnan(flt.value)) ||
(flt.value == 0.f && this->value == this->value)) (flt.value == 0.f && !std::isnan(this->value)))
// PICA gives 0 instead of NaN when multiplying by inf // PICA gives 0 instead of NaN when multiplying by inf
*this = Zero(); *this = Zero();
else value *= flt.ToFloat32(); else value *= flt.ToFloat32();