SilverLining (tm) Release Notes

Version 2.37
- Fix CMakeLists.txt for OpenSceneGraph Example to be Linux-friendly

Version 2.36 March 22 2012
- New backdrop / impostor support - enables very large cloud areas. See new backdrop config settings.
- Culling at the cloud layer level added
- Fix crash when SILVERLINING_NO_VBO environment variable is set
- Don't load subdirectories under Linux when scanning cloud files
- Substantial performance improvements relative to 2.35

Version 2.35 March 13 2012
- Added CloudLayer::SetCloudAnimationEffects() method, controlling growth and convection of clouds at runtime
- Properly handle haze when rendering stars
- Reduce framerate hiccups when the clouds are moving
- Ensure selection of cumulonimbus cloud models are consistent across channels
- Remove all instances of calling rand() directly instead of RandomNumberGenerator
- Process lightning effects even when offscreen, to ensure synchronization across channels
- Fix warning messages in OpenGL 3.2 debug
- Initial release of C# support - see the C# sample which includes a native DLL and C# wrapper, together with
  an example C# application.

Version 2.34 February 26 2012
- Cumulus cloud layers about 10% faster; reduced CPU load
- Added config settings rain-use-depth-buffer, snow-use-depth-buffer, sleet-use-depth-buffer. If your near clip
  plane is close enough to the camera, enable these to enable depth tests against your scene with precipitation
  particles.
- Added wet-snow-velocity and dry-snow-velocity config settings, allowing you to adjust how fast snow particles
  fall.
- Protect against calls to the random number generator for ranges where start > end.
- Bug fixes in stratocumulus clouds, especially when serializing / deserializing

Version 2.33 January 13 2012
- Check for inability to get a graphics context, and return an error from Atmosphere::Initialize() in this case.

Version 2.32 December 28 2011
- Fix crash if initialized outside of a valid GL context
- Change depth function to less than or equal in OpenGL
- Preserve cloud altitudes on infinite cumulus cloud layers in geocentric mode when location changes

Version 2.31 December 10 2011
- Fix culling errors on cumulus clouds, especially when wind-sheared.
- Reverts change to not do occlusion tests when lens flare disabled.

Version 2.30 November 25 2011
- Substantial visual and performance improvements to GPU ray-casted stratocumulus clouds
- Atmosphere::EnableLensFlare will now prevent occlusion tests when called with false. This
  can be used for offscreen render passes and to improve performance in general.
- Explicitly declares byte packing and calling conventions in public API's to prevent
  incompatible project settings

Version 2.21 September 12 2011
- If you're exactly on the edge of a stratus layer, consider yourself inside it WRT fog
- Stratus, cirrus, and cirrocumulus clouds now adjust their orientation with the camera's in geocentric systems,
  instead of baking the orientation in at initialization time.
- Fix OpenGL 3.2 warning when rendering stars
- Updates light and fog internal colors immediately when Atmosphere::UpdateEphemeris is called
- Stratus clouds now take directional light into account as well as ambient
- Cirrus clouds use direction of diffuse light
- Increased voxel size for cumulus congestus to 300; improves performance quite a bit and still looks good.
- Make atmosphere from space shaders compatible with Intel HD graphics

Version 2.20 September 1 2011
- Modify SceniX 7.0 sample to sort clouds into the transparency bucket
- Include PDB files for VC10 to avoid linker warnings when building debug projects
- Fix DX11 warning when running on DX10 class hardware

Version 2.19 August 5 2011
- Added SceniX 7.0 sample
- Fix Intel GPU compatibility with latest drivers

Version 2.18 July 21 2011
- Updated OpenSceneGraph samples to work with OSG 3.0 and to fix computation of clip planes
  when the atmosphere from space is enabled.

Version 2.17 July 17 2011
- Don't create offscreen render targets when quick and dirty lighting is on

Version 2.16 July 7 2011
- Fixed include path in release target of Ogre 1.7 sample project
- Removed stray deprecated calls in OpenGL 3.2 renderer
- No longer require non-pure devices and lockable backbuffers in DX9
- Now compatible with Direct3DDevice9Ex devices
- Fix atmosphere from space rendering on OpenGL 3.2

Version 2.15 May 1 2011
- Updated Ogre sample code to work with Ogre 1.7 and leaner device reset handling

Version 2.14 April 23 2011
- Eliminate driver warnings when running in DX11 debug mode
- Don't display the license warning dialog box more than once

Version 2.13 April 9 2011
- Added Atmosphere::D3D9DeviceLost and Atmosphere::D3D9DeviceReset methods. No longer necessary
  to serialize, destroy, and recreate the Atmosphere in response to device resets now; call
  these instead.
- Visual Studio 2010 libraries built against Service Pack 1

Version 2.12 March 12 2011
- Renamed Atmosphere::BeginFrame to Atmosphere::DrawSky
- Renamed Atmosphere::EndFrame to Atmosphere::DrawObjects
- Fix bug with stratus clouds when small custom world units are set
- Added parameter to Atmosphere::DrawSky to control clearing of depth buffer
  (this allows you to call it at the end of your scene to reduce fill rate)
- Changed default setting of ground-albedo to make horizon less pink
- Added optional enableDepthTest parameter to Atmosphere::DrawObjects for use in
  situations where you don't have a meaningful depth buffer
- Fix bug with default skybox size if custom world units are set
- Protect against leaky state in DX11 and DX10
- Sped up cloud layer seeding performance
- Fixed issue with re-created Atmosphere leading to bad extensions pointer in OpenGL
- Fix precipitation with custom world units
- Fog cirrus / cirrocumulus clouds properly in precipitation
- Fix stratocumulus with custom world units
- Custom world units now serialized with the Atmosphere class
- Fix issue where changing from wet to dry snow at runtime (or vice versa) didn't 
  get picked up

