To update settings for an existing [[RaytracingContext]], you must use the functions listed below.
You can update these settings at any time, but your updates will only apply when the background raytracing threads complete.
When invoking these functions, an `ArgumentException` will be thrown for invalid values, e.g. a negative ray count, or if floats are `NaN`.
```cs
public class RaytracingContext
{
public void UpdateWorldBounds(Vector3F position, Vector3F size);
public void UpdateListener(Vector3F position, float pitch?, float yaw?);
public void UpdateTrailBounceCount(int value);
public void UpdateReverbRayCount(int value);
public void UpdateOcclusionRayCount(int value);
public void UpdatePermeationRayCount(int value);
public void UpdateRefreshRayCount(int value);
public void UpdateMinimumPermeationEnergy(float value);
public void UpdateBlendedReverbPresetAmount(int value);
public void UpdateVoiceReverbRayCount(int value);
public void UpdateVoiceReverbBounceCount(int value);
public void UpdateVoiceReverbRefreshRayCount(int value);
public void UpdateMaxVoices(int value);
public void UpdateVoicesOutsideTheWorldAreMuffled(bool value);
public void UpdatePrioritiseNewVoices(bool value);
public void UpdateMaxNewVoiceBatchSize(int value);
public void UpdateWorkItemCount(int value);
public void UpdateMaximumConcurrencyLevel(int value);
public void UpdateMetersPerUnit(float value);
public void UpdateSpeedOfSound(float value);
public void UpdateReferenceFrequencyLF(float value);
public void UpdateReferenceFrequencyHF(float value);
public void UpdateAirAbsorption(AirAbsorptionSettings value);
public void UpdateCustomEAXFormulas(CustomEAXFormulas formulas);
public void UpdateVoiceEnergyFormula(Func<int, int, int, float, float, float> value);
public MaterialProperties GetMaterial(MaterialType type);
}
```
## Non-Changeable Settings
`renderingEnabled` cannot be changed at runtime
New materials cannot be created at runtime.
## Updating Materials
See [[Materials#Runtime Customisation]] for how to update materials at runtime.