32#include <unordered_map>
37 template<CFloatOrSIMD T>
40 if constexpr (std::same_as<T, simd>)
42 const T reflectance =
max(T(1e-6f), T(1.0f) - alpha);
47 const T reflectance = std::max(T(1e-6f), T(1.0f) - alpha);
55 using List = std::unordered_map<uint32, AcousticMaterial>;
106 os << v.
Name <<
": ";
Definition AcousticMaterial.h:36
const FreqBandCenters cBandCenters
Definition FrequencyBands.h:89
JPL_INLINE constexpr T IntencityTodB(const T &intencityFactor) noexcept
Definition DecibelsAndGain.h:84
std::uint32_t uint32
Definition Core.h:311
simd AbsorptionCoeffs
Definition FrequencyBands.h:29
simd FreqBandCenters
Definition FrequencyBands.h:30
JPL_INLINE simd max(const simd &a, const simd &b) noexcept
Element-wise max.
Definition SIMD.h:1799
std::ostream & operator<<(std::ostream &os, const AcousticMaterial &v)
Definition AcousticMaterial.h:104
JPL_INLINE T ReflectionLoss_dB(const T &alpha)
Definition AcousticMaterial.h:38
Acoustical properties of a material.
Definition AcousticMaterial.h:54
static std::pair< uint32, AcousticMaterial > MakeMaterial(std::string_view name, const AbsorptionCoeffs &coeffs)
Make material without adding it to global static list.
static const AcousticMaterial & GetDefault()
AbsorptionCoeffs AmplitudeFactors
Definition AcousticMaterial.h:80
uint32 ID
Definition AcousticMaterial.h:65
AbsorptionCoeffs Absorption_dB
Definition AcousticMaterial.h:79
static const FreqBandCenters cBandCenters
Definition AcousticMaterial.h:61
float AbsorptionAverage_dB
Definition AcousticMaterial.h:70
static const AcousticMaterial * Get(std::string_view materialName)
static void SetMaterial(std::string_view name, const AbsorptionCoeffs &coeffs)
static const AcousticMaterial * Get(uint32 materialID)
JPL_INLINE void Accumulate(AbsorptionCoeffs &inOutCoefMultiplier) const
Definition AcousticMaterial.h:87
std::string_view Name
Definition AcousticMaterial.h:64
AbsorptionCoeffs Coeffs
Definition AcousticMaterial.h:78
static const List & GetListOfMaterials()
Definition AcousticMaterial.h:85
float AbsorptionAverage
Definition AcousticMaterial.h:73
float AbsorptionAverageOneMinus
Definition AcousticMaterial.h:76
std::unordered_map< uint32, AcousticMaterial > List
Definition AcousticMaterial.h:55
Minimal 4-wide 32-bit float vector implementation for SIMD.
Definition SIMD.h:60