forked from Mirrorlandia_minetest/irrlicht
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:
parent
2a1d6e5f48
commit
5bf308139c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user