Rework HRTF coefficient fading
commit96aaab93662be289d3b2c5312ae50502afa8d221
authorChris Robinson <chris.kcat@gmail.com>
Sun, 12 Mar 2017 02:04:06 +0000 (11 18:04 -0800)
committerChris Robinson <chris.kcat@gmail.com>
Sun, 12 Mar 2017 02:04:06 +0000 (11 18:04 -0800)
treec270633e689c7a64edaea8a6c15305197b435ced
parentfeffe1e81a155ded0bcdb519a1a126fd8e908baa
Rework HRTF coefficient fading

This improves fading between HRIRs as sources pan around. In particular, it
improves the issue with individual coefficients having various rounding errors
in the stepping values, as well as issues with interpolating delay values.

It does this by doing two mixing passes for each source. First using the last
coefficients that fade to silence, and then again using the new coefficients
that fade from silence. When added together, it creates a linear fade from one
to the other. Additionally, the gain is applied separately so the individual
coefficients don't step with rounding errors. Although this does increase CPU
cost since it's doing two mixes per source, each mix is a bit cheaper now since
the stepping is simplified to a single gain value, and the overall quality is
improved.
Alc/ALu.c
Alc/hrtf.c
Alc/hrtf.h
Alc/mixer.c
Alc/mixer_c.c
Alc/mixer_defs.h
Alc/mixer_inc.c
Alc/mixer_neon.c
Alc/mixer_sse.c
OpenAL32/Include/alMain.h
OpenAL32/Include/alu.h