This test is entirely dependent on user settings and would fail if hrtfs
were disabled on the testing machines OpenAL installation.
Signed-off-by: Squareys <Squareys@googlemail.com>
Since `ALC_HRTF_SOFT` is a ALC extension, we need to use `alcGetIntegerv()`
instead of `alGetIntegerv()` which requires access to the OpenAL device
stored in `Audio::Context` and therefore the aforementioned methods have
been moved there.
Signed-off-by: Squareys <Squareys@googlemail.com>
If and only if the quaternions to interpolate are equal, the angle between
them is 0.0 and we therefore cannot safely divide by the sin of that angle.
Credits to @wivlaro for finding this one.
Fixes#117.
Signed-off-by: Squareys <Squareys@googlemail.com>
Polished some minor stuff in the code, reordered Renderer getter-only
functions to be at the top, fixed \al_extension and \alc_extension
Doxygen commands to link to proper place and some other minor
Doxygen-related stuff.
Add `HrtfStatus` and queries in `Audio::Renderer`, `ALC::SOFT::HRTF` and
`@requires_alc_extension` notes for relevant methods in `Configuration`.
Signed-off-by: Squareys <Squareys@googlemail.com>
`ALC_SOFTX_HRTF` is the "in dev" hrtf extension present in OpenAL Soft
version 1.16.0, whereas `ALC_SOFT_HRTF` is the finished version of the Hrtf
extension, probably released with OpenAL Soft version 1.17.0.
Signed-off-by: Squareys <Squareys@googlemail.com>
Left todo: once there is a common OpenAL extension registry again,
use that for the al_extension and alc_extension aliases/expansions.
Signed-off-by: Squareys <Squareys@googlemail.com>
Analog to Magnum::Extensions, but without Version, since OpenAL has only
one Version which is in use (OpenAL 1.1).
Signed-off-by: Squareys <Squareys@googlemail.com>
AMD is behaving the same as NVidia (at least on Windows) -- when
creating core context with minimum specified version set to 3.1, it
forces that version instead of going with the largest available version,
which, again, is pretty useless behavior.
Enabling that on both Linux and Windows, the behavior is confirmed on
Windows but I bet it's doing the same on Linux.
GL 3.2 has texelFetch() and layout(pixel_center_integer), which means
that we integer coordinates with no precision loss when addressing
individual pixels in the source texture. In the versions before we have
to craft floating-point coordinates for texture() to grab the value of
wanted pixel with no jumping around or interpolation.
This change improves the behavior *a bit*, but not fully. I'm postponing
this to the point when I have an unit test that compares the output with
ground truth.