mirror of
https://github.com/overte-org/overte.git
synced 2025-04-16 00:41:16 +02:00
rework the FreeVerb effect mix calculations
This commit is contained in:
parent
60b018b8b2
commit
58752d7e2d
1 changed files with 15 additions and 4 deletions
|
@ -234,12 +234,23 @@ int main(int argc, const char* argv[]) {
|
|||
otherAgentFreeVerb = freeVerbIterator->second;
|
||||
}
|
||||
|
||||
const float DISTANCE_REVERB_LOG_REMAINDER = 0.32f;
|
||||
const float WETNESS_DOUBLING_DISTANCE_FACTOR = 2.0f;
|
||||
const float MAX_REVERB_DISTANCE = 160.0f;
|
||||
|
||||
// higher value increases wetness more quickly with distance
|
||||
const float WETNESS_CALC_EXPONENT_BASE = 2.0f;
|
||||
|
||||
const float MAX_EXPONENT = logf(MAX_REVERB_DISTANCE) / logf(WETNESS_DOUBLING_DISTANCE_FACTOR);
|
||||
const int MAX_EXPONENT_INT = floorf(MAX_EXPONENT);
|
||||
float DISTANCE_REVERB_LOG_REMAINDER = fmodf(MAX_EXPONENT, MAX_EXPONENT_INT);
|
||||
|
||||
const float DISTANCE_REVERB_MAX_WETNESS = 1.0f;
|
||||
|
||||
float effectMix = powf(2.0f, (0.5f * logf(distanceSquareToSource)
|
||||
/ logf(2.0f)) - DISTANCE_REVERB_LOG_REMAINDER)
|
||||
* DISTANCE_REVERB_MAX_WETNESS / 64.0f;
|
||||
float effectMix = powf(WETNESS_CALC_EXPONENT_BASE,
|
||||
(0.5f * logf(distanceSquareToSource) / logf(WETNESS_CALC_EXPONENT_BASE))
|
||||
- DISTANCE_REVERB_LOG_REMAINDER);
|
||||
effectMix *= DISTANCE_REVERB_MAX_WETNESS / (powf(WETNESS_DOUBLING_DISTANCE_FACTOR,
|
||||
MAX_EXPONENT_INT));
|
||||
|
||||
otherAgentFreeVerb->setEffectMix(effectMix);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue