### Version 1.0.6 **Fixes:** - More robust world bounds checks - rays should never leave the world bounds **Changes:** - Removed some debug logging - Logs are now prefixed with `[vaudio]` **Optimisations:** - Raytracing should be slightly faster as the world bounds is no longer included in the BVH ### Version 1.0.5 **Fixes:** - EAX `DecayTime` no longer flickers with sparse echograms - Fixed a `NullReferenceException` when creating a `RaytracingContext` with both `occlusionRayCount` and `permeationRayCount` set to 0 - Fixed an edge case where rays could leave the world when colliding with a primitive exactly on the world edge - Rays will now bounce correctly within a concave `MeshPrimitive` - Fixed an edge case where voices wouldn't render in the debug window - EAX gainLF and gainHF are now calculated correctly when `occlusionRayCount` or `permeationRayCount` are higher than `reverbRayCount` - Shader errors use the custom logging callback rather than `Console.WriteLine` **Changes:** - Removed all `outsideEAX` functionality - use `groupedEAX` instread **Additions:** - Added a new `supportsPemeation` field on `MeshPrimitive`, for meshes that are watertight. Currently only supports permeation between the first 2 intersections (complex concave shapes are not supported yet) - New `EAXReverbResults.ALEffectSlotGain` parameter that is automatically calculated for grouped EAX effects for voices - New `EAXReverbResults.BoundsMin` and `EAXReverbResults.BoundsMax` properties for the min and max 3D bounds of the reverb space ### Version 1.0.4 **Changes:** - `Voice.filter` is now initially `null`, to prevent accidentally accessing it before raytracing completes - **Additions:** - New `RaytracingContext.OnReverbUpdated` callback, which fires after reverb is updated and before `Voice.OnRaytracingComplete` fires. This gives you a chance to update your EAX reverb effects, before `Voice.OnRaytracingComplete` tries to access them. ### Version 1.0.3 **Fixes:** - Fixed a crash when creating a `RaytracingContext` with `RaytracingContextSettings.airAbsorption` set to null - Fixed an edge case where occlusion energy did not reset to 0 when no occlusion rays could reach a voice **Changes:** - Renamed `context.ListenerEAXReverb` to `context.ListenerEAX` - Renamed `context.OutsideEAXReverb` to `context.OutsideEAX` - Renamed `context.BlendedEAXReverb` to `context.GroupedEAX` - Renamed `settings.blendedReverbPresetAmount` to `settings.maximumGroupedEAXCount` - Renamed `voice.blendedEAXIndex` to `voice.groupedEAXIndex` - Renamed `ProcessedReverbResults.ReturningPercent` to `ProcessedReverbResults.ReturnedPercent` - Removed Sabine / Eyring / Theoretical RT60 properties from `ProcessedReverbResults`. Use `MeasuredDecayTimeLF` and `MeasuredDecayTimeHF` instead **Additions:** - Added XML documentation to `RaytracingContextSettings` - Added XML documentation to `RaytracingContext` - Added XML documentation to all primitives - Added XML documentation to `MaterialProperties` - Added XML documentation to `RawReverbResults` - **Optimisations:** - Line-of-sight rays for reverb are no longer cast back to the listener after the ray escapes outside (hits the world bounds) ### Version 1.0.2 **Fixes:** - Rays now properly lose energy when bouncing off primitives when `reverbRayCount` is 0 - Fixed voice energy calculation when occlusion and permeation rays are different - Rays will no longer incorrectly travel through the primitive they just bounced off, when their next hit was trimmed - Rays will no longer have LOS blocked by the primitive they just bounced off - More accurate reflection positions when rays bounce off primitives - The rendering window now shows the correct ray counts **Changes:** - Warnings are now logged when creating voices when `occlusionRayCount` and `permeationRayCount` are zero (as no rays will be cast against voices) - Renamed `RaytracingContext.trailColour` to `RaytracingContext.trailColor` - Renamed `RaytracingContext.reverbColour` to `RaytracingContext.reverbColor` - Renamed `MaterialSettings.colours` to `MaterialSettings.colors` - Occlusion rays are no longer fired directly from the listener to each voice (only on each bounce) **Optimisations:** - Slightly faster bounding box intersection tests - Slightly less memory usage - Slightly faster primitive updates - Slightly less CPU usage on the main thread - Removed a decent amount of unused code ### Version 1.0.1 **Fixes:** - Fixed air absorption - it was not applied at all - `RaytracingContext` can now be initialised with 0 `reverbRayCount` - Occlusion now works correctly when `reverbRayCount` is 0 **Changes:** - Air absorption now uses Celsius instead of Farenheit - Occlusion energy is now accumulated even after rays bounce off the edge of the map. Might make this a setting