47 template<
class Traits = VBAPStandartTraits>
55 template<
class Traits = VBAPStandartTraits>
63 template<
class Traits>
75 &Traits::GetChannelVector,
76 &Traits::GetChannelAngle
111 uint32 mNumVirtualSourcesPerChannel;
124 return "Channel map is invalid.";
128 return "Channel map has top channels, cannob be handles by 2D panner.";
131 return "Trying to initialize with single target channel, panning is not possible.";
146 template<
class Traits>
183 mPhiTerm = JPL_TWO_PI / (mNumVirtualSourcesPerChannel *
numChannels);
187 mOffsetTerm =
numChannels > 1 ? mPhiTerm * mNumVirtualSourcesPerChannel * 0.5f : 0.0f;
192 template<
class Traits>
219 const simd
rampFirst = simd(0.5f, 1.5f, 2.5f, 3.5f);
246 template<
class Traits>
247 inline void Panning2D<Traits>::SourceLayout::GenerateSpreadCap(std::span<Vec3Type>
outBuffer,
float spreadNormalized)
const
#define JPL_ASSERT(inExpression,...)
Main assert macro, usage: JPL_ASSERT(condition, message) or JPL_ASSERT(condition)
Definition ErrorReporting.h:76
#define JPL_ENSURE(inExpression,...)
Define ENSURE.
Definition ErrorReporting.h:90
#define JPL_ERROR_TAG(tag, message)
Definition ErrorReporting.h:124
Definition ChannelMap.h:150
Look-up table containing channel gains for each direction.
Definition VBAPLUT2D.h:56
Definition VBAPLUT2D.h:227
Definition VBAPanning2D.h:65
typename Base::Vec3Type Vec3Type
Definition VBAPanning2D.h:68
static std::optional< const char * > IsValidTargetChannelMap(ChannelMap channelMap)
Definition VBAPanning2D.h:121
Definition PannerBase.h:227
typename Traits::Vec3Type Vec3Type
Aliases to avoid typing wordy templates.
Definition PannerBase.h:230
JPL_INLINE constexpr T FMA(T a, T b, T c) noexcept
Inlined fuse multiply-add. Compiler in some circumstances is more eager to optimize this than std::fm...
Definition Math.h:186
JPL_INLINE std::pair< T, T > SinCos(T value) noexcept
Definition Math.h:164
Forward declaration.
Definition DummySpeakers.h:31
Definition AcousticMaterial.h:36
JPL_INLINE constexpr auto GetNumSIMDOps(std::unsigned_integral auto count) noexcept
Get number of SIMD operations that can fit into the count
Definition SIMDMath.h:51
JPL_INLINE auto GetX(const Vec3Type &v) noexcept
Definition Vec3Traits.h:35
std::uint32_t uint32
Definition Core.h:311
JPL_INLINE std::optional< const char * > IsValidSourceChannelMap(ChannelMap channelMap)
Definition PannerBase.h:193
constexpr T RoundUpBy4(T n) noexcept
Definition Bits.h:52
JPL_INLINE constexpr auto GetDiv2Tail(std::unsigned_integral auto count) noexcept
Definition SIMDMath.h:81
Vec3BufferView< simd > Vec3SIMDBufferView
View into a Vec3-like SoA buffer, holding separate arrays of Vec3 components X, Y,...
Definition Vec3Buffer.h:56
JPL_INLINE void SetX(Vec3Type &v, Vec3FloatType< Vec3Type > value) noexcept
Definition Vec3Traits.h:39
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813
JPL_INLINE constexpr auto FloorToDiv2(std::unsigned_integral auto count) noexcept
Floor count to divisible by 2.
Definition SIMDMath.h:75
Definition ChannelMap.h:268
Implementation of the source layout for 2D panning.
Definition VBAPanning2D.h:82
static constexpr size_t cMaxNumVirtualSources
Definition VBAPanning2D.h:85
JPL_INLINE float GetMinDistanceBetweenSamples() const noexcept
Definition VBAPanning2D.h:94
JPL_INLINE size_t GetNumVirtualSources() const noexcept
Definition VBAPanning2D.h:88
static JPL_INLINE constexpr size_t GetMaxNumVirtualSources() noexcept
Definition VBAPanning2D.h:89
typename Base::VBAPLayoutBase LayoutBase
Definition VBAPanning2D.h:83
Definition PannerBase.h:281
Definition Vec3Buffer.h:89
static JPL_INLINE simd zero() noexcept
Vector with all zeros.
Definition SIMD.h:541
static constexpr std::size_t size() noexcept
Get number of element of the vector.
Definition SIMD.h:97