mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-13 15:01:49 +00:00
clamp effect parameters values
This commit is contained in:
parent
92eeee5a20
commit
a43f41182d
2 changed files with 67 additions and 9 deletions
|
|
@ -806,12 +806,68 @@ void ALAudio::setAcoustics(Acoustics acoustics) {
|
||||||
glm::max(0.1f, glm::min(acoustics.reverbGain, 0.8f) *
|
glm::max(0.1f, glm::min(acoustics.reverbGain, 0.8f) *
|
||||||
(1.0f - glm::min(1.0f, acoustics.reverbAbsorption)))
|
(1.0f - glm::min(1.0f, acoustics.reverbAbsorption)))
|
||||||
));
|
));
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_REFLECTIONS_DELAY, acoustics.reverbReflectionsDelay));
|
AL_CHECK(alEffectf(
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_LATE_REVERB_DELAY, acoustics.reverbLateReflectionsDelay));
|
reverbEffect,
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_DECAY_TIME, std::max<float>(0.1f, acoustics.reverbDecayTime)));
|
AL_REVERB_REFLECTIONS_DELAY,
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_ROOM_ROLLOFF_FACTOR, acoustics.reverbRoomRolloff));
|
glm::clamp(
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_REFLECTIONS_GAIN, glm::pow(acoustics.reverbGain, 2.0f)));
|
acoustics.reverbReflectionsDelay,
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_LATE_REVERB_GAIN, glm::pow(acoustics.reverbGain, 2.0f)));
|
AL_REVERB_MIN_REFLECTIONS_DELAY,
|
||||||
AL_CHECK(alEffectf(reverbEffect, AL_REVERB_DECAY_HFRATIO, 1.0f - acoustics.reverbAbsorption));
|
AL_REVERB_MAX_REFLECTIONS_DELAY
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_LATE_REVERB_DELAY,
|
||||||
|
glm::clamp(
|
||||||
|
acoustics.reverbLateReflectionsDelay,
|
||||||
|
AL_REVERB_MIN_LATE_REVERB_DELAY,
|
||||||
|
AL_REVERB_MAX_LATE_REVERB_DELAY
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_DECAY_TIME,
|
||||||
|
glm::clamp(
|
||||||
|
acoustics.reverbDecayTime,
|
||||||
|
AL_REVERB_MIN_DECAY_TIME,
|
||||||
|
AL_REVERB_MAX_DECAY_TIME
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_ROOM_ROLLOFF_FACTOR,
|
||||||
|
glm::clamp(
|
||||||
|
acoustics.reverbRoomRolloff,
|
||||||
|
AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR,
|
||||||
|
AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_REFLECTIONS_GAIN,
|
||||||
|
glm::clamp(
|
||||||
|
glm::pow(acoustics.reverbGain, 2.0f),
|
||||||
|
AL_REVERB_MIN_REFLECTIONS_GAIN,
|
||||||
|
AL_REVERB_MAX_REFLECTIONS_GAIN
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_LATE_REVERB_GAIN,
|
||||||
|
glm::clamp(
|
||||||
|
glm::pow(acoustics.reverbGain, 2.0f),
|
||||||
|
AL_REVERB_MIN_LATE_REVERB_GAIN,
|
||||||
|
AL_REVERB_MAX_LATE_REVERB_GAIN
|
||||||
|
)
|
||||||
|
));
|
||||||
|
AL_CHECK(alEffectf(
|
||||||
|
reverbEffect,
|
||||||
|
AL_REVERB_DECAY_HFRATIO,
|
||||||
|
glm::clamp(
|
||||||
|
1.0f - acoustics.reverbAbsorption,
|
||||||
|
AL_REVERB_MIN_DECAY_HFRATIO,
|
||||||
|
AL_REVERB_MAX_DECAY_HFRATIO
|
||||||
|
)
|
||||||
|
));
|
||||||
alAuxiliaryEffectSloti(effectSlots[0], AL_EFFECTSLOT_EFFECT, reverbEffect);
|
alAuxiliaryEffectSloti(effectSlots[0], AL_EFFECTSLOT_EFFECT, reverbEffect);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,8 +141,10 @@ void Decorator::updateAcoustics(const Camera& camera) {
|
||||||
averageDistance += distance;
|
averageDistance += distance;
|
||||||
averageAbsorption += material->soundAbsorption;
|
averageAbsorption += material->soundAbsorption;
|
||||||
}
|
}
|
||||||
averageDistance /= hit;
|
if (hit > 0) {
|
||||||
averageAbsorption /= hit;
|
averageDistance /= hit;
|
||||||
|
averageAbsorption /= hit;
|
||||||
|
}
|
||||||
|
|
||||||
float decayTime = 20.0f * (averageDistance / rayLength);
|
float decayTime = 20.0f * (averageDistance / rayLength);
|
||||||
float escapeRatio = static_cast<float>(rays - hit) / static_cast<float>(rays);
|
float escapeRatio = static_cast<float>(rays - hit) / static_cast<float>(rays);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue