Triton Release History Version 2.23 June 7, 2013 Protect against crash when Ocean fails to create. Fix intersection tests when sea level is non zero. Protect against mutex left locked in Ocean::GetIntersection Version 2.22 May 24, 2013 New fft-precision-limit config setting to avoid precision errors in JONSWAP at low wind speeds. Fix Gerstner waves (although they are deprecated...) Make intersection vector length configurable via intersection-vector-length Version 2.21 May 20, 2013 Fix cube map reflections in Ogre sample. Version 2.20 May 17, 2013 Optimize Ocean::GetHeight(). Add parameters for low-resolution queries and for ignoring wake waves. Version 2.19 May 8, 2013 Remove OpenMP entirely from main libraries, to regain compatibility with Visual Studio Express. Build with Visual Studio 2012 Update 2 Version 2.18 April 28, 2013 Separate specular shininess for OpenGL vs. DirectX Improve thread safety Switch to IPP FFT automatically if CUDA/OpenCL/Compute Shaders fail at runtime Add config setting do-height-map-copy to optionally disable system memory copy of height map Add optional hull spray effects in WakeGenerator Fix particle transparency in DX9 Version 2.17 April 25, 2013 Properly initialize mutex object on RedHat / CentOS Support separate wave decay rates for wakes, rotor wash, and impacts. Decay rotor wash waves faster. Discard small waves sooner. Version 2.16 April 17, 2013 Enable OpenMP only in release targets. Prefer CUDA to compute shaders on NVidia Clamp foam to 1.0 Fix spray velocity scale on WakeGenerators Version 2.15 April 11, 2013 Ocean::GetHeight() and Ocean::GetIntersection() now return false if the intersection is over terrain. Fix breaking waves in geocentric / opengl. Fix OpenGL 3.2 geocentric waves. Dampen the normal map as well as wave displacements in shallow water when breaking waves are enabled. Fix prop wash on DX9 patch shader Dissipate prop wash based on distance from wake generator instead of based on associated wave's radius. Enforce minimum prop wash segment length Prevent prop wash segments from disappearing prematurely Make sure everything derives from MemObject Account for prop offset when culling wake waves Expose spray size scale in WakeGenerator Wake LOD improvements Version 2.14 April 6, 2013 No longer use OpenMP in main library on Windows (to gain compatibilty with Visual Studio Express Edition) More horizon line fixes Version 2.13 April 5, 2013 More horizon line fixes Fix wake wave sorting Version 2.12 April 4, 2013 Add spray scaling to Impact constructor Add Ocean::SetDisplacementDampingDistance() to control displacment dampening at runtime Tweak spray effects Fix horizon line position when camera is rolled close to 90 degrees Version 2.11 March 28, 2013 Fix swell wave amplitudes (to be 1/2 wave height) Added swell-multiplier config setting if you need to override that Add new WakeGenerator parameters to position prop wash and optionally disable it Added Ocean::SetDepthOffset() to allow handling of z-fighting at shorelines Sort wake waves first by wake generator, then by distance, to prevent discontinuities in wakes. Add WakeGenerator::SetLODDistance() to remove wake detail with distance, enabling more simultaneous wakes at once. Further wake visual improvements. Add parameters to WakeGenerator for bow wake effects. Version 2.1 March 15, 2013 Add high frequency detail to waves (on PS3.0+ capable cards.) Add new PIERSON_MOSKOWITZ and JONSWAP wave models Added swell simulation from distant storms. See Environment::AddSwell etc. Added Douglas Sea Scale support with Environment::SetDouglasSeaScale (specifies local wind waves and swells separately) Add fetch length to WindFetch objects, and hook it up to the JONSWAP model Updated to AMD APP SDK 2.8 Added "particles-pure-additive-blend" config setting for use with HDR rendering Fix spray particle suppression using height maps in geocentric worlds Fade particles in/out more gradually Gerstner water model is now declared deprecated Height maps are now copied to system memory when Environment::SetHeightMap() is called, to produce accurate height queries close to shore. Make sure you are only calling SetHeightMap() when the texture actually changes significantly to preserve performance. Factor breaking waves into height queries Update to Visual Studio 2012 SP1 Version 2.03 March 7, 2013 Make sure WakeGenerators don't attempt to reference a deleted Ocean Add useAddDllDirectory option in ResourceLoader. Version 2.02 March 4, 2013 Remove all waves from a WakeGenerator when it is deleted Version 2.01 March 1, 2013 Prevent use of height maps outside of the area they explicitly define Fix wake propeller backwash on slow moving ships and ships moving parallel to each other Version 2.0 February 28, 2013 Added Environment::SetHeightMap() - you may now provide a height map to Triton, used for blending the water with terrain and preventing spray from coming up out of the ground near the shore. Added Environment::SetBreakingWavesParameters() - if you provided a height map, breaking waves at shorelines may be enabled Fixed height queries at north and south poles Fixed alignment of height queries with the water surface in geocentric mode Fixed Gerstner model Protect against reading uninitialized height values in the first frame under CUDA Added optional drawWater and drawParticles parameters to Ocean::Draw(), allowing you to draw the water surface and spray particles independently. Change planar-offset setting to 0 to avoid precision issues Make fft-displacement-damping-distance runtime configurable via Environment::SetConfigOption() Always pass full path names to SetDLLDirectory() (ensure CUDA etc. DLL's are found) Flatten water geometry as it becomes transparent in shallow water Regain compatibility with Pixel Shader 2.0 model cards under DX9 Add Ocean::SetPlanarReflectionBlend() to allow run-time adjustment of planar reflection strength. Smoothly fade new wake / rotor wash / impact waves in over the time specified by wake-fade-in-time Fix ray/plane intersection precision for rotor wash etc. Rotor wash visual improvements Don't use point sprites for spray on NVidia / OpenGL (improves spray appearance when close) Improve ship wakes by keeping transverse waves convex Improve accuracy of ship Kelvin wake angle & wavelength Eliminate "cliffs" inside wakes Added Ocean::ComputeReflectionMatrices() to simplify setup for planar reflections Multiple Ocean::UpdateSimulation() calls with the same timestamp will be ignored CUDA now works with Visual Studio 2012 Fix discovery of FFT DLL's under Visual Studio 2012 Made it easier to recompile Triton to strip out DirectX dependencies (define DIRECTX9_FOUND=0 and DIRECTX11_FOUND=0 and remove DX libs) Fix deletion of CUDA resources under OpenGL Only add to the DLL search path instead of replacing the current working directory when possible Blend out the seam in the middle of propeller backwash New propeller wash texture Tuned impact spray appearance Version 1.73 February 6, 2013 Fix error in CMake files Add support for dongle-based licenses Version 1.72 January 30, 2013 Fix bug where wash-spray-generation-period and wash-wake-generation-period were not honored. New Ogre sample code based on a standalone app. Added ability to render particle-based spray when using patch shaders (see new params on Ocean::UnsetPatchShader) Fix wake effects in DX9 patch shader Add Ocean::IsCameraAboveWater() Fix foam fading with distance in DX9 Ensure ocean renders properly when no wind at all has been set Take sea level into account when calling Ocean::GetIntersection() Don't emit wakes and spray from stationary WakeGenerators. Fix handling of DX9 device loss with CUDA Fix positioning of spray in geocentric mode Tweak rotor wash effect to avoid initial wave peak Version 1.71 January 10, 2013 Fix use of multiple Ocean objects in one process with GPU acceleration Improve discovery of CUDA device for DirectX9 Version 1.7 January 5, 2013 Add new RotorWash class for spray + waves from localized wind sources. Add new Impact class for impacts hitting the water, producing spray and waves. Improved accuracy of height queries Added Environment::EnableOpenMP() to allow users to restrict Triton's CPU usage. Automatically push / pop any active shader program in OpenGL 2.x Config setting shader-filename-prefix may be used to prepend a string to the shader filenames, enabling user modifications to our shaders to co-exist with the default ones. Version 1.61 December 28, 2012 Add NO_RENDERER initialization option on Environment, for physics-only servers. Improve wake appearance; added wake-wave-scale config setting. Don't emit debug errors when a config entry isn't found. Version 1.60 December 13, 2012 Further improvements to geocentric precision and planar approximation Version 1.59 December 10, 2012 Added HDR parameter to Environment::Initialize(), which can be used to disable all color clamping Added planar-adjust config setting, which can be used to account for error when switching between ellipsoid and planar earth representations Fix jitter at low altitudes in geocentric mode Properly handle north and south poles in geocentric mode Version 1.58 November 19, 2012 Fix memory leak in OpenCL usage Version 1.57 November 17, 2012 Fix wave directions in shallow water Version 1.56 September 28, 2012 Read lighting and spray config settings each frame to allow runtime modification Limit discontinuities in height queries resulting from local choppiness Version 1.55 September 26, 2012 Increase max allowable grid expansion when close to the surface, and made this configurable via max-allowable-displacement setting. Fix DX9 device resets with patch shaders. Version 1.54 September 15, 2012 Fix DirectX11 patch shader vertex layout Fix use of patch shaders in multi-threaded rendering under Linux Version 1.53 September 14, 2012 Fix CUDA with multi-threaded rendering Version 1.52 September 13, 2012 Fix application of model matrix in patch shaders Add FPS output in OpenGL sample for benchmarking Version 1.51 September 12, 2012 Improved foam and spray calculation Added multi-gpu support for CUDA (see fft-enable-multi-gpu) Sped up CUDA code over 150% on some systems Don't re-upload H0 data to GPU if it didn't change Don't crash on Ocean creation failure under DX9 Version 1.5 August 22, 2012 Added Ocean::SetPatchShader() and Ocean::UnsetPatchShader() methods - with these, you can have Triton shade your own geometry to transform any user-drawn grid into 3D water with reflections, refractions, and foam - instead of rendering an infinite ocean with Ocean::Draw(). Added new samples for rendering user patches. Fixed usage of smoothstep function in HLSL to address aliasing in DX9 Split out physics updates from rendering; see new optional Ocean::UpdateSimulation() method. This can be used to do updates in another pass or thread from rendering. Updated OpenSceneGraph samples to call the new UpdateSimulation() method form its update thread. Added Visual Studio 2012 support (no CUDA support for 2012 from NVidia yet though.) Added C# support (see the new CSharpSample in the Samples folder and refer to the readme.txt there) Automatically add trailing slash to resources path if not given and clean up slashes Fix crash at shutdown in Ogre sample Version 1.42 August 1, 2012 Output message to console or debug log when evaluation SDK time limit is reached. Added Ocean::SetLoopingPeriod to enable animation loops of a specified time Explicitly enable depth writes under OpenGL & DX9 (fixes rendering under Ogre / OpenGL) Prevent crash when normalizing zero vectors (ie, if a direction vector of (0,0,0) were passed in for a WakeGenerator.) Fix sea level when non-zero in test for above water Fix CUDA under x64 builds Improve appearance of propeller wash on tight curves Added new config setting fft-use-sqrt-approximation; set this to "no" to get accurate wave heights at high wind speeds at the cost of some performance. If enable-kelvin-wakes is set to "no", don't factor in wakes in Ocean::GetHeight(). Version 1.41 June 3, 2012 Add support of Visual Studio 2003.NET for OpenGL and DirectX9 / Intel IPP only Now compiles on MacOS (using fftss only) Better detection of OpenGL extensions Updated to AMD APP SDK 2.7 and clAmdFFt 1.8.214 Don't use OpenCL with OpenGL 3.2 core profiles (crashes inside driver on AMD) Version 1.40 May 20, 2012 Fix deletion of config entries Fix simultaneous disabling of wakes and wash config in OpenGL Update mailing list link in installer (http://bit.ly/sundogmail) Zero out particle vertex buffers at initialization in OpenGL Version 1.39 May 4, 2012 Update to CUDA 4.2 and latest APP ML Fix shader compilation errors under OpenGL 3.2 Fix 64-bit builds for CUDA/Windows and OpenCL/Linux Shut down CUDA cleanly Version 1.38 April 29, 2012 Added RandomNumberGenerator interface to allow apps to provide their own (useful for synchronizing channels) CPU usage reduced when spray is active CPU usage reduced when wind conditions change Added fft-lod-bias config setting to combat aliasing / motion artifacts Version 1.37 April 15, 2012 Ensure the ocean extends all the way to the horizon Include CMake files with Windows full installer (in addition to Visual Studio solution files) Version 1.36 April 4, 2012 Fix horizon line underwater Fix computation of wave height Eliminate runtime calls to OpenGL extension tests Work around driver bugs related to auto-mipmap generation Put grid resolution back at 512 Version 1.35 March 30, 2012 Optimize performance when wind conditions change Align projected grid with the horizon line Reduce projected grid default dimensions (thanks to the above change) - gains performance WakeGenerator::Update now takes an explicit direction vector. Trying to guess at it automatically wasn't sufficient. Version 1.34 February 10, 2012 Added visualCorrelation parameter to Ocean::GetHeight() to match heights with visuals in the distance Ensure WakeGenerator::Update() doesn't actually do any drawing, as it could be called from a different thread or context from Ocean::Draw(). Better conservation of wake waves (to reduce anomalies from hitting the max number of wake waves in the shaders) Version 1.33 February 5, 2012 Fix above/below water test Fix dark line at horizon in geocentric mode near surface Fix clipping of ocean when near surface in geocentric mode Fix undefined foam values in Gerstner mode Fix precision issues in DirectX geocentric mode Version 1.32 February 2, 2012 Fix wakes in OSG reflection demo when --geocentric is on Improve foam appearance Fix various precision issues in OpenGL geocentric mode Version 1.31 January 31, 2012 Tuned grid resolution and maximum wake height Added wake-kelvin-wakes config setting to disable 3D ship Kelvin wakes independently from turbulent wakes (see wake-propeller-backwash) Decreased default setting for max wake waves Version 1.3 January 30, 2012 Ship wake improvements: added propeller wash effects, separate spray and wake generation points, and ability to simualte the beam width and ship length. See new WakeGenerator constructor for more details. Enabled flow control in HLSL - big speedups for DX9 and DX11! Split up projected grid into 32K chunks under DirectX9 to support low end systems Improve accuracy of height queries (takes choppiness into account now.) Fix potential buffer overflow in OpenGL particle systems Max number of wake waves visible at once now configurable by renderer, and increased for DX11 and OpenGL Fix orientation of projected grid when camera is inverted Updated to CUDA Toolkit 4.1, AMD APP SDK 2.6, and AMD APPML 1.6 Fix OpenSceneGraph samples so they run with arbitrary working directories and do not require fftss.lib in Windows Fix precision issues in geocentric mode when close to the surface Fix translation of the ocean surface in geocentric mode Fix default ocean slope if unspecified in geocentric mode Version 1.23 January 9, 2012 Fail if DX9 vertex shader model 2.0 is all that's supported. Vertex shader model 3.0 or newer is required. Support combination of DX9 PS 2.0 / VS 3.0 for older hardware Fix jitter on spray particles in geocentric coordinate systems Fix spray and wave orientation if Ocean::SetDepth is not called Version 1.22 January 4, 2012 Enable shallow water translucency for DX9 and DX11 Direct3D9Ex support added CMake works under Windows now, with option to not include DirectX when building. Fix fallback case to IPP if FFT setup fails Version 1.21 December 18, 2011 Added Ocean::SetRefractionColor to allow changing of the ocean color at runtime Fix warnings from Allocator Added Gamebryo Lightspeed 3.2 sample code Fix crash if OpenGL renderer is specified with a DirectX environment Added Visual Studio 2005 support (except for DirectX11) Version 1.2 November 12, 2011 Breaking waves and spray effects - toggle with Ocean::EnableSpray() Ocean::SetDepth now takes a surface normal as well as a depth at the camera position, allowing for sloping shorelines Water is transparent when refracted in shallow water. The underwater visibility simulated, and the values passed into Ocean::SetDepth, will influence this effect. Try the "beach" button in our demo to see it in action. Fix surface normal calculation in intersection tests Fix intersection tests when coordinates are negative Fix intersection tests in OpenCL Make waves change smoothly when wind conditions change Fix SimulateSeaState when using non-standard world units Improved the fit of the projected grid with the visible scene, increasing resolution. Version 1.14 October 27, 2011 Beta Linux support introduced - contact support@sundog-soft.com Fix artifacts when rolling the camera Explicitly declare calling conventions and byte alignment for better project compatibility No longer uses ARB extensions; uses OpenGL 2.0 functions directly. Fix directional light in DX11 Fix crash when using a ResourceLoader with an invalid path Fix scaling of projected grid when corners project to infinity Full source project fixes: uses DXSDK_DIR to locate the DirectX SDK; renames debug library build to Tritond.lib Version 1.13 October 15, 2011 Removes dependency on GLEW entirely. Fix build settings for x64 Version 1.12 October 12, 2011 Use GLEW as a DLL to avoid multiply defined symbol link errors in other projects Include missing HLSL file for DirectX 11 compute shader Version 1.11 September 19, 2011 Made waves more directional with the wind Include diffuse light when refracting into the ocean Added optional depthWrite parameter to Ocean::Draw Added surface normal to Ocean::GetHeight() Link DX11 Effects framework into 64-bit libraries Version 1.1 (revision 348) September 8, 2011 Fixed Beaufort to wind speed calculation Added ship wake effects (see the new WakeGenerator class) Tweaked noise to reduce tiling at altitude New planar reflection support (see Environment::SetPlanarReflectionMap and OpenSceneGraphReflection sample) Added Ocean::GetHeight() method to read back the ocean surface height at any point Negative reflection vectors now handled better Fixed CUDA with Direct3D11 Fixed computation of grid size with non-zero sea levels Disposes of all OpenCL resources at shutdown Fixed application of noise when using custom world units Version 1.01 (revison 280) August 6, 2011 Make shaders compilable with latest Intel GPU drivers Fix x64 support Pre-allocate temporary FFT buffer for OpenCL Updated to AMD APP SDK 2.5 and clAmdFFT 1.4.135 Version 1.0 (revision 274) August 3, 2011 Added Ocean::GetShaderObject to allow apps to pass in their own uniforms to modified Triton shaders (enables integration with custom reflections, shadows, etc.) Version 1.0b1 (revision 272) July 23, 2011 Initial release! Please report any issues or feature requests to support@sundog-soft.com