### 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