To reduce the performance impact on your application, all the heavy lifting is moved onto background threads. The main thread does do a bit of work when `context.Update()` is invoked, but you shouldn't notice any stutters or FPS drops. The 'heavy' work that runs on background threads includes: - **Preparation** - calculating a bounding volume hierarchy (BVH) for faster raytracing, resizing/allocating memory, applying settings changes - **Raytracing** - building trails, casting occlusion/reverb/permeation/visualisation rays (see [[raytraced-audio/v110/Advanced/Trail-Based Raytracing|Trail-Based Raytracing]]) - **Analysis** - calculating reverb + occlusion properties The flow is: - 1 background thread runs the Preparation task - Then, N threads run all Raytracing tasks - Then 1 background thread runs the Analysis task