expf throws floating point underflow exception on every value in VS2017.

switch to IEEE-compatible type double exp

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6099 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
engineer_apple 2020-02-23 14:15:53 +00:00
parent 2a1d6e5f48
commit 5bf308139c
2 changed files with 3 additions and 3 deletions

@ -57,7 +57,7 @@ typedef f32 generate_func(s16 x, s16 y, f32 s);
f32 eggbox(s16 x, s16 y, f32 s) f32 eggbox(s16 x, s16 y, f32 s)
{ {
const f32 r = 4.f*sqrtf((f32)(x*x + y*y))/s; const f32 r = 4.f*sqrtf((f32)(x*x + y*y))/s;
const f32 z = expf(-r * 2) * (cosf(0.2f * x) + cosf(0.2f * y)); const f32 z = (f32)exp(-r * 2) * (cosf(0.2f * x) + cosf(0.2f * y));
return 0.25f+0.25f*z; return 0.25f+0.25f*z;
} }

@ -1607,10 +1607,10 @@ void CBurningVideoDriver::VertexCache_fill(const u32 sourceIndex, const u32 dest
fog_factor = (FogEnd - EyeSpace.vertex.z) * EyeSpace.fog_scale; fog_factor = (FogEnd - EyeSpace.vertex.z) * EyeSpace.fog_scale;
break; break;
case EFT_FOG_EXP: case EFT_FOG_EXP:
fog_factor = expf(-FogDensity * EyeSpace.vertex.z); fog_factor = (f32)exp(-FogDensity * EyeSpace.vertex.z);
break; break;
case EFT_FOG_EXP2: case EFT_FOG_EXP2:
fog_factor = expf(-FogDensity * FogDensity * EyeSpace.vertex.z * EyeSpace.vertex.z); fog_factor = (f32)exp(-FogDensity * FogDensity * EyeSpace.vertex.z * EyeSpace.vertex.z);
break; break;
} }