Version 2.11 January 30 2011
- Fix error where LocalTime's hour gets decremented if DST is on and AddSeconds is called
- Fix orientation of cumulus clouds when basis vectors change
- Fix handling of resource loader and random number generator when recreating atmosphere
- Update to June 2010 DirectX SDK
- RandomNumberGenerators passed into Atmosphere are no longer static, and are specific to
  the Atmosphere object in question.

Version 2.1 December 31 2010
- Fixed memory leaks at shutdown from stratocumulus clouds and configuration
- Improved sorting code for cloud layers
- Tightened up bounding volumes on cumulus clouds
- Individual component clouds of stratocumulus layers are now available via 
  StratocumulusCloudLayer::GetClouds() (although rendering is still done at 
  the cloud layer level)
- Fixed cloud dimensions exposed via Cloud::GetSize() on non-cumulus cloud types
- Incremented cloud layer file format version; be sure to re-save your cloud layers
  if updating and using serialization

Version 2.09 December 8 2010
- Performance gains for stratocumulus clouds (up to 4X faster on some systems)
- Fixed lighting of stratocumulus cloud volumes when inside the cloud
- Fixed memory leaks at shutdown from static objects

Version 2.08 November 23 2010
- Fix bug where precipitation causes lens flares to disappear
- Small performance tweaks

Version 2.07 November 21 2010
- Added explicit wind methods on CloudLayer and for precipitation, so you can have
  additive wind effects on specific cloud layers and on precipitation in 
  addition to global wind set via AtmosphericConditions::SetWind. See
  AtmosphericConditions::SetPrecipitationWind and CloudLayer::SetWind.
- Added sample code for Carmenta Engine 5.0 (visit www.carmenta.com)
- Don't delete custom RandomNumberGenerators passed in to the Atmosphere.
- Updated time zone names.
- Fixed discontinuity when entering / leaving stratocumulus cloud bounding volume
- Fixed fog on stratocumulus under DirectX
- Precipitation on cloud layers is now triggered if the camera is inside the cloud as well
  as underneath it
- Fix near clipping plane on precipitation effects

Version 2.06 October 31 2010
- Make fade falloffs configurable for cloud layers with SetFadeTowardEdges on. 
  Default is less aggressive for cirrus now.
- Fix problem with cirrus fade-ins / fade-outs with SetFadeTowardEdges on.
- Made precipitation particles more evenly distributed about the camera.
- Added optional nearClip and farClip parameters to CloudLayer::SetPrecipitation 
  and AtmosphericConditions::SetPrecipitation, useful for simulators with screens 
  distant from the eyepoint.
- Fix precipitation under infinite stratocumulus clouds
- Added rain/sleet/snow-minimum-pixels config setting to enforce minimum projected
  screen size of precipitation particles.
- Fix culling against rain and sleet particles to eliminate rainless borders
- Don't delete custom ResourceLoaders passed in to Atmosphere::SetResourceLoader.
- Precipitation is a bit more efficient now
- Enabled RTTI in VC7 and VC6 libraries

Version 2.05 October 24 2010
- Fix CloudLayer::Save() and CloudLayer::Restore() to write binary files
- Added CloudLayer::ForceLightning() and lightning-auto-discharge config setting
- Fix motion of infinite stratocumulus clouds in round-earth applications
- More tweaking of stratocumulus performance and appearance - sampling artifacts reduced
- Stratus, cirrus and cirrocumulus clouds now honor CloudLayer::SetFadeTowardEdges()

Version 2.04 October 19 2010
- Increase opacity of stratocumulus clouds, and reduce sampling artifacts

Version 2.03 October 18 2010
- Fixed positioning of non-infinite stratocumulus cloud layers in round-earth applications

Version 2.02 October 17 2010
- New, simpler, faster lighting model for stratocumulus clouds
- Infinite stratocumulus clouds won't blow away with wind
- Fixed Atmosphere::ReloadConfigFile
- Removed duplicate config entry for raindrop-terminal-velocity
- Fixed direction of stratocumulus cloud motion from wind to match other cloud types
- Added CloudLayer::IsRenderable(), which takes cloud fading into account. CloudLayer::GetEnabled will now
  return immediately whatever was  passed in via CloudLayer::SetEnabled() without taking fading time into account.
- If a cloud layer is enabled / disabled while a fade is in progress, avoid a discontinuity in the fading.

Version 2.01 October 12 2010
- Added CloudLayer::GetClouds method
- Increased sampling rate and noise amplitude, and ambient light terms on stratocumulus clouds

Version 2.0 October 10 2010
- New Stratocumulus clouds - rendered with GPU ray-casting!
- Clamp fade values in billboard shader
- Fix math in placing status / cirrus vertices
- Rewrote Configuration class to be more efficient and not fragment memory
- Fix orientation of infinite stratus / cirrus / cirrocumulus decks when moving across large distances in 
  round-Earth systems
- Better memory allocation overriding capabilities. See the new Allocator class in MemAlloc.h. STL containers,
  new/delete, malloc/free are all intercepted in non-global manners.
- Added Atmosphere::SetWorldUnits() to support coordinate systems that are not based on meters.
- Added sample code for SceniX and Carmenta engines
- Fix VC10 dynamic linking issues
- Fix cumulus cloud lighting when Y isn't up
- Fix bug with stratus / cirrus / cirrocumulus clouds interfering with precipitation in some conditions
- Added cmake files for OpenSceneGraph 2.x example
- Updated to Feb '10 DirectX SDK and Windows SDK 7.1

Version 1.971 June 9 2010
- Fix resource leak with lens flares on DX9 with non-lockable backbuffers.
- Added new config settings average-horizon-color-fov and average-horizon-color-num-samples
- Dramatically reduced memory footprint

Version 1.97 June 8 2010
- Fixed texture edges in non-infinite stratus clouds
- Removed duplicate cloud-relight-budget config setting
- Added optional zenithAngleOffset parameter to the Sky::SkyColorAt method. This allows you to slightly adjust the 
  color appearance of Cumulus clouds (positive value makes clouds more bluish).
- Individual wind volumes may now be deleted via AtmosphericConditions::RemoveWindVolume
- Atmosphere height and rendering of the atmosphere from space may now be modified at runtime
- Remove stale reference to Atmosphere in Billboard when deleted
- Fixed getMilliseconds on Linux and Mac
- Cumulus clouds are now placed with the curvature of the Earth in mind (unless you set cumulus-round-earth to no)
- Added CloudLayer::SetCloudWrapping() and CloudLayer::SetFadeTowardEdges() to prevent localized cloud layers from blowing
  away, and preventing any visible popping as the clouds wrap around the edges of the layer.
- Build machines now running Windows 7, Ubuntu 10.04, and Mac OS 10.6.3
- Fixed shading on cumulus clouds loaded from VRML files
- Added OpenGL 3.2 core context renderer
- Cumulus clouds now fade with distance (set by AtmosphericConditions::SetVisibility())
- Added more random noise to cloud puffs
- Improved Ogre3D sample code
- Made Linux version less dependant on the version of mesa installed under Ubuntu
- Fixes to compile under 64-bit Linux
- CirroCumulus clouds now honor cirrus-round-earth

Version 1.963 April 16 2010
- Added Visual Studio 2010 support

Version 1.962 April 12 2010
- Fix fog on stratus cloud decks for DirectX and ATI+GLSL
- Fix stratus decks with density < 1.0 on DirectX 9
- Removed dependency on Cg altogether; we stopped using it for DirectX some time ago. OpenGL will now just fall back to
  the fixed function pipeline if GLSL isn't supported on the system, which is rare these days.
- Removed dependency on GLUT for the OpenGL renderer, although we still use GLUT for the OpenGL sample project.
- In order to remove GLUT, we removed the Atmosphere::DisplayFramerate method. You can still call Atmosphere::GetFramerate
  and display it on your own.
- In short, there are no longer any third-party DLL dependencies for SilverLining!

Version 1.961 April 1 2010
- Tweaked shaders to work better on older Shader Model 2.0 cards

Version 1.96 March 28 2010
- Removed all _INFINITE cloud layer types and NIMBOSTRATUS in favor of exposing CloudLayer::SetIsInfinite() on all cloud layers. Cloud layers
  are not infinite by default; call SetIsInfinite() to make a cloud layer camera-centered. NIMBOSTRATUS layers should be replaced
  with STRATUS layers with SetIsInfinite(true)
- Abstracts away memory management with the SL_NEW, SL_DELETE, SL_MALLOC, and SL_FREE macros defined in SilverLiningTypes.h.
- Exposes new ResourceLoader class, to let you override our texture / shader / data file loading with your own resource management scheme.  
- Fixed uninitialized shader for lens flare in non DX9 renderers
- Removes hard-coded clamp of 20.0 for precipitation intensity
- Fixed some warnings under g++
- Properly handles failure to do pixel read-back in lens flare occlusion tests
- Fixed bug with the first lens flare drawn being corrupt on some systems

Version 1.953 March 21 2010
- Check for changes to sun-luminance-scale and moon-luminance-scale each frame
- Fix DX9 warning and color on lightning effects
- Fix resource leak from cumulus clouds loaded from vrml files (ie, cumulonimbus)
- Updated DX9 sample to illustrate handling of a lost device using Atmosphere::Serialize and Unserialize
- Ran beautifier on the source code to ensure consistent tabs / line endings

Version 1.952 March 14 2010
- Fix bug in rain where billboarding of the particles was off
- Update to Feb 2010 build of Cg 2.2
- No longer uses fixed function pipeline in DirectX9 at all (eliminates errors in debug version of DX9 due to use of 128 bit color)
- Reinstate support for shader model 2.0 in DirectX9
- Properly handle failure of Cg programs to compile (again on SM2.0 cards)
- Added Serialize / Unserialize methods to Atmosphere, so you can completely capture the state and restore it.
This is quite useful when you need to delete and recreate an Atmosphere when handling a device reset on DX9.
- Project fixes for VC6

Version 1.951 February 18 2010
- Updated Ogre3D sample to play nice with compositors
- Disable GL_SAMPLE_ALPHA_TO_COVERAGE before we render (also improves Ogre3D compatibility)
- Fix bug where the billboard matrix is incorrect after EndFrame() if you're managing your own cloud drawing,
  and using a non-default coordinate system.

Version 1.95 February 7 2010
- Linked DX9 and DX10 renderers against the August 2009 DirectX SDK (instead of March 08)
- Reinstated support for VC6 and VC7 by popular demand
- Fixed virga effect under cumulonimbus (if you set cumulonimbus-rain-texture to rain.tga)
- Cumulonimbus cloud layer size now properly honored
- Added new lens flare effect - see Atmosphere::EnableLensFlare() and the lens flare section in the 
  config file for options
