We rolled out support for multi-threaded rendering in Triton 4.0; the idea was to only call Triton::UpdateSimulation() once per frame, while using the new Triton::DrawConcurrent() function to draw multiple views at once using that shared ocean state. Read the details here.

However, we’ve since found some edge cases where ship wake effects don’t work properly with this strategy. This is because wakes need to be culled based on the current view, and so the set of visible wakes may differ between views.

So, we’ve modified our guidance on how to draw multiple views in Triton accordingly. The main change is that in addition to calling UpdateSimulation() for your “main” camera, you should also call it for your individual cameras prior to calling DrawConcurrent. In Triton 4.05, it’s smart enough to not recompute the expensive FFT calculations for the waves when you call UpdateSimulation() more than once for the same timestamp, but it will recalculate the set of visible wake effects, which is what we want.

We’ve also modified Triton’s documentation and samples accordingly, to avoid any future confusion. Longer term, we hope to make those additional calls to UpdateSimulation() unnecessary – but for now, this should get things working properly for everyone again.