Threading Architecture
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 Trail-Based Raytracing)
- Analysis - calculating reverb and 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