- Added new occlusion query against the sun - see Atmosphere::GetSunOcclusion()
- Added new optional parameter to Atmosphere::BeginFrame - drawStars lets you disable star rendering.
  This can be useful for passes that render environment maps; stars can lead to unwanted bright spots
  in them.
- New HDR support - completely disables tone mapping and gamma correction, and writes raw luminance values
  in kCd/m2 to your floating point framebuffer. HDR may be toggled at runtime now. See Atmosphere::EnableHDR()
- Fixed incompatibility with new ATI DirectX11-class HD cards
- Cg now uses the latest shader profile found on the system (relevant to OpenGL only)
- Sped up vertex operations on DirectX9
- Fixed texture coordinate issues on DirectX
- Simplified the billboard shader
- CloudLayer::SetBaseAltitude() may now be called at runtime to reposition an existing cloud layer
- Added CloudLayer::IsInsideCloud() to provide collision detection with a cloud layer's cloud
- Fix bounding volume on clouds generated from .wrl files
- OpenGL renderer now uses GLSL shaders instead of Cg if GLSL is supported on the system.
- DirectX shaders now require Shader Model 3 support.
- Fixed bug where multiple cloud layers could clear each other's sky fog when you're inside one
- Added cull-interior-voxels config setting. This will cull cloud voxels that are completely surrounded by
  other voxels, giving a small performance boost.
- Cumulus cloud fog color is now computed per cloud, for better blending into the sky
- The up vector in effect when CloudLayer::SetLayerPosition() is called is now stored with the cloud layer. So,
  cirrus, cirrocumulus, and stratus clouds won't change orientation as Atmosphere::SetUpVector() is changed unless
  you explicitly call SetLayerPosition(). (Infinite cloud layers are always oriented relative to the current up
  vector for the frame still, since they are relative to the camera position.)
- Added pitchDegrees parameter to Atmosphere::GetHorizonColor() so you can sample the color a little above the
  actual horizon if you want to.
- Stratus, cirrus, and cirrocumulus cloud layers now curve downward with distance with the curvature of the Earth.
  You can disable this with stratus-round-earth and cirrus-round-earth if you need to.
- Renamed "-static" versions of the libraries to "-norenderer" to reduce confusion.

Version 1.94 January 10 2010
- Refactored to make integration with rendering engines not directly supported easier. See new section in docs on
  integrating with custom renderers for more info. Basically you can treat the core of SilverLining as a platform
  agnostic numerical engine that calls back into your own renderer now.
- Fix problem with sun/moon glow being too bright near the horizon
- Fix anomaly with billboard rendering when view vector approaches the world up vector
- Properly fog cirrus and cirrocumulus clouds when AtmosphericConditions::SetFog() is used
- Fix fog on cirrus and cirrocumulus in DX10 and DX11
- Added config setting scatter-moon-color to let you disable color on the moon
- Fix fog on cumulus clouds
  
Version 1.93 December 26 2009
- Cleaned up resources folder
- Tweaked cumulus cloud lighting further
- Added CloudLayer::GetAlpha to allow setting explicit translucency on any cloud layer. You can use this to
  give the clouds a softer appearance that blends into the sky more.
- Cirrus and cirrocumulus cloud layers now honor the "thickness" setting, and will generate fog when inside
  them.

Version 1.92 December 22 2009
- Fix sun and moon placement with non-default up and right vectors in non-geocentric mode
- Added "drawPrecipitation" parameter to Atmosphere::EndFrame() to provide workaround for 
  multiple viewports per frame

Version 1.91 December 15 2009
- Added a new STRATUS cloud layer type. STRATUS is similar to NIMBOSTRATUS, but does not extend infinitely to the horizon.
  The position, length, and width of STRATUS clouds will be honored, enabling you to place low clouds off in the distance with
  distinct edges.
- Added a vertex shader for stratus and nimbostratus clouds, to give them some dimension on their upper planes.
- IR sensor simluation support - see Atmosphere::SetInfraRedMode()
- Performance improvement (stopped using std::bitset in our Voxel class and stopped using std::map in Configuration)
- Fixed divide by zero bug in cloud lighting calculation
- Added Atmosphere::DisableFarCulling() to not cull clouds against the far clip plane. You can use this in conjuction
  with depth clamping to keep your far clip plane close and still render distant clouds.
- Brightened horizon a bit, brightened moon illumination a bit.
- Fixed bug where sun / moon disappear sometimes when viewed from outer space
- Imposters work again (if you set disable-imposters to "no" and use OpenGL or DX9)
- Fixed bug where clouds were black from very high altitudes (due to fogging gone awry)
- Reworked the math behind the rendering of the atmospheric limb
- Fixed coordinate frame when rendering sun, moon, and stars in geocentric mode if you have a Y-North geocentric system.
  See the new geocentric-z-is-north config setting if this applies to you.
- Interpolates skylight to black as you leave the atmosphere instead of suffering a discontinuity at the edge of the
  atmosphere.
- Updated fog handling in sample code to account for being outside of the atmosphere.
- Increased number of stars rendered at night
- Density of 0 now supported in SetHaze()
- Fixed performance and appearance of cumulonimbus clouds (vrml files were not installed)

