diff options
author | Chris Robinson <[email protected]> | 2012-03-09 22:38:26 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2012-03-09 22:38:26 -0800 |
commit | 7db29a233249fd0c0ce37064c118072ca5b5a29e (patch) | |
tree | e23238e1c3d46c32e8b84baa65ae82b21b18069f /Alc | |
parent | 6e70ae9958fe8e0f2abfa8d0acc198f0ef053af6 (diff) |
Clamp the upper and lower bound of the doppler velocity scale more like the original
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALu.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -625,14 +625,15 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext) } // Calculate Velocity - if(DopplerFactor > 0.0f) + if(DopplerFactor > 0.0f && SpeedOfSound > 0.5f) { ALfloat VSS, VLS; VSS = aluDotproduct(Velocity, SourceToListener) * DopplerFactor; VLS = aluDotproduct(ListenerVel, SourceToListener) * DopplerFactor; - Pitch *= maxf(SpeedOfSound-VLS, 1.0f) / maxf(SpeedOfSound-VSS, 1.0f); + Pitch *= clampf(SpeedOfSound-VLS, 1.0f, SpeedOfSound*2.0f - 1.0f) / + clampf(SpeedOfSound-VSS, 1.0f, SpeedOfSound*2.0f - 1.0f); } BufferListItem = ALSource->queue; |