Realisitic water is hard when performance matters. The Triton Ocean SDK™ saves you man-years of engineering effort to create 3D water and oceans realistic enough for maritime training purposes, or for games looking for AAA-quality oceans. For C++ and C# developers using OpenGL, DirectX, and many popular engines.
3D Oceans with Top Performance
Triton adapts to the system you’re on, taking advantage of any parallel computing abilities it can find. It will make use of general-purpose GPU (GPGPU) technologies to accelerate the simulation of thousands of waves at once, hooking into CUDA, OpenCL, or DirectX11 Compute Shaders (DirectCompute) capabilities exposed by your system’s drivers. Where possible, the simulation of 3D ocean waves is done entirely on the GPU, from the fast-Fourier transforms (FFTs) that simulate the waves all the way to generating and shading the ocean’s mesh. On systems that don’t expose supported GPGPU capabilities, we fall back to using Intel’s Integrated Performance Primitives library and OpenMP to take advantage of multi-core and parallel CPU’s on your system. The result is thousands of waves being simulated at once, at hundreds of frames per second on modern hardware.
Serious Simulation Features
Unlike other water rendering technologies, Triton is fully compatible with round-Earth, geocentric coordinate systems. Whether you’re using an ellipsoidal WGS84, spherical, or flat coordinate system, Triton will render infinitely large bodies of water that will match up with the rest of your Earth model, viewable from any altitude without loss of performance. Triton may also be used with smaller bodies of water, by using it to shade your own geometry patches to render Triton’s water exactly where you need it.
Not just eye candy, Triton can provide accurate visuals to match a set of given environmental conditions. A collection of wind fetches may be passed into Triton, allowing it to produce wave heights and motion consistent with any wind speed and direction. Alternately, Triton will take a given Beaufort scale number or Douglas Sea State, and automatically produce ocean visuals to match it.
Triton implements the full JONSWAP and Pierson-Moskowitz wave spectral models, and allows for independent control of local wind waves and swells from distant storms. The effect of fetch lengths may also be simulated.
Triton also offers correlation features, allowing you to query the ocean surface at any location to retrieve the height of the waves at that point. This makes adding floating objects to your scene easy.
Ship Wakes and Spray Effects
Simulating ship Kelvin wakes is easy with Triton; just create a WakeGenerator object for all of the ships in your simulation, and update their positions and velocities each frame. Wakes are simulated almost entirely on the GPU for maximum performance, and maintain physically realistic wake angles. Triton’s wake simulation isn’t limited to ships on a straight path at a constant velocity; whether your ships are accelerating, decelerating, or moving on arbitrary curved paths, Triton will generate a wake to match your ships’ motion automatically. The height of the wake waves will increase with the ship’s speed.
Triton will also generate optional particle-based spray effects at the head of the wake for you, which increase in height and velocity with the velocity of the ship. As with all waves in Triton, wakes will generate foam effects on their steeper parts – and they will be taken into account when you query the height of the ocean at a given point.
Triton also simulates rotor wash and projectile impacts on the water surface, which produce 3D waves, spray, and foam effects. Rotor wash takes the rotor diameter, position, and orientation into account when generating realistic rotor downwash effects. Projectiles model the energy imparted for a given mass and velocity at impact to produce just the right splash, whether it’s a bullet or a torpedo hitting the water surface.
Breaking Waves and Terrain Integration
Triton generates highly optimized particle spray effects at the crests of breaking waves, lending additional realism to your ocean scenes. As the choppiness and height of your simulates waves increase, so does the wind-blown spray and foam. These effects are directly driven from the underlying Fast-Fourier Transforms of tens of thousands of waves giving them a basis in physical accuracy.
The depth and slope of the sea floor may also be specified explicitly or through an application-generated height map, which is used to both adjust the shapes of the waves and the transparency of the water. In shallow water, Triton allows your seafloor surface to show through in areas of refraction, leading to realistic water colors and behavior near shorelines or in shallow bodies of water. High-wavelength waves slow, rise, and break as they approach the coastline.
Using Triton in scenes that contain land and other objects is easy; you may render Triton’s constant-time infinite oceans and rely on the depth and/or stencil buffer to carve out the other objects in your scene, use a height map to restrict Triton’s area, or use Triton’s methods for shading user-drawn geometry to only shade the geometry in your scene that’s tagged as being water.
Using Triton won’t tie you to a single 3D engine; it integrates easily with any engine built on top of OpenGL 2.0, OpenGL 3, OpenGL 4, DirectX9, or DirectX11. We provide integration examples for the popular OpenSceneGraph, Gamebryo, XNA Game Studio, and Ogre 3D engines as well, and users have integrated Triton with NVidia’s SceniX engine without trouble. Pre-built libraries for 32 or 64-bit projects with Visual Studio 2005, 2008, 2010, and 2012 are provided with the SDK, and a Linux package and MacOS package are also available. Developing with Unity Pro, targeting the PC? We’ve got Triton Oceans for Unity Pro just for you.
Like our SilverLining Sky, 3D Cloud, and Weather SDK, Triton will integrate into your game, simulation, or training application with just a few lines of code. Just initialize a few objects, update Triton with your scene’s camera and lighting properties, and draw our Ocean object each frame. Triton also offers hooks into your own environment cube maps and planar reflection maps for more accurate water reflections, and exposes its underlying shader objects and source to the application so you may customize them as needed. Hooks into custom memory managers and resource managers are also there for you if you need them. You’ll find extensive documentation with the SDK with a detailed programmer’s guide and API reference, as well as sample code for OpenGL, DirectX9 and 11, C#, XNA, OpenSceneGraph, Gamebryo, and Ogre.
Triton doesn’t look good from just a small set of viewpoints – any altitude may be visualized on a truly infinite ocean without impacting performance or visual quality. We use a projected grid technique to ensure geometry is used optimally, with every polygon using a fixed amount of screen space regardless of the camera position or angle – it’s nearly a perfect level of detail (LOD) scheme. Tiling artifacts that plague other FFT-patch-based techniques are mitigated with the application of Perlin noise as distance from the camera increases. When you’re up close to the water, 3D waves complete with foam effects are in front of you.
Triton also supports above-water and below-water visibility effects, allowing you to match the rendering of the objects in your scene with the visibility of Triton’s water surface.
Unlike open source alternatives, you’ll always have access to responsive technical support direct from the authors. An email to email@example.com is all it takes. Three months of complimentary email support are included with a license purchase, with additional support blocks available for purchase.
Created with Compare Ninja