Version 1.9 November 12 2009
- DirectX 11 Support!
- Fixed bug with twilight luminances and simulated ozone amount
- Numerous tweaks and fixes to sky and light colors (they're a LOT better now.)
- Updated to October 2009 build of Cg 2.2
- Built against Windows 7 SDK and August 09 DirectX SDK
- Added config setting "disable-tone-mapping". May be changed at runtime - disables all tone-mapping effects.
- Added air-mass-model, spectrum-red-shift, and air-mass-multiplier config settings to allow further tweaking of sky colors.
  These may also be set at runtime.
- "Quick and dirty" cumulus lighting mode now enabled by default. It's faster and looks smoother, but this means shadow
  maps won't be generated unless you turn off cumulus-lighting-quick-and-dirty.
- The "complex" sky shader, which computes both the sun and moon light simultaneously, is now the default.
- Added config settings "twilight-chromaticity-x" and "twilight-chromaticity-y" for adjusting the sky's twilight color.
- Added config settings "sunset-X-boost", "sunset-Y-boost", "sunset-Z-boost", and "sunset-boost-exponent." These allow tweaking
  of the scattered sunlight color as the sun approaches the horizon. 
- Removed the perceptual monochromatic blue shift effect at twilight.
- Increased the ambient term on cloud voxels
- Fixed geometry of atmospheric limb
- Fixed bug with cumulonimbus cloud voxels remaining lit from lightning
- Fixed "brightness" config setting to be more effective
- Made moonlit skies darker
- sun-luminance-scale and moon-luminance-scale now affect scattered as well as direct light
- Better preservation of color in cloud lighting
- Added atmosphere-ozone-mass and atmosphere-water-vapor-mass config settings
- Added small randomness to metaball colors to improve cloud depth (see metaball-color-randomness)
- Exposed individual Perez function coefficient scale factors to config
- Fix problem in DX9 device resets where shaders weren't released
- Added glow effects to the sun and moon
  
Version 1.818 September 3 2009
- Better input validation
- Fix bug in OSG sample code's near/far clip adjustment
- Make source compatible with gcc 4.4
- Precipitation performance enhancements.
- Updated license agreement for full source version to not include reverse engineering
  restrictions.

Version 1.817 August 18 2009
- Fix ATI compatibility issues

Version 1.816 August 15 2009
- OpenSceneGraph 1.0 example code provided (in addition to the 2.x example)
- Updated license agreement

Version 1.815 July 16 2009
- Re-enable DX9 shaders
- Switch to compiled HTML docs
- Set SILVERLINING_PATH env variable immediately when installer finishes.
- render-offscreen back to "no" by default.

Version 1.814 July 14 2009
- Fix crash related to RandomNumberGenerator if all atmospheres are deleted and then one is recreated
- Render the lighting pass offscreen by default, for better DX9 compatibility.

Version 1.813 July 12 2009
- Added HDR sky shader for DirectX
- Added new configurations to the SilverLining project (full source users only) to statically link in the
DirectX or OpenGL renderers (makes console porting easier.)
- Made source code more platform-independent.

Version 1.812 July 9 2009
- Reduced billboard vertex buffer chunk size from 20000 to 10000 vertices for system compatibility
- Fix problem when the modelview and proj. matrices change between beginframe() and endframe()
- DirectX9 renderer no longer uses NVidia's Cg - it uses HLSL directly. DirectX applications no
  longer need to link against Cg and redistribute it (this makes XBox porting easier.)

Version 1.811 June 24 2009
- Made OpenSceneGraph sample code Linux-friendly, provided makefile, force to display in window
- Added HDR (floating point color) support for licensed users with full source. 
  Uncomment the preprocessor definition FLOATING_POINT_COLOR in VertexBuffer.h,
  rebuild the libs and DLLs, and the sky will render in HDR space.

Version 1.81
- Mac OSX 10.5 support! Makefiles will build under MacOS or Linux now.
Continue to use the Visual Studio project files for Windows.
- Fix bug in billboard shader with uninitialized value (seemed to affect ATI
cards mostly)
- Intel compiler compatibility
- Reduce calls to configuration
- Speed up initialization by streamlining billboard creation
- Abstracted away the random number generator. You may provide your own by subclassing
RandomNumberGenerator and passing in an instance of your implementation to 
Atmosphere::SetRandomNumberGenerator()

Version 1.801 June 2 2009
- Reset vertex buffer format on entry to SilverLining with bindless graphics.
- Always calculate the framerate, since the app might display it on its own.

Version 1.8 June 1 2009
- "Infinite" cumulus cloud layers - see new CUMULUS_CONGESTUS_INFINITE and CUMULUS_MEDIOCRIS_INFINITE cloud
layer types in CloudLayerFactory. These layers stay centered at the camera position, with individual clouds
wrapping across the layer. No more disappearing clouds as the wind blows them away, or as the camera moves.
- Uses OpenGL Bindless Graphics on systems that support it (NVidia 185 driver + G80 hardware.) 20% faster
by our tests.
- Linux support. Code compiles and links without warnings on GNU C++; static library, OpenGL sample, and 
makefiles provided. Tested on Fedora Core 10.

Version 1.7 May 18 2009
- DirectX 10 support! DX10 version does not depend on NVidia's Cg any longer, and uses HLSL directly.
- Takes explicit modelview and projection matrices from the application now; see 
  Atmosphere::SetCameraMatrix() and Atmosphere::SetProjectionMatrix()
- GCC portability bugs addressed
- Added geocentric and ecliptic versions of Atmosphere::GetSunOrMoonPosition
- Updated to CG 2.2
- Apply visibility effects from global precipitation set on AtmosphericConditions
- Cleaned up project files in full source distribution
- Fixed LocalTime::AddSeconds()
- Added cloud-relight-budget config setting to spread out relighting in response to time of day changes.


Version 1.610 December 13 2008
- Reduced memory fragmentation
- Reduced and made configurable how the moon lights up the sky at night
- Made config lookups more efficient
- Fix resource leak in DirectX with render-offscreen enabled

Version 1.609 November 27 2008
- Protect against duplicate Cg context ID's in renderer shutdown.

Version 1.608 November 26 2008
- Don't reload the DLL when creating a new atmosphere.
- Fix DirectX resource leaks when releasing multiple atmospheres.
- Maintain seperate Cg contexts per Atmosphere object.

Version 1.607 November 25 2008
- Further DirectX / multiple device fixes.

Version 1.606 November 24 2008
- Allow DirectX version to work with multiple devices (one device per Atmosphere object)
- Fix precipitation manager shutdown with multiple atmospheres

Version 1.605 November 8 2008
- Added CloudLayer::GetPrecipitation() method
- Precipitation is now saved and restored with cloud layers.

Version 1.604 November 5 2008
- Disable fixed-function fog when billboard shader is in effect. (Fixes cumulus clouds when viewed from within
  a stratus cloud in DirectX)

Version 1.603 October 28 2008
- LocalTime::SetFromEpochSeconds now assumes GMT time zone, no need to set local time zone with it anymore.
- Fix broken stratus clouds in DirectX

Version 1.602 October 25 2008
- Update to final release of Cg 2.1
- Properly handle off-center / skewed / sheared projection matrices when rendering precipitation

Version 1.601 October 13 2008
- Release precipitation resources when Atmosphere is destroyed (allows D3D9 to be reset successfully)
- Honor the default-turbidity setting when Atmosphere::Initialize is called.
- Make sky shaders compatible with HLSL
- Change blending mode for glares
- Fix GetSunOrMoonPosition to return light source with greatest transmitted luminance
- Add Atmosphere::GetGamma() and Atmosphere::SetGamma() to allow runtime adjustment

Version 1.6 September 28 2008
- Add third parameter to Atmosphere::BeginFrame() to allow apps to change the size of the skybox dynamically
  (useful for apps that modify the near and far clip planes dynamically)
- Fix scale of projected depth in left-handed OpenGL or right-handed DirectX.
- Tweak how large cloud layers are sorted relative to each other
- Don't make cumulus clouds disappear as soon as you enter a stratus deck
- Fix floating point accuracy issues in GetDistance methods of flat cloud layers
- Added Atmosphere::GetConfigValueDouble and Atmosphere::GetConfigValueString
- Remove clouds from list of scene objects as soon as they are deleted.
- Change up and right vectors passed into Atmosphere to take doubles instead of floats
- Add AtmosphericConditions::SetFog(), ClearFog(), and GetFog() to explicitly fog clouds to a given color and density
- Clear all vertex array client states before using vertex arrays
- Improved OpenSceneGraph sample code
- Fix transition as you leave the atmosphere with very high altitudes
- Add gamma correction to the skybox colors and light colors (you can adjust with the sky-box-gamma config setting,
  and influence how dark the sky colors are by doing so. The default of 1.8 is quite realistic.)

Version 1.514 August 17 2008
- Fix anomalies in cloud billboards when looking up at around 45 degrees
- Fix cloud flicker in Ogre3D using DirectX
- Tweak Ogre3D sample code to display warning dialog before entering full screen mode,
  and specify the time zone to match the location.

Version 1.513 August 10 2008
- Fix DLL path for debug builds
- Update to Cg 2.1 beta (fixes flicker in sky that was happening on some systems)
- Color the sun disc as it nears the horizon (see new scatter-sun-color config setting)
- Don't draw the sun when it's below the horizon by default (see new draw-sun-below-horizon config setting)
- Added troubleshooting tips to the documentation

Version 1.512 August 1 2008
- Fix streak lengths for sleet when camera is moving.
- Fix spelling on lightning-max-discharge-period config setting.

Version 1.511 July 30 2008
- Don't ask for high quality smooth lines for lightning, too much of a performance hit on some
  systems.
- Pre-compute lighting effects from lightning to speed up runtime performance.
- Added section in documentation on using Silverlining in geocentric / ECEF systems.
- Add table of contents to main page of docs.
- Changed OSG example to point to a win32 Program Files path instead of win64 in 
  Atmosphere::Initialize call.
- Force clouds to recompute lighting upon a CloudLayer::SetEnabled call, regardless of time 
  lapse update settings.
- If a thunderhead's base altitude is more than the radius of the Earth, assume we are 
  in an ECEF system and don't render lightning bolts to the center of the Earth...

Version 1.51 July 23 2008
- Added sleet
- Added support for mixed precipitation (call CloudLayer::SetPrecipitation multiple times for different 
  precip types, or set it to NONE to clear them)
- Added AtmosphericConditions::SetPrecipitation method, for global precipitation effects that don't require
  use of CloudLayers.
- Don't use Cg profiles newer than VP40 or FP40; our billboard shader doesn't seem to work properly with the
  new profiles in Cg 2.0.
  
Version 1.502 July 13 2008
- Added fade in / fade out effects to CloudLayers; see new fadeTimeMS parameter in CloudLayer::SetEnabled()
- Properly factor in night sky luminance (including light pollution) into tone-mapping
- Don't draw stars when it's overcast.
- Fix undefined V-coordinate texture wrapping mode in DirectX
- Lightning strikes now honor the MillisecondTimer instead of using system time directly
- Add Ogre3D sample code

Version 1.501 June 27 2008
- Added AtmosphericConditions::SetLightPollution() to add extra ambient light to nighttime scenes
- Fixed range of snow to 1.0 to 30.0 mm/hr instead of 1.0 to 3.0 (we mixed up cm and mm... blush)
- Fix bug where cloud colors were undefined if a certain register got overwritten by the application
- Added config option to prevent rain streaks from elongating with camera motion

Version 1.5 June 22 2008
- Fix sky color on skybox verts below the horizon
- Smoother fog transitions through stratus clouds
- Added precipitation (rain and snow) support to CloudLayers
- Fix bogus assert in CumulusCloud.cpp
- Fix various gcc portability issues
- Make cirrus lighting consistent with cirrocumulus lighting
- Updated to May 2008 Cg build
- Updated to March 2008 DirectX SDK
- Added 64-bit DLL's and LIB's (see new win32 and x64 subdirectories now)
- No longer supporting Visual Studio 6 and 2007 (see docs on how to obtain version 1.094)
- Improved cumulus cloud appearance
- Hand-modeled Cumulonimbus clouds added
- Demo time limit increased to 5 minutes
- Fixed sun/moon billboarding in geocentric mode
- Added OpenSceneGraph sample code
- Added Atmosphere::SetConfigOption method

Version 1.094 March 30 2008
- Explicitly sets the client active texture unit to zero prior to rendering 
  (fixes lots of compatibility problems)
- Added Visual C++ 2008 (VC9) support
- Added support for manually generated cloud models (contact us for details)
- Built VC8 binaries with SP1
- Remove ATL dependency in DirectX9 DLL, so you can build sources with VC++ Express Edition.
- Disabled 2D text drawing (framerate display) in DirectX9. D3DXFont::DrawText was crashing
  on some systems, despite having valid parameters.
- Add +- 10% randomness in individual cloud puff sizes

Version 1.093 March 23 2008
- Added star-magnitude-adjustment config setting to allow tweaking of star brightness
- Smoothed transition from atmosphere-from-space to ground
- Enable glare on the sun when outside of the atmosphere
- Fix bug where cloud layer altitude and thickness were not properly saved / restored
- Fix reversed wind direction on stratus decks
- Added "quick and dirty" cloud lighting option in config file, useful for time lapse sequences.
- Fix star orientation in geocentric mode
- Updated to Cg 2.0 (Jan 08 build)
- Add statically linked DirectX9 renderer build option
- Fix bug where north/south axis was flipped for astronomical object positions in sky
- No longer messes with near and far clip when drawing the sky box, this led to inconsistencies.
- Stars, sun, and moon drawn honoring the skybox size config setting.

Version 1.092 January 13 2008
- Draw the bottom face of the skybox (for space-based viewpoints)
- Fix bug that affected performance on cumulus clouds
- Always draws the sun (for space-based viewpoints)
- Sets near and far clip planes to ensure drawing of the sky box
- Reduced memory footprint
- Realistically darken the sky as the altitude (as specified in the Location of the
  AtmosphericConditions) increases. Go up into space and watch the stars come out!
- Simulated sun and moon light color is affected by altitude (scattering reduces with
  altitude.)
- Fix bug where sun and moon light directions were not transformed into the specified
  coordinate frame as set by Atmosphere::SetUpVector and SetRightVector.
- Exposed geographic and equatorial coordinates for the sun and moon.
- Added geocentric coordinate rendering mode for astronomical objects (see new optional paramater
  on Atmosphere::EndFrame() )
- Fixed bug where going backwards in time using a MillisecondTimer would cause clouds to
  completely disappear.
- CloudLayer::SetLayerPosition may now be called at runtime to reset a layer's position and/or
  wind drift.
- Added simulated atmospheric limb for space-based viewpoints. (see enable-atomsphere-from-space
  config setting)

Version 1.091 October 27 2007
- Set vertex array buffer to 0 when unsetting it (fixes OpenSceneGraph compatibility problems)
- Fix crash on systems without array buffer support on OpenGL

Version 1.090 June 23 2007
- Fix bug in positioning of cumulus congestus clouds
- Properly initialize textures to null for stratus and cirrus clouds

Version 1.089 April 8 2007
- Return error codes from Atmosphere::Initialize instead of just a boolean success.
- Push and pop the GL client state surrounding BeginFrame and EndFrame calls automatically.
- Release DirectX resources associated with offscreen render targets.
- Distribute VC6, 7, and 8 builds of renderer DLL's under VC6, VC7, and VC8 subdirectories of
the Resources directory. Libraries automatically link in correct builds at runtime.
- Fix Visual C++ 6 sample project files.

Version 1.088 February 24 2007
- Fix DirectX object leak when using offscreen rendering for lighting pass
- Fix resource folders not relative to the working directory in OpenGL version
- Added support for custom millisecond timers (see AtmosphericConditions::SetMillisecondTimer)
- Added support for continuous time of day updating (see AtmosphericConditions::EnableTimePassage)

Version 1.087 February 11 2007
- Allow devices with unlockable back buffers and multisampling if render-offscreen is enabled in 
  SilverLining.config.
- Documentation corrections.

Version 1.086 February 3 2007
- Disable sun glare effects by default (causes perf issues on some Dell Inspiron laptops)
- Disable imposters by default (causes jerkiness on PCI NVidia cards)
- Limit number of imposter and cloud sorting updates per frame to smooth framerates
- Fix sun disc drawing before sunrise

Version 1.085 January 28 2007
- Reduce ambient term in cumulus clouds to improve appearance.
- Save and restore state in DirectX
- Fix missing ground texture in DirectX sample app

Version 1.084 January 22 2007
- Added ability to save and restore cloud decks, to offer a way to speed up
  cumulus cloud layer creation and reproduce exact cloud layers without any
  randomness.
- Reduced memory requirements
- Install both VC7 and VC8 project files
- Use VC8 runtime DLL's in DLL library targets instead of VC7
- Protect against an incompatibility with older ATI drivers in OpenGL mode.
- Fixed resource leaks under DirectX
- Check bounds of reads and writes from the framebuffer to avoid D3D errors
- Fix crash in DirectX associated with lightning firing
- Change sample apps to use static runtimes
- Fix DirectX sample app to not leak memory on shutdown

Version 1.083 November 4 2006
- Update DirectX sample code to wrap Initialize with beginscene/endscene and fix DirectX exception
- Enable re-creation of a deleted Atmosphere object without errors

Version 1.082 October 18 2006
- Added moon-luminance-scale config setting
- Star glare effects disabled by default for performance (set disable-star-glare=no to get them back)
- Fix wind shear on cumulus congestus and cumulonimbus clouds
- Improved lighting on cirrus clouds
- Improved tone-mapping on moonlit nights
- Improved luminance model in twilight (fixes bright clouds after sunset)
- Reduced memory consumption.
- Switch to a newer air mass model.

Version 1.081 October 10 2006
- Switch to the CIE color model.

Version 1.08 October 8 2006
- Improvements in cloud lighting from better modeling of atmospheric optical depth and zenith luminance.
- Improved day/night transitions.
- Fix and tweak glare effects for Directx and OpenGL with ATI extensions.
- Decreased default lightning frequency and lightning branches.
- Added Atmosphere::ReloadConfigFile() method.
- Fix discrepancy between average horizon color, tone mapping, and simple sky shader.
- Fix determination of relevant dominant light source for simplified sky shader.
- Fix bug tracking blend mode state
- Updated to use Cg version 1.5
- Added lightning notification object (see the new LightningListener class)
- Fix tone-mapping when pitch black
- Fix bug where new cumulonimbus clouds would fire all lightning bolts at once on their first frame.
- Switch from CIE color model to CCIR Rec. 709 video standard
- Improved star rendering
- Added cirrocumulus clouds and a second cirrus texture.
- Reduced height of cumulus congestus clouds and decreased voxel size. Tweaked physical parameters.
- Tweaked lightning effects, fixed lightning under DirectX.
- Improved lighting of stratus and cirrus decks.

Version 1.072 September 4 2006
- Clear out texture stage states prior to rendering in DirectX9, fix texture stage enable / disable code.
- Fix bug in setting point rendering state to default in DirectX9, which fixes stars on ATI X1xxx cards.
- Improved appearance of stars at night.
- Tweak billboard matrix with non-default up vectors.
- Fix fog density in DirectX.

Version 1.071 August 29 2006
-Re-enable depth buffer writes when rendering to texture for imposters in DirectX9.

Version 1.07 August 28 2006
- Automatically set default render states within Atmosphere::BeginFrame() and Atmosphere::EndFrame(), and restore original settings
when exiting these methods. Also clears any previously set fragment or vertex shaders.
- Eliminate unnecessary clear of depth buffer in DirectX version.
- Added Atmosphere::SetUpVector() and Atmosphere::SetRightVector() to allow for cases where "up" is not the positive Y axis.
- Modified documentation to indicate that "pure" DirectX devices are not supported.
- Added methods to allow the application to manage its own cloud drawing: Atmosphere::GetObjects(), Atmosphere::GetObjectDistance(),
and Atmosphere::DrawObject().
- preserve-back-buffer config setting now defaults to "no".

Version 1.06 August 6 2006
- Depth and color buffers won't be touched by Atmosphere::BeginFrame(false), if preserve-back-buffer = yes is specified in the SilverLining.config file
- Eliminate unnecessary depth buffer clear
- Protect from crashes due to calling Atmosphere methods in incorrect order
- Fix bug in moonlight calculation
- Store all epoch seconds in unsigned longs
- Fixes for clean builds under VC8

Version 1.051 August 1 2006
- Added MSVC8 libraries

Version 1.05 July 31 2006
- Add ambient skylight to lighting of cirrus and stratus clouds
- Add MSVC 6 libraries and projects
- Change samples to use multithreaded DLL runtime libraries for MSVC8 compatibility 

Version 1.04 July 19 2006

- Code cleanup and documentation for full-source licensees
- Remove limit of simulated refracted solar angle of -9 degrees (we simulate twilight below that point)
- Add SetHaze() and GetHaze() methods to Atmosphere, to support blending toward a specified horizon 
  color in the sky box.
- Fix precision bug on horizon color with NVidia hardware.

Version 1.031 July 2 2006

- More accurate sky color at horizon

Version 1.03 June 26 2006

- Fog color returned from Atmosphere class is premultiplied with the sun/moon color now
- Enabled fog effects on cirrus decks
- Volumetric fog effects on sky dome added

Version 1.02 June 22 2006

- Added Atmosphere::GetHorizonColor() method that doesn't require yawDegrees to be explicitly passed in.
- Protected from divide-by-zeros in GetHorizonColor()
- Simplify star vertex shader to fit within 128 instructions
- Model twilight correctly (better day/night transitions)
- Added GetSunColor(), GetMoonColor(), GetSunPosition(), and GetMoonPosition() methods to the Atmosphere
  class for customers who wish to model two independent light sources.
- Fix cloud colors at dusk / dawn on DirectX
- Fix bug with texture wrapping vs. clamping in DirectX
- Don't fog the sun and moon polygons
- Fix bug where imposter-slop-value config setting wasn't honored.

Version 1.01 June 8 2006

- Tweaked billboarding algorithms to better handle roll
- Fixed billboard rotation for case where vertex shaders aren't supported
- Eliminated memory leaks on application shutdown
- Added additional library builds for every runtime library
- Fixed anomolies with wide fields of view
