We just released Triton 3.81, and it contains “experimental” support for the features we plan to release officially in Triton 4.0. If you want to live on the edge – download it and give the following things a try:

  • OpenGL 4.5 support. If your application supports an OpenGL 4.5 context, try our new Triton::OPENGL_4_5 renderer when initializing your Triton::Environment. This allows Triton to take full advantage of OpenGL 4.5. This work also positions us for integration into Vulkan applications, using an OpenGL context within Vulkan. Triton 4 will include a sample application illustrating integration of Triton into an OpenGL 4.5 application using command lists. We’re following the guidance in NVidia’s “OpenGL like Vulkan” article and making Triton adhere to it as much as possible.
  • Bindless graphics support. When using new the Triton::OPENGL_4_5 renderer, some new configuration options for bindless graphics become available to you: use-gl-bindless-textures, use-gl-bindless-uniform-buffer-objects, and use-gl-bindless-vertex-buffers. Together, these options expose a fully bindless path for Triton to offer maximum performance under OpenGL 4.5. Please read the comments surrounding these settings inside the resources/Triton.config file for more details on their usage.
  • Better ship wakes. The prop wash and spray effects associated with ship wakes have been improved, and a new “hull wake” feature improves the foam surrounding ship “Kelvin wakes” that trail behind. These effects have been ported across OpenGL and DirectX. Have a look at Triton::WakeGeneratorParameters for some options that weren’t there before. You’ll see that we’ve moved the bow spray into a vector of spray definitions, allowing for more than one bow spray emitter if you wish. The screenshot above gives you an idea of what to expect. Thanks to SimBlocks for their work in developing these new effects.

Be aware that several change have been made to the function signatures in our OpenGL user shaders in this release. If you have user shaders in your application to extend Triton’s capabilities, please refer to the release notes for details.

We’ve also been slowly rolling out better thread safety in Triton since version 3.78 across both OpenGL and DirectX. When drawing multiple views concurrently, you’ll want to use the new Triton::Ocean::DrawConcurrent() method instead of Draw(), and call Triton::Ocean::PostDrawConcurrent() after all views have been drawn to clean things up. And use the new Triton::Camera class so you can pass in the correct view and projection matrices instead of relying on Environment::SetCameraMatrix and Environment::SetProjectionMatrix. We’re still working on the last few issues with fully thread-safe, concurrent rendering under OpenGL.

It’s a lot of changes, and we did keep a copy of Triton 3.80 on our servers just in case we need to roll back. Our testing is extensive and everything seems to work, but do let us know if you run into any trouble.