diff options
author | Chris Robinson <chris.kcat@gmail.com> | 2021-12-11 21:42:34 -0800 |
---|---|---|
committer | Chris Robinson <chris.kcat@gmail.com> | 2021-12-11 21:42:34 -0800 |
commit | 5e3fcb3a934844f1d70aa23a8a871a6915565ed2 (patch) | |
tree | 34957fb6f4f8da7b522f131f781844e21a4c8f33 /alc/panning.cpp | |
parent | 01dd34f305b9ad2c8e6bf0642cd976f9788fdf3a (diff) |
Avoid initializing the NFC filter for every voice channel
It can be initialized once with the device's speaker distance since it won't
change in between resets, then copied into the voice where it can be adjusted
as needed.
Diffstat (limited to 'alc/panning.cpp')
-rw-r--r-- | alc/panning.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/alc/panning.cpp b/alc/panning.cpp index d686de1d..eefcc867 100644 --- a/alc/panning.cpp +++ b/alc/panning.cpp @@ -218,6 +218,10 @@ void InitNearFieldCtrl(ALCdevice *device, float ctrl_dist, uint order, bool is3d device->AvgSpeakerDist = clampf(ctrl_dist, 0.1f, 10.0f); TRACE("Using near-field reference distance: %.2f meters\n", device->AvgSpeakerDist); + const float w1{SpeedOfSoundMetersPerSec / + (device->AvgSpeakerDist * static_cast<float>(device->Frequency))}; + device->mNFCtrlFilter.init(w1); + auto iter = std::copy_n(is3d ? chans_per_order3d : chans_per_order2d, order+1u, std::begin(device->NumChannelsPerOrder)); std::fill(iter, std::end(device->NumChannelsPerOrder), 0u); |