
    v1.6.4 [Shoggoth] (27 Sept 2009) - Maintenance Release
   
	- DirectX:
		
			- Fix texture samplers over #8 becoming blank after a device restore
- Compatibility with August 09 DirectX SDK: dxerr9->dxerr in all cases (works for older versions too)
 
- OpenGL:
		
			- Fix 'invalid enumerant' problem (this time for good) on some cards in GL 
- When locking a sub-area of a pixel buffer, we must remember the original lock area and not just the PixelBox that is returned (which is rebased). 
				Upload should only upload the area which was locked.
- Fix a 'new' call that should have been OGRE_NEW in GLSLProgram.
- Fix a problem in GL when using HardwarePixelBuffer::blit - it wasn't disabling higher texture units which could cause some incorrect results in the FBO rendered version
 
- Root::removeFrameListener would queue up removal even if the listener wasn't in the list yet, which could mean if you added it again it would get removed. Now it doesn't queue the removal if the entry isn't in the listener list already.
- Use PixelUtil::packColour instead of memset to initialise the contents of a null shadow texture. This bug could result in different results on nvidia / ati cards if this texture was floating-point
- Fix BillboardParticleRenderer calling detachobject() incorrectly.
- Fix OgreOSXCocoaView causing application crash if you save the window attributes to the preferences
- Fix leftover texture sampler settings above fixed-function units when switching between shaders using 9+ samplers and fixed-function techniques
- Fixed some edge-case issues with Resource loading and preparing in multiple threads.
- Make it unnecessary for the parent directory to be in the search path for platform-specific subfolder includes
- Correctly trap errors in FreeImage_AllocateT
- Rearrange CEGUI files to be friendly to layout editor
- Fix a crash in CompositorChain when incorrectly given a null camera
- Fix a small memory leak in Pass when shaders were used
- Thread safety for StringInterface
- Fix scene_depth_range and shadow_scene_depth_range when using LiSPSM or other ShadowCameraSetup classes that use custom matrices and don't use a 'real' camera position
- Revert revision 8591, "Early-out optimisations to setMaterialName methods, to reduce their cost if the same material name is used"
		This actually causes problems with applications that delete & recreate materials with the same name, such as Hikari. Of course, it would be better for those apps to regenerate the material in-place instead of creating a new one but since this was breaking behaviour it needs to be undone in the stable release.
- Fix edge list memory leak in Mesh if more than one SubMesh had non-triangle geometry
- FileHandleDataStream: Don't pass 0 to fclose.
- ZipDataStream: Don't double-close zip files.
- Fix a bug in RibbonTrail; you couldn't extend the number of chains from the amount that were initially created without problems, the ordering of the elements in mFreeChains was not consistent.
- 
    v1.6.3 [Shoggoth] (25 July 2009) - Maintenance Release
   
 	- OS X
 	
 		- Fixed skewed screenshots on OS X for windows with odd width
- FreeImage 3.9 - 3.11.0 interoperability fix; detect when FreeImage uses big-endian even on Intel Macs & use the data correctly
- Fix uninitialised mFullScreen in Cocoa window, and expose WINDOW and VIEW custom params as with Carbon
 
- OpenGL
	
		- GLSL: gracefully handle a link error during binding of parameters, so that we do not abort the render
- OpenGL pixel buffer: download the buffer when lock mode is anything but HBL_DISCARD, and ignore whether the buffer was created as WRITE_ONLY. For consistency with other rendersystems, WRITE_ONLY should only be a hint, and should not prevent the user reading the contents if they choose to. Previously the read buffer would always contain garbage on GL unless you removed the WRITE_ONLY, which was easy to miss because TU_DEFAULT includes it.
- Prevent deletion of an external GL context when using currentGLContext.
- GLSLLinkProgram::activate should not access the vertex program (for attribute mapping) without checking it exists.
- Fixed parentWindowHandle usage for GLX
- Disabling hardware mipmap generation on ATI/Linux as reported faulty
- Enable/disable GL_VERTEX_PROGRAM_POINT_SIZE for point size attenuation when vertex programs available
- Workaround for broken hardware mipmap generation on Intel 915G's (at least - for the moment disable for all Intel chipsets)
- Identify SiS chipsets and apply same GL automip workaround as for Intel chipsets
 
- Direct3D
	
		- Fix an edge-case in D3D9 where if _canDynamicTextures returned false, the default pool would still be used even though D3DUSAGE_DYNAMIC wasn't specified, which doesn't allow locking. If D3DUSAGE_DYNAMIC could not be specified, then use the managed pool in all cases.
- Safety check before rebinding D3D9 textures after a device restore where user has destroyed render target but not texture. 
		
- D3D9 render texture classes had the wrong update() signature so were not protecting against device lost conditions
 
- Visual Studio
	
		- Fix for Runtime Check Failures with VC 2003 SP1 with alpha_op_ex
- Allow OGRE to build with VC 2010, use TR1
- Added missing OgreShadowCameraSetupPSSM.h/.cpp in VC 2003 project file
 
- ILImageCodec segfault fix (for those who choose to use it)
- Fix calculation of bounding radius from AABB in some places
- Fix McGuire style dark cap incompatible with multiple edge groups (stencil shadows)
- Make getCameraPosition, getCameraPositionObjectSpace and LOD camera equivalents consistent with other parameters when using camera relative rendering
- Fix dark cap clipping in stencil shadows in a few edge case conditions
- Fix the use of 2 scene managers with different settings on finite / infinite stencil shadow extrusion
- Fix Light::_getFrustumClipVolumes(...) numerical instability if infinite camera's far clip plane is used, causing light flickering if light is near camera's side frustum plane.
- Should propagate material scheme from primary viewport to shadow viewports so that caster/receiver materials are consistent with materials chosen for main view
- SceneManager should restore mCurrentViewport after rendering the shadow textures
- ConvexBody: only process finite AABBs (ignore null & infinite)
- Fix AABB when using BillboardSet with world coordinates and a transformed parent node
- Fix 2 typos in scripts where vertex_program should be fragment_program
- Fixed a few warningsFix problems with gui sample files schema validation when using Xerces
	Fix to fog_override parsing when using options other than 'none'
- GpuProgramUsage::setProgramName - check the type of the program assigned matches the type of usage it's assigned to (make copy/paste errors in scripts easier to diagnose)
- Don't pull the AABB out of an unloaded or half-loaded Mesh - if the Mesh is being background loaded, it's possible the AABB could be half-populated and invalid.
- AnimableValue should handle DEGREE and RADIAN types (gcc warned about this)
- Early-out optimisations to setMaterialName methods, to reduce their cost if the same material name is used
- Fix blended scene animation (previously, only one animation would successfully apply, now they can be blended)
- Fix write overflow in GPU parameters when using a (physically) 3x4 matrix - this could occur even if the param was declared as 4x4 but cast to 3x3. 
- TextureUnit's rarely-used constructor wasn't initialising everything
- Fixed calling Root::loadPlugin twice for the same plugin caused a crash at shutdown (and also double-calling of init function)
- Return default value properly from ConfigFile::getSetting
- Fix license statement on Fresnel demo code - all samples are supposed to be public domain / free use.
- SceneManager should destroy its own shadow textures on destruction	
    v1.6.2 [Shoggoth] (11 April 2009) - Maintenance Release
  - LGPL static link exclusion clause added to our official license terms. Static linking terms are now the same as dynamic linking.
- OpenGL:
	- Safety check before using mCurrentContext
- Win32: Correctly restore display frequency on Win32/GL, was getting overridden  after restoreConfig
- Linux: CurrentGLContext option for GLX rendersystem should not be creating a new context.
- ATI: Workaround for corruptions in most recent drivers with sub-buffer updates with glMapBuffer
- ATI: fix crashes on some older cards when trying to use point sprites
- Add support for more graceful downgrading on pre-GL 1.2 cards and other underpowered systems (Mesa should now work)
 
- D3D9:
	- Remove flushUpTo() call in CompositorChain::postTargetOperation; this happens after the begin/end of the scene and actually gets ignored anyway, D3D9 would bitch about this in debug mode
- Fix a potential issue with switching from fullscreen to windowed if requested size overflows
- Fix copyContentsToMemory in D3D9 for secondary windows
- Allow reference device software fallback for low-end machines
 
- Win32: standardise the use of NOMINMAX and WIN32_LEAN_AND_MEAN
- Linux: Fix aclocal warnings in configure.in
- Linux: Deal with Xlib.h's definition of 'Status' which clashes with ResourceGroupManager header
- OS X: OgreMemoryNedMalloc.h correctly made 'public' in the Copy Headers task
- GCC: Make the PCZ plugin use the gcc visibility options like other libraries
- VC7.1: Fix for threaded build, VC7.1 doesn't have intrin.h
- VC9: Added missing 'user' files for VC9
- Change to the timing of dirtying a Pass hash before a material is loaded to better support threaded material population.
- Fix small potential memory leak when explicitly constructing a SharedPtr with a null pointer
- Fix a shadow map indexing bug when using pass iteration for a specific light type and multiple light types all with shadows
- Fix OverlayManager::getViewportAspectRatio, was inverted
- Return float from AutoParamDataSource::getLightCastsShadows to match declared type
- Make methods of TerrainZone virtual
- Fix off-by-one error in StaticGeometry::GeometryBucket::assign when checking number of vertices.
- Make sure aspect ratio of camera is updated when camera newly assigned to a viewport
- Propagate alpha for material and technique setAmbient and setSelfIllumination
- Fixed ManualObject's support for 4D texture coordinates
- Fixed ManualObject transparent sorting behaviour when using 'keep ordering' mode
- Fix a crash when a compositor chain doesn't have a compositor attached to it
- Default material scheme when compiling compositors, so that quad materials get assigned correctly
- Fix bug with StaticGeometry when using stencil shadows and LOD.
- Fix the GLSL 'attach' directive  not allowing multiple attachments in one line.
- SceneManager::SceneMgrQueuedRenderableVisitor should be public, needed for SceneManager::setQueuedRenderableVisitor
- Entity::_initialise now uses needUpdate() rather than updateBounds() to update parent node so that it will work on deeper hierarchies with SceneManagers which require parent bounds to also be updated (or processed some other way).
- Fixed OpenEXR plugin build
- Fixed crashes with certain Overlay destruction orders.
- Documentation updates
    v1.6.1 [Shoggoth] (22 January 2009) - Maintenance Release
  - 
    Shadows
    
      - 
LiSPSM now
automatically adjusts for duelling frusta
      
- 
Uniform shadow
camera is now independent of FOV for directional shadows
      
- 
Directional shadows
no longer jitter when using the uniform shadow camera
      
- 
Fix
PSSMShadowCameraSetup when using arbitrary number of split points
      
 
- 
    Memory
    
      - 
Nedmalloc
deallocator should deal with null pointers
      
- 
Nedmalloc is now
the default allocator
      
- 
Linux build now
has option to
change allocators
      
 
- 
    Materials
    
      - 
cubic_texture
now calls processTextureNames event properly
      
- 
Fixed
support for multi-line comments
      
- 
Fixed
script inheritance ordering bug
      
- 
Fixed
extra space being added to the parameters of texture_source in scripts
      
- 
High-level
shaders can now be reloaded properly after a compile error
      
 
- 
    DirectX9
    
      - 
Fix device reset
error when using hardware occlusion queries
      
 
- 
    DirectX10
    
      - 
Fixed compilation
on the November 08 DirectX SDK
      
- 
Image pitch bug
fixed
      
 
- 
    OpenGL
    
      - 
Fix
crash on Radeon 9200 in _setPointParameters
      
- 
GTK
fullscreen mode now works
      
 
- 
    GLSL
    
      - 
Fix
warnings of the form “Could not find vertex shader attribute
'vertex' to match BindAttributeLocation request” 
- 
Fix
custom attribute names (tangent, blendWeights etc) interfering with
user-specified 'varying' bindings that happen to be called the same
thing
      
- 
Fix
“Invalid Enumerant” errors caused by
trial-and-error binding of custom attributes
      
 
- 
    OS X
    
      - 
Fixed
plist link for OctreeZone project
      
- 
Make
sure OgreMemoryNedMalloc.h is copied during Framework bundling
      
 
- 
    Code::Blocks
    
      - 
Project
files updated to include PCZ plugins & sample
      
- 
GL
render system project updated to include render to vertex buffer
      
 
- 
    PCZ
SceneManager
    
      - 
        Texture shadows
now work
correctly in PCZ scene manager
      
- 
        Null and
infinite AABBs now
handled correctly
      
 
- 
    Tangent support
    
      - 
StaticGeometry
now supports tangent parity option
      
- 
Allow
texture coordinate index 0 to be used for tangents if required
(previously only the tangent semantic, or texture coordinate 1 or
higher were supported)
      
 
- 
    Pixel buffers
    
      - 
Some
blit functions were ignoring the left/top/front offsets, this is fixed
      
- 
HardwarePixelBuffer::lock
implementations should not return the same left/top/front offsets as
the incoming parameters, since the returned pointer is already offset
      
- 
Box
now has a safer default construction, in particular setting front/back
to 0/1
      
 
- 
    Linux / GLX 
    
      - 
Xt is now the
default GUI on
Linux instead of GTK (if installed)
      
- 
Do not correct
window size to
valid fullscreen mode in windowed mode
      
- 
Fix typo in
closing GLX window
      
 
- 
Fixed animation
update for
entities using the same Skeleton at all LOD levels
  
- 
MeshSerializer can
now load
submeshes without indices successfully
  
- 
Hardware SRGB option is now
properly registered when using background loaded textures
  
- 
In SceneManager::_manualRender,
shader params for view/projection are now updated correctly
  
- 
Fixed bugs with sky boxes /
domes etc when repeatedly clearing the scene & resetting
  
- 
Fix calculated SubMesh size in
.mesh when using 16-bit indices
  
- 
Manually changing the
sort mode of solids in a render queue now works as expected
  
- 
Fix precision error in
AnimationState::hasEnded
  
- 
Allow access to const
version of OverlayElement factory list.
  
- 
Allow setMaterial() on
Entity/SubEntity as well as setMaterialName, for efficiency
  
- 
STLport build option
fixed
  
- 
Fixed uninitialised
typeName in Exception
  
- 
Fix various compiler
warnings
  
    v1.6.0 [Shoggoth] (3 November 2008) - Major Release
 
    
[View changes since RC1]
    
        
        - Script Changes
-  New script compilers are enabled by default, see OGRE_USE_NEW_COMPILERS in OgreConfig.h
-  Unified script syntax (.os), can contain anything that would have been in type-specific scripts (.material, .particle etc)
-  Import other scripts via the 'import' directive
-  More flexible syntax, quoted identifiers supported
-  Substitutable variables are supported
-  Interception of script parsing events now possible for custom behaviour
 
-  Material Changes
-  'manual_named_constants' directive added for assembler shaders to allow you to associate named parameters stored in a file with assembler. The file can be created from the GpuNamedParameters from high-level source if you want to precompile them.
-  'gpu_vendor_rule' and 'gpu_device_rule' allow you to influence the techniques which are used with inclusive/exclusive matching rules on the vendor and device name. Can help tune your materials for vendor or device-specific behaviour.
-  '#include' directive now supported in HLSL and Cg shaders
-  Added MaterialManager::Listener
-  Can implement default Technique setting when using a material scheme for which there isn't a specific Technique
-  Can use to change materials for all objects easily per viewport by using a new scheme name
 
-  Added Pass::setPolygonModeOverrideable / script 'polygon_mode_overrideable'
-  Allows pass-level control over whether the camera's polygon mode should affect rendering
 
-  Added 'light_scissor' option to Pass
-  Allows pass fragment processing to be limited to a scissor rectangle of the light coverage in that pass
-  Additive texture and stencil shadows now use scissor automatically for additive colour passes, previously just used for rendering stencil shadow volumes
 
-  Added 'iteration_depth_bias' option to pass. Allows you to increment the depth bias on a pass by a specific amount each iteration if you wish
-  'light_number' GPU parameter binding added
-  'light_count' GPU parameter binding added
-  'spotlight_viewproj_matrix' and 'spotlight_worldviewproj_matrix' added so you can use matrices from spotlights even without having set up texture shadows or an explicit texture projector
-  Added 'light_clip_planes' option to Pass
-  Clips triangles to a cube (point lights) or pyramid (spot lights)
-  Available when the pass is only using one light and you need to restrict complexity
 
-  Added 'separate_scene_blend' option to Pass
-  Allows the use of separate blend operations for colour and alpha between rendered pixel and existing frame buffer
 
-  Added pass option 'illumination_stage'
-  Allows material writers to assert control over the illumination pass compilation (additive shadows)
-  You can now incorporate sequences you could not before in your additive lighting materials
-  For example, allows you to include specular effects by pulling the decal pass into the per-light pass if that works for your material (offset mapping used as an example)
 
-  Added 'gamma' option to texture declaration in texture_unit (sRGB support)
-  Causes hardware to perform gamma space to linear space conversion when sampling the texture
-  Useful only for 8-bit per channel colour textures (not floating point textures or normal maps)
-  Can improve quality results from shaders because they mostly assume calculations are done in linear space
-  You will need to convert results back to gamma space when rendering to an 8-bit per channel render target either via a shader instruction or enabling the gamma correction option in RenderWindow or on the render texture
 
-  Added 'transparent_sorting' option  to Pass, allows you to disable depth sorting for transparencies
-  Added 'alpha_to_coverage' option to Pass, allowing you to use alpha to coverage to multisample alpha-rejected textures. Even though this is a Dx10 feature, it is available on Dx9 for recent ATI and NVIDIA cards, and OpenGL on all cards that implement it.
 
-  Frustum / Camera Changes
-  Orthographic projection now allows explicit setting of orthographic window size
-  Added Camera::getCameraToViewportBoxVolume. Similar to getCameraToViewportRay but generates a PlaneBoundedVolume from a screen-space rectangle which can be used in a PlaneBoundedVolumeListSceneQuery to do rubber-band selections
-  Added Frustum::setFrustumExtents - allows you to specify the left/right/top/bottom planes manually and thus create any shape frustum you need to, even without the camera being in the centre of it
 
-  MovableObject changes
-  An object will no longer render its debug display if set to visible (e.g. via a cascading visibility update), you have to explicitly turn on the debug display. This is available via MovableObject::setDebugDisplayEnabled and SceneNode::setDebugDisplayEnabled
-  Added visitRenderables() method - allows you to get a callback to a Renderable::Visitor class for all Renderables that this object will potentially add to the render queue. Identifies LOD and debug renderables.
 
-  Scaling Issues
-  By default now, renormalisation of normals is automatic if there is a non-unit scale on the main world matrix rather than the Entity::setNormaliseNormals option. If the user wants to optimise this, they can prevent the SceneManager doing it in all cases by calling SceneManager::setNormaliseNormalsOnScale(false) and then explicitly enabling the option per Pass instead. In the case of an array of world matrices being used, if the first world matrix isn't a guide then the shader writer should handle the renormalisation.
-  By default now, Ogre will flip the culling mode of objects that are rendered with a negative scale (ie they are reflected by the transform of the node). This means you can now negatively scale objects and they will be rendered correctly. You can disable this behaviour by calling SceneManager::setFlipCullingOnNegativeScale(false)
 
-  Compositor Changes
-  You can now define Multiple Render Targets (MRT) in compositor scripts. 
-  To define a MRT, just list all the formats one after the other in the 'texture' definition.
-  To reference a MRT subsurface later in a render_quad pass, use the optional extra 'mrtIndex' at the end of the 'input' command
-  Note: as at this time, D3D requires that all surfaces of the MRT are of the same bit depth, and GL requires them to be of the same format
 
-  Compositors now detect when the viewport they are attached to is using sRGB or multisample antialiasing, and apply the same settings to any intermediate textures which are having the original scene rendered to them (explicitly via a 'render_scene' pass or implicitly via 'input previous')
-  The 'texture' directive now supports specifying a size which is a multiple of the main target size. You can use 'target_width_scaled' and 'target_height_scaled', each followed by a floating-point scaling factor, so 'target_width_scaled 0.5' for example would result in a texture with a width of half the size of the target the compositor is applied to.
 
-  FrameListener changes
-  Added new callback 'frameRenderingQueued'. This callback occurs after all rendering commands have been sent to all render targets, but before the double-buffered targets (windows) are asked to swap their buffers. This allows you to perform some useful work on the CPU in the main thread whilst the GPU chews over the queued rendering commands. On return from the callback, the buffers will be swapped. This is equivalent to running your own rendering loop in previous versions and using RenderWindow::update(false) then RenderWindow::swapBuffers separately, but it now makes the technique available in the standard render loop.
 
-  SceneManager changes
-  Chaster's 'Portal Connected Zone' SceneManager added
-  'Camera relative rendering' option added so that in large scenes where you are far from the origin, precision issues on the GPU can be mitigated by only transforming objects relative to the camera. See SceneManager::setCameraRelativeRendering
 
-  ManualObject changes
-  4D texture coordinates now supported
-  32-bit indexes now supported
 
-  Tangents generation changes
-  New TangentSpaceCalc class can be used to calculate tangents for any geometry more easily, not just Mesh
-  Now generates tangents based on a UV-area weighted, triangle angle weighted basis resulting in less biasing from small / thin triangles
-  Now has options for splitting vertices when the tangent space basis is either mirrored or rotated around a vertex. 
-  Tangents can now be stored as a 4-component vector, with the 'w' component containing the parity. Multiply the binormal/bitangent you calculate in your shader by this to render models with mirrored UVs correctly. 
 
-  Resource changes
-  Resource now has a lightweight way to observe whether it has been reloaded since you last looked at it, via getStateCount(). Other changes known to make derived data out of date may also increment this number. This allows Entity to now pick up when Mesh has been altered and refresh itself on next render.
-  You can now query for file modification times via ResourceGroupManager::resourceModifiedTime
 
-  RenderSystemCapabilities changes
-  RenderSystem capabilities can now be serialised and these configs used to emulate lesser hardware
-  More information about graphics card is exposed in this structure now, including device name, driver version and also enumerates the most common vendors
 
-  SkyBox changes
-  Skyboxes now detect and can use materials which use the 'combinedUVW' option to cubic_texture. Allows you to use the same single combined DDS for both reflection maps and skybox (previously the skybox had to be 6 separate images)
 
-  RenderWindow changes
-  You can now request the hardware to perform linear-to-sRGB colour space conversions for you, before the blending calculation. Use the 'gamma' name-value pair option on creation of a window or the "sRGB Gamma Conversion" render system config option for the auto-window.
 
-  Render to Texture changes
-  You can now enable sRGB conversion on render textures when you create them 
-  Multisample antialiasing is now supported when rendering to textures, specify the number of samples when you create the texture
-  MRTs with different bit depths are now supported if the hardware exposes the facility (check RSC_MRT_DIFFERENT_BIT_DEPTHS)
 
-  Image Changes
-  Ogre can now detect the format of an image without needing a file extension, so you can load data from streams without knowing what file it came from. The Codec system has been expanded to provide support for recognising 'magic' signatures.
 
-  Light changes
-  Lights now have a 'power' value as well as a colour, for HDR lights (defaults to 1.0)
-  Derived light colour auto-params are now factored by the light power
-  Lights can now have their own shadow far distance settings (default is to continue to use the SceneManager global one)
 
-  Animation Changes
-  You can now use 'skeletal blend masks' to simplify the process of combining multiple layered animations to subsets of skeletons, or temporarily masking out the application of predefined animation to given bones (e.g. in order to manually control them). You create & apply these through AnimationState.
-  AnimationTrack::Listener allows you to override interpolation and drive animation procedurally if you wish
 
-  Threading changes
-  OGRE_THREAD_SUPPORT can now take 3 values, 0=no threading, 1=full background loading, 2=semithreading (background preparing). The new option allows you to use a background thread just to perform I/O or calculate data, but for the main thread still to be responsible for dealing with the rendersystem. This means less synchronisation is required (since the rendersystem can still run without any threading protection) and thus there are fewer overheads involved in using background loading, at the expense of a slightly more complicated setup.
 
-  Renderable changes
-  Added preRender and postRender methods that let you further customise the render operations that are performed by a specific Renderable
 
-   Archive changes
-  Added Archive::getModifiedTime to allow you to query for file changes
 
-  Camera changes
-  Camera now has an optional 'LOD Camera' which can be used to make LOD decisions based on a different camera
 
-  Shadow changes
-  Texture shadows now base LOD on the main view's camera, not on the shadow camera
-  Multiple textures per light are now supported, allowing techniques such as Parallel Split Shadow Maps, Dual-parabaloid Shadow Maps and Cubic Shadow Maps to be implemented
-  Implementation of Parallel Split Shadow Maps (PSSM) is included, use the new class PSSMShadowCameraSetup. Integrated shadows are required since shaders are required to pick the appropriate shadow map. See PlayPen::testTextureShadowsIntegratedPSSM for an example.
 
-  Geometry shader support
-  Currently supported in OpenGL only (until Dx10 renderer complete)
-  ParticleGS and IsoSurf demos added
-  RenderToVertexBuffer support also added
 
-  Memory management changes
-  Custom allocators now supported
-  New debug memory tracker for tracking memory usage by pool, and identifying leaks
 
        Changes since 1.6.0RC1
    
        - Native VC9 (2008) projects added
- Correctly deal with decompressing DXT data that is less than 4 pixels in width/height
- Fix assertion bug when mesh does not contain any UV
- Added missing virtual destructors to new script compiler classes, fixes memory leak
- Added PCZ plugins to SDK build script
- Make LOD camera position available to shaders (lod_camera_position)
- Fix passless technique handling in OgreEntity.cpp
- Various GLX Config Dialog fixes
- Add void* cast to deallocateBytes call to guarantee compatibility; this fixes luabind+ogre
            compile error for example
- Safety change - don't assume that shadow texture cameras and shadow texture list
            is entirely in sync, in case an exception has made this temporarily not the case
            before shutdown
- Simple ease-in, ease-out for camera motion in samples
- Fixed new script compiler not respecting the 'gamma' option to the texture directive
            (hardware sRGB conversion on sample)
- Make sure colour depth doesn't exceed desktop on GL/Win32/Windowed
- gcc 4.3 deprecated the ext/hash_map and ext/hash_set includes. Now backward/hash_map
            and backward/hash_set.
- When using manual LOD on an Entity and attaching an object to a bone, still use
            that attached object on lower detail versions. If a lower detail skeleton is being
            used though and the bone that the child object is attached to no longer exists,
            don't display the object.
- Expose the ability to turn off shadows in a compositor in script
- Fix for "No Contacts Requested" bug in ReferenceApp
- Bugfix for segfault in Root::loadPlugins() when empty plugin directory specified
- Fix wave_xform and scaling factors.
- Allow Animation to change lengths, useful for editors; just document caveats.
- Remove all 'using namespace OIS' directives, since OIS has a Vector3 now so it can
            be ambiguous, better to refer to external project explicitly
- When increasing the number of shadow textures, use the settings from the end of
            the list if it is not empty. This avoids confusion when a user for example sets
            the size or format first, then increases the count.
- OctreeSceneManager should be checking for duplicates in createCamera like the other
            SMs
- texture_source now supported in new script compilers
- Add missing ColourValue::getHSB method
- Const fixes to Polygon, and adding missing obvious method (isPointInside)
- Deal with D3D9 lost device condition where a texture is no longer contained in the
            TextureManager resource list, but still exists through some other shared pointer
            reference. Previously these were not released / restored (if in the default pool)
            and could cause a failure to restore the device, they now are dealt with properly.
- Normalise rotation quaternions to eliminate the progressive drift which can happen
            in some cases (resulting in skewed matrices)
- Fix a bug in the new compositor script compiler - the 'clear' and 'stencil' passes
            are supposed to pick up their settings (buffers, colour_value etc) from nested sections,
            not attributes directly under the pass. Added new translators to handle these nested
            areas and moved the attribute parsing into them. This fixes bad parsing of compositors
            with custom clear / stencil settings that used to work in 1.4.
- Fix transposed matrix parsing in new script compiler; affected 'transform' attribute
            in texture_unit and also shader parameters expressed as a matrix in script. Addressing
            of matrix4 is [row][column] and not [column][row].
- Fix to InstancedGeometry::destroy - clear list
- Change Windows SDK script so that uninstall doesn't remove any new nested folders
            created by the user underneath it.
- Fix compile when using (deprecated) GTK platform
- Patch autotools files for PCZSceneManager and new Samples
- InstancedGeometry should be looking for the best technique, not the first technique
- Fixed Technique::movePass when moving a pass forward
- Camera::getCameraToViewportBoxVolume extra plane generated, also added optional
            far plane inclusion as requested, non interface breaking
- Extra checking in AutoParamDataSource to prevent accidental out of bounds access
            to light arrays
- Protect Pass hash recalculation process from race conditions by adding mutexes to
            cover the change conditions
- Mac/Carbon support for "border" and windowClosing event
- Rename OgreOctree.h in OctreeZone plugin to avoid name clash with existing file
            on OctreeSceneManager plugin. 
- Limit FOV on standard shadow camera setup so it doesn't approach 180 degrees
- Added support for leading '/' in tokens in new script compiler
- NedMalloc now added as an option for faster memory allocation / deallocation
- Fix problem with setting up a controller on a TextureUnitState when one already
            exists (e.g. calling setAnimatedTextureName more than once)
- Slight optimisation to BillboardSet - use Matrix3 instead of Quaternion to orient,
            uses less instructions.
- Default preferred render texture mode to FBO in OS X now - this appears to be working
            just fine in Leopard on my July 2007 MBP.
- Improve LiSPSM quality when camera direction becomes parallel with the light direction
            (scale up the opt adjust factor automatically)
- Fix weird darkening of grass blades in Demo_Grass while camera moves (bug 190)
- Compatibility with libtool 1.6+
- Use forward slashes in q3settings.cfg
- Fixed some gcc warnings & const correctness issues
- XCode & MinGW build fixes
- Documentation fixes
    
    
        v1.4.9 [Eihort] (16 June 2008) - Maintenance Release
    
        - Fix crash on Linux with NVIDIA cards when probing FBO formats
- Fix corrupt mipmaps on NVIDIA with 175.x drivers
- Fix GL clip planes for off-centre objects
 v1.4.8 [Eihort] (10 May 2008) - Maintenance Release
  - Mac OSX: 
    
      - Workaround for a few GL driver bugs on older machines, in
        particular first-gen iMacs and old PPC machines
- Workaround for GLSL vertex attribute aliasing problems. 
 
- Linux: 
    
      - Don\'t use non-conformant GLX visuals.
- Workaround for FBO problem with some Linux NVIDIA 169.x drivers -
        if this fix doesn't work for you, see this
        forum thread for a more drastic temporary workaround. 
 
- Windows: 
    
      - Safety check in D3D9RenderSystem::__SetTextureStageState should
        ignore texture stages above 7. Could cause errors in D3D9 debug mode
        with large numbers of textures.
- Add NOMINMAX declaration to WindowEventUtilities header since it
        includes windows.h - ordering of includes could start complaining
        about std::min/max in other Ogre headers.
- GetModuleHandle calls fixed to deal with debug plugins more
        correctly
 
- Terrain: 
    
      - Allow creation of terrain before any camera/viewport
- Report an exception when terrain isn't found rather than just
        asserting
 
- Fix Maya exporter vertex colours - use packed RGBA instead of
  float4
- Camera::setWindow() fixed
- Fixed FileSystemArchive::exists bug with absolute filenames
- MayaExport ported to OSX, phong materials supported
- Update the manual to list all the new automatically bound GLSL custom
    vertex attributes (those to replace built-ins if you need to use all
    custom attributes to avoid aliasing problems on some drivers)
v1.4.7 [Eihort] (6 March 2008) -
Maintenance Release
  - Mac OS X: 
    
      - Fixed CGL and uint issues when building against the Leopard (10.5)
        SDK
- Carbon and CGL context's now manage the life of the pixel format,
        since this is needed to context share.
- Window destruction and resize fixes. 
- Added in support for WindowEventUtilities to function properly on
        OS X.
- OgreCEGuiRenderer now builds on demand rather than being in the
        dependencies
- Dependencies package updated, OIS version updated & CEGui
        package issue resolved
- Added the Preprocessor Macro NDEBUG to disable assertions in a
        release build
 
- Linux: 
    
      - Add 2 missing headers to Makefile.am so they get installed
        correctly in Linux
- Fix a bootstrap warning - extra characters after backslash
- Fix problem where configure wasn't completing because of a spurious
        tab character
 
- GL: 
    
      - Remove call to _setCullingMode in GLRenderSystem::initialise - no
        reason for it to be there and if an auto-window was not used it could
        cause GL functions to be called before a window & context were
        available.
- GL bugfix: unbind vertex / fragment programs at the end of a frame.
        This avoids having pointers to these programs stored when they could
        potentially be removed from the resource manager, e.g. during
        shutdown.
 
- D3D9: 
    
      - D3D9: Avoid setting texture transform flags if a vertex program is
        bound - this could cause a crash if a user incorrectly set a
        fixed-function transform on a shader-based material.
 
- Fix SceneManager::findLightsAffectingFrustum bug; directional lights
    should have been assigned a zero tempSquaredDist. This could lead to
    discrepancies between the documented behaviour of shadow texture ordering
    and the results.
- Prevent any unnecessary rendering where iterate_once_per_light doesn't
    find any lights of the right type to iterate over
- Unregister Entity from Mesh listener list when destroying. Also
    reorganise background loading event - queue the event, not the event and
    listeners, since listeners may get destroyed & removed in between the
    event getting queued and fired.
- Fix Math::intersects ray/convex list of planes
- Initialise Entity::mHardwarePoseCount properly
- SceneManager::setShadowTextureCasterMaterial and
    setShadowTextureReceiverMaterial should cope with cases where there is no
    supported technique gracefully
- Copy main camera FOV to reflection camera in Demo_RenderToTexture
    example; some people have changed the FOV and then wondered why they get
    arefacts.
- FreeImage codec - make it drop alpha & downgrade to 24 bit if the
    format doesn't support 32-bit.
- Allow OverlayElement::setMaterialName to accept a blank name and thus
    to reset the material to nothing, to return it to the original state of
    not rendering.
- Fix movement speed for high frame rates in example framework
- Make Node::getRenderOperation() more robust under resource reloading
    situations. Lower performance, but this is only a debug routine anyway so
    robustness is better.
- Correct compositor script syntax - 'target_output' should allow all the
    same options as 'target'
- Win32 Ogre::Timer: now sorts out proper use of system cores
- Fix MemoryDataStream leaving garbage on unexpectedly short read
- Make SceneManager::setSkyBox tolerant of materials with no supported
    technique or incorrectly constructed with no passes or no texture
  units.
- Fix a rather obscure bug with compositor chains attached to viewports
    which get destroyed and later recreated
- Allow objects in render queues between RENDER_QUEUE_OVERLAY and
    RENDER_QUEUE_MAX to function correctly with compositors
- XMLConverter resilience fixes
- Minor doc corrections
v1.4.6 [Eihort] (28 December 2007) -
Maintenance Release
  - DirectX9: 
    
      - Fix a bug when using fixed-function texture blending with manual
        source values. It only occurred when you used a manual colour as
        source2 and a manual alpha value as source2, together.
- Fix a bug with compositors where the sequence {1. device lost 2.
        compositor disable/enable 3. device restore} would result in
        corrupted compositor resources.
 
- OpenGL: 
    
      - Fix a DXT compression problem on Apple / Intel GMA machines.
- Deal more gracefully with gluErrorString returning null; really
        shouldn't for a valid GL error code but FireGL has been shown to do
      so
- Workaround for nvidia
        169.x GLSL driver bug resulting in "Bad scope in
        ConvertLocalReferences()" in HDR compositor
 
- Dependency updates: 
    
      - Freetype 2.3.5
- Cg 2.0
- FreeImage 3.10.0
 
- Fix Animation::clone exception in Visual Studio 8 (release mode)
- Cg & HLSL: Fix bug with unload / reload if a compile error was
    encountered
- Fix a potential deadlocking issue between HardwareBufferManager
    allocateVertexBufferCopy and _notifyVertexBufferDestroyed, order the
    locks the same way to avoid
- Make resource listener list threadsafe
- Shadows: 
    
      - Fix divergent behaviour in focused / LiSPSM shadows between debug
        and release.
- Fixed edge case issues with focussed shadow camera setup: up dir
        should be camera up dir; deal with zero vector
 
- Added setDebugOutputEnabled function to Log class
- Add missing format initializer in Ogre::Image
- Fix bounding box updates wh en background loading entity
- Fix bug with TextAreaOverlayElement GMM_RELATIVE_ASPECT_ADJUSTED
- Fix TerrainRenderable::_calculateNormals
- Fix RibbonTrail::removeNode preserving associated ChainSegments
- Link zlib[d].lib in static builds, avoid problem when referenced
    externally
- GLX: Move restoration of desktop resolution from GLXWindow destructor
    to destroy() method, should be symmetric with create
- gcc 4.3 fix - needs C stdlib includes explicitly now where used
- TextureUnitState: 
    
      - Fix changing from animated texture to cubic texture (was still
        trying to be animated)
- Fix inability to combine fixed-function x and y transform
      animations
 
- XSI exporter: 
    
      - Fix bug when using advanced rigs - 'RemoveAllAnimation' actually
        isn't necessary any more
- Several usability enhancements suggested by artists
 
- Mesh::suggestTangentVectorBuildParams() exception condition - If you
    have more than one submesh and you find existing tangents in the mesh,
    avoid throwing an exception because of mismatching targets
- Maya exporter: 
    
      - Use correct Eihort default for tangent generation ie
      VES_TANGENT
- Enable the GUI option to switch between texcoord and tangent
        semantics when building tangents
- Put debug & release plugins in consistent location
 
- BSP support: 
    
      - Fix use of BSP geometry with compositors
- Security fix (buffer overrun) for BSPSceneManager
 
- Various documentation corrections and code tidy ups
v1.4.5 [Eihort] (29 September 2007) -
Maintenance Release
  - D3D: 
    
      - Fix checking of capabilities in D3D when selecting non-default
        device
- Fix HLSL preprocessor_defines in edge cases such as ending string
        with a ';' and empty clauses
 
- GL: 
    
      - Ensure that GL RTTs generate a unique render target name in all
        cases, don't make it deterministic based on the texture name. This
        resolves an issue when if you removed a RTT but did not cause it to
        be destroyed, then created a new RTT with the same name, the render
        targets would have the same name and there would be issues with
        destroying them.
- Fix isFullScreen reporting in GLXWindow (was using own member
        variable)
 
- OS X: 
    
      - Frameworks reorganisation - now we default to embedding all
        frameworks in the .app to support drag & drop install of
        applications in the traditional OS X way
- No longer expect frameworks in /Library/Frameworks, and don't copy
        Ogre.framework there after building - link dependency frameworks from
        Dependencies/ now (deps archive reorganised)
- After building all samples, symlink all frameworks into
        Foo.app/Contents/Frameworks. This means we don't have to duplicate
        them but the app is still self-contained. Real apps would genuinely
        copy of course.
- Enable stripping on release builds to see if that makes them
      smaller
- Fix SDK sample project so it only tries to build the included
        architecture.
- Specify a local PCH directory rather than the default shared
        directory, which causes problems if you use multiple branches of the
        same project.
 
- Linux: 
    
      - Fix "make distclean" problems
 
- Fix for random crashing in some cases when using /fp:fast and certain
    combinations of renderer / debug & release settings
- Prevent an std::advance overrun in SceneManager::renderSingleObject
    when using start_light, and max_simultaneous_lights would run off the end
    of the light list.
- When using additive stencil shadows, the 'only for light type' pass
    iteration option was not being respected. Every iteration once_per_light
    pass was being executed no matter what.
- Fix problem with light_direction_object_space when using non-uniform
    scaling.
- All light_direction_* auto params now have 0 in the w component to make
    them safe to transform in shaders by 4x4 matrices with translations
- In focused texture shadow camera setups (e.g. uniform focused or
    LiSPSM), truncate the scene AABB by the plane formed by the shadow far
    distance. This allows much tighter focus regions and thus better shadow
    quality in sprawling scenes.
- Fix a minor bug where the shadow camera lists were not updated in some
    variants of destroyCamera
- Compositor scripts: fix grammar bug that prevented multiple techniques
    from being defined.
- Fix to Plane::projectVector in some cases
- Use std::istringstream in StringConverter::parseUnsignedInt for direct
    correlation with toString and std::ostringstream outputs. Could cause
    some problems in other locales with non-symmetric behaviour.
- Grass demo shader - make grass waving based on UV not absolute Y so
    people can move the grass if they want
- Fix segfault when logging a FreeImage error that returns null for
    FreeImage_GetFormatFromFIF
- Root::initialisePlugins should iterate in forward order of plugins, not
    reverse (looks like bad copy & paste from shutdownPlugins)
- Fix ResourceGroupManager potential deadlock
- Fix FileHandleDataStream::read, was returning incorrect counts (and is
    never used in core OGRE, hence why missed)
- Fixed build when memory manager is turned on (default is off now)
- Documentation updates
v1.4.4 [Eihort] (20 August 2007) -
Maintenance Release
  - GL: 
    
      - Fix small buffer overrun in mTextureCoordIndex - should be as
        largeas the max number of texture units, not max number of texture
        coord sets
- Optimise setting of texture coords in fixed-function mode
      slightly
- Call ReleaseDC in Win32Window::destroy when window is external,
        since CS_OWNDC won't handle it
- Fix buffer overrun when writing contents of a window to a file
        whose width is not 4-byte aligned
 
- DirectX: 
    
      - Support NVPerfHUD 5
- Fix some potential problems when switching between fullscreen and
        windowed mode
 
- OS X: 
    
      - Build changes: make Ogre and Samples projects build into the same
        folder structure. This allows us to reference the Ogre framework
        relative to the build folder and not in /Library/Frameworks, this
        means we can have more than one major version of Ogre & samples
        building independently.
- SDK build scripts created, now generate a DMG
- Ocean and Compositor demos now work on OS X
 
- StaticGeometry now deals with non-uniform scaling of normals
- StaticGeometry should transform VES_TANGENT and VES_BINORMAL elements
    in the same way as VES_NORMAL.
- Override OctreeNode::removeAllChildren so that it updates the
  octree.
- Fix a potential crash & inaccurate visibility masks if a viewport
    was removed directly after rendering to it.
- Compositors now carry more viewport options across to the automatic
    'original scene' compositor: 'shadows enabled' and 'material scheme'
- For bitmap font definitions, support definition of the glyph as a
    unicode decimal as well as a single character
- Fix a params bug with assembler shader usage, when using the same
    assembler shader twice
- RibbonTrail now behaves better when jumping large distances (high speed
    or low framerate)
- AxisAlignedBox::transform should setNull() before merging transformed
    points back in.
- Fixed stack overflow when calling Node::_getDeribed* in
    MovableObject::_notifyMoved() callback
- Remove assert when trying to derive parameters from Cg program that
    fails compilation, just derive no parameter names instead
- Add optional listener parameter to ResourceBackgroundQueue 'unload'
    methods - both for consistency and also to prevent garbage listener
    pointer problems
- A couple of safety checks in animation tracks to check for null
  pointers
- Don't create 2 logs in MeshUpgrader, and error handling improved in
    XMLConverter and MeshUpgrader
- SkeletonSerializer internal methods now protected, not private, to
    allow extending
- Deal with display colour depth changes in windowed mode under
  Windows
- Linux pkg-config fix: package defined as OGRE not ogre
- Linux SSE check - only enable SSE on recognised platforms instead of
    turning off for just powerpc
- Fix some lesser-used 64-bit based architectures: ppc64, alpha, ia64,
    s390
- Add support for compilation on mips architectures.
- Add support for intel compiler
- Compatibility with Doxygen 1.5.x
- Compatibility with VS9 beta compilation
v1.4.3 [Eihort] (8 July 2007) -
Maintenance Release
  - GL: 
    
      - Fix returning to fixed-function pipeline after using programmable
        pipeline with more than fixed-function (8) texture units
- Don't delete externally created windows in GLX renderer
- Allow a Win32 GL window to use an externally created GL context
 
- D3D9: 
    
      - Fixed loading of DXT compressed data manually from memory instead
        of .dds files in D3D
- Fix a leak / potential crash when manually shutting down and
        reinitialising
- Only reset window size when necessary, when going between
        fullscreen and windowed modes
- Precompiled SDK built again with 2004 DirectX SDK for max
        compatibility
 
- Change MRT surface restriction to 'same bit depth' not 'same pixel
    format'. This is the actual restriction that the majority of cards
    enforce, save the latest (e.g. 8800) 
- Fix max_lights in non light-iteration cases, was being ignored
    previously which could cause some issues with other processing of light
    lists
- Fix Math::intersects (sphere / plane) - was missing the 'd' component
    Fix Math::intersects (sphere / aabb) - use Arvo's algorithm Neither of
    these methods were called in the Ogre code which is why they were
  missed.
- Add Compositor to VC2005 SDK samples project, was missing.
- Fix SharedPtr bug in operator= when rhs and lhs are interdependent
    (e.g. one holding a pointer to the other)
- Allow OGRE_EXCEPT to be overridden if predefined
- Node::Listener is now called after all derived implementations of
    _updateFromParent, this fixes some issues with generating a RibbonTrail
    from a TagPoint
- Fix failure in vertex pose animation when subentities are made
  invisible
- Define maximum render queue ID more explicitly and assert against it to
    avoid issues with compositors if this is exceeded by user code
- Fix an animation blending problem on some skeleton set ups. This should
    resolve the problems some people were getting when using non-unit
    weighting on multiple active animations. Would not have affected many
    skeletons, depends on the exporter.
- Fixed incorrect fading of modulative texture spotlight shadows when
    using custom shadow projection systems
- Font now correcly removes everything it creates allowing it to be
    reloaded at runtime
- Prevented continuous (every frame) retry of texture loading when it
    fails, now only retries when something changes
- Bug fix for auto params light_direction_view_space_array and
    light_direction_object_space_array
- Fixed uncallable operator= of ConstMapIterator
- A few const correctness / warning fixes.
v1.4.2 [Eihort] (10 June 2007) -
Maintenance Release
  - GL: 
    
      - Restore old GL context instead of setting it to null during
        initialisation and context cloning, helps with systems managing their
        own contexts
- When uploading from scratch to real buffer, should only discard
        whole buffer if the entire buffer was locked.
- Scratch buffer optimisations temporarily disabled in Linux and OSX
        since they appear to still be having issues with them, Win32 is
      fine.
- Support arrays of sampler uniforms in GLSL
 
- D3D9: Use D3DPOOL_SYSTEMMEM for temp surface when going down the
    GetRenderTargetData path since that's a requirement and complained on
    some drivers. 
- Fix a versioning issue on Linux, bumpversion script was missing
    AM_INIT_AUTOMAKE due to typo
- Fix texture clamping on non-integrated custom shadow receiver
  materials
- Fix Vector3::perpendicular for base vectors near UNIT_X
- Rewrite Frustum::projectSphere so it is more accurate, now correctly
    solves quadratic instead of using inaccurate shortcut.
- Fix bug in XML converter when reading poses that used 'mesh' as a
  target
- Fix MaterialSerializer exporting of mipmap count
- XML mesh conversion now handles incorrect XML vertex/face count cleanly
    instead of overrunning
- Fix multiple index buffer locking bugs in StaticGeometry and
    InstancedGeometry, was causing underrun buffer corruptions in GL
- Cope cleanly with GpuProgramParameters::mNamedConstants not having been
    initialised, mostly likely because of a compile error
- Add the ability to switch between fullscreen mode and windowed mode on
    the fly, and to switch fullscreen modes, without recreating a window.
    Windows only implementation for the moment, still waiting for GLX and OSX
    versions.
- Fix off-by-one error when writing a GLX window contents to disk, had
    already been fixed in Win32Window.
- Fix some light_direction_object/view_space GPU parameters. Should make
    sure we extract 3x3 matrix to avoid accidentally factoring in
    translations. Also standardise the _array versions of the same.
- Support up to 16 textures properly in programmable pipeline, instead of
    maxing out at fixed-function limits.
- Fix a crash caused by a Resource being created during bulk-loading of a
    resource group, with a different group (e.g. the autodetect group).
- Water materials that use scene_blend should have depth_write off
- Compositor fixes: 
    
      - Detect when visibility mask is varied on the viewport for the
        implied 'original scene' and recompile
- Assign the new values of vis mask and background settings to the
        compositor to stop repeated compilations after one change
      detected
- Fix compositor demo closing when you ALT-TAB away from it
 
- Fix use of GPU parameters in SceneManager::manualRender
v1.4.1 [Eihort] (6 May 2007) - Maintenance
Release
  - Linux support for GLX 1.2 and earlier re-established. Patch which
    enhanced GLX support but was reliant on GLX 1.3 has been rolled back.
- Allow Linux configure to choose to use DevIL again if wished, to avoid
    conflicts of FreeImage's modified image libraries & system libs.
- Fix autotool detection of FreeImage
- Fix assert in debug mode with custom projections (e.g. focused or
    LiSPSM shadows) caused by constructing an invalid AABB
- MemoryManager::dllocMem should early-out for null pointers to conform
    to standards
- Fix theoretical problem with Ray/AABB intersection - if origin was
    precisely on the boundary of an AABB plane it wouldn't be classed as
    'inside' but would also would not test whether the ray was heading
    towards the box.
- Don't set logical / physical param maps for GLSL, as GLSL isn't
    supposed to access parameters by logical index, so try to do that will
    throw exception rather than some undefined behavior now.
- Global namespace uniforms supported in Cg
- Fix cracks in TerrainSceneManager vertex morph program in GL/ATI. Was
    caused by different interpretation of ARB_vertex_program by ATI
  drivers.
- Registration and deregistration of high level gpu program factories
    tightened up, they're only registered if supportable now so easier to
    determine high-level support. Were originally registered early to try to
    reduce errors in using cross-platform media but this has been addressed
    via null programs now.
- Resolved some ALT-key issues in default window loop
- Fixed directional lights inverted when using focused & LiSPSM
    shadows
- Fixed opening GLX window on displays > 0
- Fix OpenGL fullscreen refresh rate in Win32 (GLX ok)
- Fix use of ACT_TEXTURE_VIEWPROJ_MATRIX with custom projectors (not
    texture shadows)
- Fix problems with compositor removing a viewport listener in the middle
    of the viewport listener callbacks - only shows up if there is more than
    one listener.
- Allow arbitrary D3D window size in auto created window (in windowed
    mode), was previously only allowed in manually created windows)
- More gracefully handle trying to build edge lists on meshes which have
    line / point geometry in them. Make sure we create no edge list when
    there is no triangle data, and allow meshes with mixed operation types by
    only including the triangle data submeshes in the edge list
- Fix to make StringConverter::parseXxxx correctly return zero when given
    garbage
- GCC visibility fixes (python-ogre compatibility)
- Compositors are now correctly created in the resource group their
    script was parsed from
- MeshSerializerImpl::writeSubMeshExtremes bugfix
- Improvement to FileName splitting functions
- AxisAlignedBox::getCorner method const correctness
- Documented the 'emitted emitters' feature
- Remove manual setting of light state in TerrainSceneManager
- Updated GLX config dialog backdrop
v1.4.0 Final [Eihort] (25 March 2007) -
Major Release
Please see the RC1 notes below for the
major changes in the 1.4.0 release, this section just details the changes
since RC2:
  - OpenGL: 
    
      - Significant speed improvements for dynamic VBOs -
        glMapBuffer/glUnmapBuffer is now only used for total buffer
        replacement or large sub-buffer changes; smaller partial updates use
        a CPU scratch buffer area and glBufferSubData which can be much
        faster. Also eliminated some redundant copying when using shadow
        buffers
- Fix a problem with bleeding of vertex colour tracking state in GL
        rendersystem.
- Use a smaller buffer size when testing FBO formats to reduce
        overhead
- Correct GeForce 6200 profile, doesn't support floating-point
        texture filtering, as stated in NV documents
- Fixed PBuffer check for whether main context is usable - copy/paste
        error compared width with height
- Fixed line ending detection in GLSL uniform parsing, was causing
        problems with *nix line-endings
- GLDefaultHardwareVertexBuffer now allocates aligned memory
- Made GLTextureBuffer destructor safe even if failed to construct
        render-targets for some reason
- Don't use FBO method to upload texture from memory if either source
        or target pixel format is luminance, seems never supported by
        hardware.
- Upload texture from memory with FBO should take extra care with
        source image rowPitch/slicePitch (e.g. nonconsecutive image).
 
- D3D9: 
    
      - Fall back to TAM_CLAMP and eliminate D3D debug run-time error if
        TAM_BORDER not supported by hardware
- Fixed potential double-release in
        D3D9HardwarePixelBuffer::blitToMemory if fast GetRenderTargetData
        fails
 
- OSX: 
    
      - Updated the Xcode project by changing any header listed as project,
        or private, to public.
- Fixed the header referencing to be compatible with Xcode's
        framework system. 
          This means that Ogre should be fully ready to be
        released as a stand alone binary, and it will use the headers in the
        framework instead of needing an extra copy of the source around
- Added Crowd and Instancing demos
- The Tools Xcode projects have been updated against the latest
        Ogre.framework
- ExampleApplication relative path fix
 
- Linux: 
    
      - Fix automake detection beyond version 1.9
- Fix GLX crash when building the config dialog image in debug
      mode
- Generally improved the GLX driver functionality
- Allow gcc 4.x builds to take advantage of visibility attribute to
        reduce plugin
          size a bit.  Works for MinGW and linux gcc >=
      4.0.
- Fix detection of X11 paths for 64bit systems
 
- Fix instancing demo crash (should have reduced the mesh count when
    removing cube.mesh)
- Fixed and unusual situation with auto-organised buffers where there
    was unexpected blend weights/indices in vertex data
- Hardware skinning examples: 
    
      - have GLSL and Cg vertex two weight skinners share the same default
        parameters.
- added GLSL vertex skinner two weight shadow caster
- added unified vertex program for skinner two weight shadow
      casters
- used matrix multiply instead of individual dot products in GLSL
        to improve performance on ATI cards
 
- Fix use of UTFString class when using STLport
- Make sure Rectangle2D::setCorners constructs a valid bounding box
- Fixed ATI GLSL lighting problem for instancing demo
- Update deferred shading demo to fix tangent access and explicitly set
    texture coord set. Also disable skies for MRT since skies don't render to
    MRT and nVidia D3D driver refuses to write to MRTs for other objects
    after that's done. Still a few issues with this demo though.
- Code::Blocks: 
    
      - Project updates including adding missing instancing demo
- Linux project for Code::Blocks added
 
- StringConverter::parseBool accepts '1' as true now
- Enclose max/min with parentheses in headers to suppress nasty max/min
    macro substitution if user has a Windows header on their path
- Make static pass dirty list and graveyard threadsafe when threading
    enabled
- Fix bug
    in GpuProgramParameters::_getFloatConstantPhysicalIndex/_getIntConstantPhysicalIndex
    when expanding in middle of the buffer for a logical entry
- Fix CEGui renderer in GL being a bit random with the texture filter
    modes
- Font bugfix - don't restart texture coordinates to (0,0) for each
    code-point range
- Fixed the fact that Entity::_deinitialise() should have been clearing
    the internal lists
- Fixed locale problems with StringConverter::parse* methods - now use
    std::istringstream instead of atof / atoi so they behave consistently
    with StringConverter::toString which uses ostringstream.
- Fixed bug which caused BSP loading not to parse .shader files in
    subfolders
- Fix const-correctness on PixelUtil::packColour and
  Bitwise::intWrite
- TextAreaOverlayElement - needed to reduce the vertex count twice for
    CR/LF
- Fixed Pass max_lights in per-light or per-n-lights iteration, max
    should apply to the sum of all iterations and not per single
  iteration
- 'shadow_scene_depth_range' auto-binding needed same behavior as
    SceneManager when
      dealing with light list
- Consistency issues with writeContentsToFile fixed:  
    
      - D3D now writes only the client area to the screenshot, no title /
        border (matches GL)
- Fixed 1-pixel border in Win32 GL screenshots caused by off-by-1
        params to glReadPixels
- Used glReadBuffer(GL_FRONT) in fullscreen mode to ensure that the
        latest results are read in cases where single-stepping is done
 
- Minor memory leaks fixed in OgreXmlConverter
- Ensure PixelUtil::getBNFExpressionOfPixelFormats is called after all
    global statics are properly initialised
- Consistency fixes (export and const correctness) for << operators
    in various classes
- Make #ifdef more specific on OgrePrerequisites.h to avoid name
  clashes
- TextureUnitState animated textures - allow resetting of animation
    position
- Default Quaternion::getYaw / getPitch / getRoll to more intuitive
    versions ie the atan2 of the projection of the local axes. Can return to
    the previous version by passing 'false' to the methods.
- Fix Ogre debug calloc macro has incorrect parameter count
- Added access to ManualObject sections after they are created
- Added "hasEnded" method to AnimationState
- Tidied and removed header entries for some previously removed code
- LEXIExporter updated to 1.0.3
- Blender Exporter: 
    
      - added check for empty ipos
 
      - fixed translation key frame values
- documentation updates
 
- XSI Exporter: 
    
      - Fix pose animations for objects not at the origin
 
v1.4.0 RC2 [Eihort] (4 March 2007) - Major
Release
Please see the RC1 notes below for the major changes in
the 1.4.0 release, this section just details the changes since RC1:
  - Mac OSX build updated (also dependencies, please download the updated
    package), including bugfixes to Carbon window
- Code::Blocks / MingW build updated (can now be built with MingW gcc 4.x
    + Mingw C++ Toolbox)
- Octree plugin: 
    
      - OctreeCamera and OctreeNode now exported
 
      - Now supports infinite bounding boxes if present
- Uses the Camera's linked cull frustum instead of its own custom
        CullCamera option
 
- Fix texture directive in material scripts when all 5 parameters are
    used (should be allowed)
- XSI 6 exporter
- MeshUpgrader now has a 'Regenerate bounding box' option for people
    having problems with incorrect bounds on meshes
- Workaround for ATI driver bug causing crash on GLSL compilation with
    skinning shader
- Workaround for GLSL drivers (ATI) that report array uniforms
  incorrectly
- Updated to latest version of TinyXML for XMLConverter
- Fixed codec support for 16-bit RGB(A) formats
- Added warning when a skinned mesh has vertices not assigned to any
  bones
- Unicode fixes for MingW
- Bugfix for when the "original scene" compositor instance is not
    guaranteed to be valid
- Added const version of SceneManager::getMovableObjectCollection
- Config file save/load moved out of config dialogs to common area
- Fix For "parentWindowHandle" with GLX
- Instancing demo: Fix selection of ogrehead.mesh in Linux / OSX
- Fixed D3D9HardwareOcclusionQuery::isStillOutstanding - should not have
    been using D3DGETDATA_FLUSH flag
- Fix assert when using custom per-renderable GPU parameters with GLSL
    params smaller than 4 floats (DeferredShading).  
- Eliminated GL MRT shader warning: global variable gl_FragData requires
    "#extension GL_ARB_draw_buffers : enable" before use.
- Make ResourceManager::getMemoryUsage public
- Improve compositor demo / sharpen edges shader support on lower-end ATI
    cards
- Add non-const versions of GpuProgramParameters::getFloatPointer and
    getIntPointer
- Add destructor implementation for ErrorDialog in Win32
- Add SceneManager::get/setQueuedRenderableVisitor so users can hook into
    low-level rendering behaviour if they want to
- Fix rather obscure issue with glDrawBuffer / glReadBuffer not getting
    reset in some cases of external GL control
- Fixed problem with attaching a Light instance to a bone
- Fixed / suppressed some warnings 
- Small optimisations and tidy ups
- Minor documentation updates  
v1.4.0 RC1 [Eihort]
(11 February 2007) - Major Release
Below are listed the most significant changes in the Eihort release over the
previous stable version. This isn't quite everything, please look at theEihort Notes for more details, and also for advice on how
to upgrade your applications from Dagon to Eihort.
Enhancements since the Dagon branch:
  - SSE/SSE2/SIMD improves
    performance in several areas 
    
    
      - Batch concatenation of affine matrices
- Shadow volume routines
- Aligned memory allocator & CPUID detection
 
- Shader enhancements 
    
      - Parameter system rewritten and enhanced, particularly improves
        support for GLSL arrays but also allows more optimal parameter
        binding and more efficient memory usage
- preprocessor_definitions
        option supported in HLSL/GLSL to create variant shaders based on same
        source (Cg already supported this through compile_arguments
      param)
- column_major_matrices option in HLSL to alolow you to pack
        parameters differently
- 'unified' program definitions allow you to use one program as an
        alias for others for simpler cross-platform support
- GLSL 1.2 (GL 2.1) supported allowing non-square matrices
- GLSL now binds tangent, binormal, blendWeights and blendIndices to
        extended attributes (see the manual)
- Added many new auto-bindings including: 
        
          - spotlight_params
- 'array' versions of light auto-bindings
            (light_position_object_space_array, light_diffuse_colour_array,
            etc)
- Fixed-function surface reflectance passthoughs
            (surface_ambient_colour, surface_diffuse_colour, etc)
- texture_size, inverse_texture_size and packed_texture_size
 
 
- Lighting and shadowing 
    
      - You can now integrate texture shadows directly into your primary
        material pipeline, rather than them being rendered as separate shadow
        receiver passes 
 
      - 'content_type shadow' added to texture unit to auto-bind shadow
        textures into your materials and use them in integrated rendering
- New light iteration parameters to give extra flexibility when doing
        integrated lighting / shadowing - iteration per_n_lights and
        start_light
 
      - More texture shadow projection options through ShadowCameraSetup
        subclasses allow improved fidelity on texture shadows: 
        
          - Plane optimal 
- Uniform focused 
- LiSPSM 
 
 
      - Depth-shadowmapping example, with percentage-closest filtering for
        antialiased, self-shadowing effects using texture shadows 
 
      - Bounding boxes of objects visible from each camera in the last
        frame are now recorded, which can be used to adjust custom shadow
        camera setups. See SceneManager::getVisibilityABBForCam and
        SceneManager::getShadowCastersAABForLight
- Customisable Light Finding 
        
          - Now you can more directly influence how OGRE picks lights to
            use against your renderable objects
- Default is still 'n nearest' but you can alter that to
            prioritise certain lights or any other custom reordering
 
 
- Mesh enhancements 
    
      - Triangles in the edge list now grouped by vertex set - use
        MeshUpgrader to take advantage of performance enhancement, old files
        will still load but suffer a load-time reorganisation cost
- Default placement for tangents is now the tangent semantic rather
        than a texture coord. The latter was used in the past to support SM1
        shaders, and is still an option, but the default is now the SM2
        friendly version
- Submeshes can now have optional 'extremity points' stored with them
        to allow submeshes to be sorted with respect to each other in the
        case of transparency.
 
- Animation 
    
      - Skeleton::_mergeSkeletonAnimations added to merge animations from
        multiple skeletons
- Added option to Skeleton::optimiseAllAnimations which only destroys
        node tracks which have identity keyframes only for all animations.
- Several runtime and memory footprint optimisations  
 
- Math optimisations 
    
      - Added specially optimised functions to dealing with affine
        matrices, allworld / view transformsnow have to
        be affine transforms(they were assumed so before
        anyway).  
 
- Material enhancements 
    
      - mipmap_bias supported on texture_unit
- texture attribute allows you to specify a desired pixel format
        separate from the format of the loaded texture
- depth bias now supports slope-scale biasing as well as fixed
      biasing
- serialising a material is now simpler, there is no need to call
        addConstantDefinition et al to make sure program params are recorded
        for export
- quieter logging when including GPU programs which target a
        rendersystem which is not loaded
- shader compilation errors now dealt with more gracefully
 
- Texture enhancements 
    
      - You can now describe the desired pixel format to be used instead of
        the original image format when loading a texture 
- You can now set the preferred bit depth for integer and float pixel
        formats respectively, for example loading 128-bit float textures as
        64-bit for performance 
 
- Vertex Texture support
  (SM3.0)
- Shader-based Instancing
  (SM2.0+)
- Particle system enhancements 
    
      - Particle System now supports emitted emitters (to create effects
        such as fireworks more realistically). 
- Particle system renderer now has optional callback when particle(s)
        being emitted, moved, expired or cleared.
 
- ManualObject enhancements 
    
      - ManualObject now allows you to update its contents more efficiently
        provided the structure does not alter
- ManualObject can be used to render 2D elements by using an infinite
        AABB and telling it to use identity view and projection matrices
 
- Background loading 
    
      - Queue the loading of resources in a background thread
- Register your own thread or use automatic background queue
      manager
- Simple queued notification callbacks in primary thread so user
        doesn't have to think in a thread-safe manner
- Advanced users can perform other tasks (like scene graph setup) in
        a separate thread if they're careful about locking
 
- Static Linking official support 
    
      - Build targets for linking everything statically into one
        executable, including plugins
- Be aware of LGPL license conditions on derived works, or consider
        the OGRE Unrestricted License
 
- Unicode support on Font and
    Overlays
- WindowEventUtilitiesintroduced 
    
      - Allows subscription to window events on
        auto-created windows
- Allows access to message pump for
        externally created windows
 
 
- RenderWindow::getCustomAttribute and related features unified across
    platforms
- Build / dependency changes:
 
      - Image routines replaced - FreeImage + custom DDS codec now used
- SDL platform removed on
        Linux
 
      - PlatformManager removed, all classes now
        referenced / created direct
 
 
      - Input removed from core, now using OIS in samples
- Windows-specific: 
        
          - All dependencies are now statically linked to OgreMain, no
            dependency DLLs
- All plugins & rendersystems now use the naming convention
            _d for debug
- All library files now found in ogrenew/lib rather than
            distributed in subfolders
 
 
- Exception changes 
    
      - Ogre::Exception now sbuclasses from std::exception and implements
        what() 
 
      - All error codes now result in a separate subclass of
        Ogre::Exception being thrown so you can catch particular types, e.g.
        RenderingAPIException and InvalidParametersException 
 
      - OgreGuard / OgreUnGuard and stack tracing option have been removed
      
 
v1.2.5 [Dagon] (21 January 2007) -
Maintenance Release
Changes since v1.2.4:
  - GL: 
    
      - Cope with GL_COMPRESSED_RGB_S3TC_DXT1_EXT as well
        as GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, OSX in particular seems to
        return the former sometimes even though DXT1 is only one format
-       Test support for GL_EXT_secondary_color before using to avoid
        crashes on very old drivers
 
- D3D9: Use per-texture unit constant storage for cards that support it
    to allow each unit to be more independent like GL. Otherwise using more
    than one manual blend in a pass would override the same value.
- Fix light_direction_object_space and light_direction_view_space
    auto params - should have been using inverse transpose since they are
    directions
- Mesh: Close the log after writing debug edge data log to free up file
    handle
- Animation: Deal with invalid zero-length animations in a friendlier
    fashion (no infinite looping)
- GPU program params: 
    
      - setAutoConstant should check to see if the parameter already has an
        auto, and replace it if so to allow modification of autos without
        endlessly growing list.Add     
          clearAutoConstant to allow the unbinding
        of a single auto constant
- When parsing a manual parameter, unset any auto parameters with the
        same name / index. This solves the problem where overriding an auto
        parameter with a manual one in a subclassed material, or overriding a
        default parameter didn't work.
- Fix ACT_LIGHT_POSITION_VIEW_SPACE - since Light::getAs4DVector
        returns the result in worldspace, should be using just the view
        matrix, not worldview
 
 
- Add SubEntity::getParent
- Octree plugin: 
    
      - OctreeNode::_isIn now deals with growth in object size and bumps
        objects out of the current node when too big
- Fix resize when setting 'Depth' parameter on OctreeSceneManager
 
- Terrain: 
    
      - Terrain renderable bounding radius should use half length of the
        diagonal instead of maximise half length of edge of the bounding
      box.
- When calculating scale of terrain, should use pagesize - 1 since
        pagesize refers
          to the number of vertices; physical size is one
      less.
 
- Fix Billboard origins BBO_TOP_* and BBO_BOTTOM_* , were inverted
- Fix getCameraToViewportRay again, wasn't quite right for ortho / custom
    matrices
- Force update of animation after reevaluating vertex processing, to cope
    with potential switching between hardware/software at unusual times
- Make CompositorChain::_compile public so that expert users
    can precompile chains if they want to. Also some compositor compile
    optmisations.
- Don't try to load a HighLevelGpuProgram if it is not supported - bulk
    loading all
      resources in a group could cause this to fail if the shader
    isfor an unsupported system 
- Fixed automatic setting of texture alias names when adding a new
    unnamed texture unit to a pass and then naming it
- Compiler2Pass: testNextTokenID() did not allow testing of the last
    token in the que. Also fixed some problems parsing off the end of the
    source in pass 1.
- Overlays: 
    
      - Overlay::setZOrder should maintain the same zorder multiple as
        Overlay::add2D on children  
 
      - Fix another potential overlay teardown order problem - elements
        should tell their parents when they are destroyed.
 
- Change 'time' to 'time_0_1' in Fresnel shader to try to prevent
    precision errors
      when run for a very long time
- Fixed some Code::Blocks project dependencies for some projects. Updated
    to latest Code::Blocks project format.
- Enable the FAT32 manifest workaround to prevent random manifest errors
    when building on a FAT32 drive - seems to especially be a problem on
    VS2005 SP1
- Fix a small constants overrun in
  GpuProgramParameters::copyConstantsFrom
- Fix /RTCc compatibility in ColourValue
- Small const correctness and tidy ups
- Various documentation corrections
 
v1.2.4 [Dagon] (12 November 2006) -
Maintenance Release
Changes since v1.2.3:
  - DirectX9: 
    
      - Eliminated setting of texture transform to D3D device if texture
        transforms are disabled, since D3D texture coordinate processing will
        ignore it  
- If "Full Screen" or "Video Mode" configuration option missing when
        creating an auto D3D window, should throw exception correctly
- D3D9RenderSystem::setVertexBufferBinding now dealing with gaps
        in vertex buffer bindings correctly, could manifest iteself as
        problems if entities created before shadow type picked (generally not
        recommended anyway)
- Correctly report support for non-POW2 textures in D3D9, and
        also detect 'limited' support option which many cards have (no mips
        etc). Flag was not used in Ogre since POW2 issues are dealt with
        another way but external apps might be checking it.
- Fix divide by zero when locking DXT compressed textures
 
- OpenGL: 
    
      - Buffers which had temporary blend copies were not forcibly
        destroying those buffer copies when the original was destroyed,
        leading to wasted memory that was only recovered when using more
        general shutdown methods
- Full screen antialiasing (FSAA) now supported for Win32/GL even if
        in 16bpp display mode
- GLSL now correctly populating GL_SAMPLER_2D_RECT and
        GL_SAMPLER_2D_RECT_SHADOW type
          uniforms
- Detect FBO depth/stencil formats a little more robustly
- Ensure GLSL programs are properly unbound when the next program
        bound is a different type
- Check for existence of wglSwapIntervalEXT before trying to use it,
        fixes crash on
          very old drivers
- Hardware pixel buffer locking fix - was only downloading the buffer
        when locked read-only, now downloads provided the discard lock option
        isn't used and the texture was not created write-only
- Hardware pixel buffer unlocking optimisation - don't upload the
        buffer if the original
          lock mode was read only
 
- Shadows: 
    
      - Should disable fogging explicitly for shadow receiver pass if using
        additive texture shadows, since fogging state might otherwise leak
        from a previous modulative mode
- Fix memory growth issue with stencil shadows when destroying and
        recreating entities - EntityShadowRenderable was creating vertex
        buffer binding and vertex declarations itself when they were
        already being created by VertexData
 
- Materials: 
    
      - Material::getNumLodLevels should fall back on first scheme if
        scheme is not defined for this material
- Fixed incorrect auto gpu program parameters:
        inverse_transpose_view_matrix, inverse_transpose_world_matrix
        and inverse_transpose_worldview_matrix
 
- Node: Fix missing calls to Node::Listener if user causes transformation
    derivation to happen earlier than regular Node::update()
- Fix reinitialisation of auto windows after Root::shutdown
- BillboardChain::clearChain should notify index dirty and update
  bounds.
- RibbonTrail: 
    
      - setMaxChainElements, setNumberOfChains should reset all trails
        to initial state if there have tracked node.   
- setNumberOfChains should not allow changing the number of chains to
        less than number of tracking nodes.  
- Overridden clearChain to reset trail to initial state if it has a
        tracked node.
 
- Mesh: 
    
      - Fixed an assert that would be raised when trying to lock an already
        locked buffer when buildTangentVectors is called on a skeleton
        animated mesh with no edge list built.
 
- Overlay: 
    
      - Fix copying of nested overlay container elements from template
- Fix incorrect static_cast<unsigned> instances in
        BorderPanelOverlayElement which caused problems with some metrics
- On destruction of a root overlay container, remove from parent
        overlay to avoid
          dangling bad reference
 
- Quaternion: Fixed shortest path slerp bug, also use lerp rather than
    just return first quaternion in case two quaternions are very close.
- OctreeSceneManager: detect mOctree deletion during shutdown if
    callbacks from nodes being destroyed hit OctreeSceneManager methods,
    fixes some rare shutdown issues
- TerrainSceneManager:  Fix terrain reloading         problems (setWorldGeometry
    called more than once)
- Pass: dirty pass hashes immediately on change rather than on load. If
    pass is loaded on demand as part of queueing an object for rendering, and
    the pass had previously been rendered, the pass hash would be dirtied too
    late for it to be corrected (since the hash is recalculated when the
    queue is cleared, which has already happened), leading to a hash
    discrepancy
- Fix small memory growth issue when destroying and recreating
    StaticGeometry and ManualObject
- PixelFormat: PF_UNKNOWN should be marked as inaccessible from
    PixelUtil::isAccessible
- Removed MemoryManager::instance() from MemoryManager methods being used
    inside non-static MemoryManager methods
- Profiler: Init hierarchicalLvl earlier so that it is valid when used by
    intermediate code
- BillboardSet::mBoundingRadius now initialised correctly
- Normalise result of Vector3::getRotationTo to protect against
    variations in extreme
      cases
- MaterialSerializer: Serialise number of mips and alpha-only option on
    texture_unit 'texture' attributes
- AnimationTrack: Ensure the result for zero-weight and trackless
    animations is the same, caused incorrect blending if mixed
- HDR compositor scene HDR rendering pass should use "input none",
    and suppressed warning that attempt to render queue 5 before 96.
- Entity: 
    
      - shareSkeletonInstanceWith should not delete sharing prepared temp
        blend buffers
- Stop sharing skeleton instance during entity destroy and there is
        only one entity sharing the skeleton
- Don't re-prepare temp blend buffers when stopping sharing skeleton
        instance, it's unnecessary in this case
 
- Fix Camera::getCameraToViewportRay so that it deals with custom view /
    projection matrices properly
- XSI Exporter: Fix a pose animation bug where the start of a pose
    animation was truncated
      to fit to a later animation and incorrectly
    indexed
- Code::Blocks: 
    
      - allow MinGW to use mem pipe instead of temp files to speedup build
        process
- added missing Demo_Ocean project file for CB + MinGW
 
- Documentation updates
v1.2.3 [Dagon] (17 September 2006) -
Maintenance Release
Changes since v1.2.2:
  - D3D9: 
    
      - Respect displayFrequency option if specified
- Use D3DFMT_UNKNOWN instead of D3DFMT_FROM_FILE for DDS loading
        routines, allow more fallbacks
- Make sure DestroyWindow is called in all cases on destruction in
        D3D9 when using OGRE-created window
- Don't try to update RTT/MRT when D3D device is lost
- Fix device lost recovery for secondary windows
 
- GL: 
    
      - Make sure fixed-function LBX_ADD_SMOOTH implemented, even though no
        direct equivalent for arbitrary GL_COMBINE in GL. GL_INTERPOLATE is
        the closest
- Fix a problem with the model (world) matrix being incorrectly taken
        into account when using fixed-function cubic reflection in GL
 
- TerrainSceneManager: 
    
      - Explicitly shut down page source before DLL shutdown, identified by
        tuan as a cause of shutdown problems in TSM under certain
      conditions
- Fix terrain pages not using custom assigned render queue
 
- Resource system: 
    
      - Move firing of resource start / end outside the isLoaded() check to
        ensure that the callback count is correct even if resource state
        changes
- Fix a bug with ResourceGroupManager::loadResourceGroup - if any
        resource in the group at the start changed group (because of a
        resource found in another location not in the group being loaded),
        iterators are invalidated which caused a nasty crash. Really people
        should sort out their group locations but detect this condition and
        deal with it nicely
 
- XSI Exporter: 
    
      - Fix exporting of tangents
- Fix bug with scaling in keyframes should be relative to original
        bone scale (previously assumed bind scale of UNIT_SCALE)
 
- Linux: 
    
      - Fix compilation of OgreSDLConfig_gtk.cpp with recent libsigc
 
      - Ogre::SDLWindow::isFullScreen implementation
 
      - gcc deprecated warning fixes
- Provide -DOGRE_DOUBLE_PRECISION and -DEXT_HASH through
      pkg-config
 
- OSX: 
    
      - Universal binaries support
- Dependencies update
- Updated the Ogre Config Dialog to look more like it's windows
        counterpart
- NOTE: Using Frame Buffer
        Objects (FBOs) on OSX can cause some visual artefacts, choose
        "PBuffer" as the "RTT Preferred Mode" when configuring the GL
        rendersystem until Leopard is released which should fix this
      problem.
 
- Code::Blocks: 
    
      - project format updated
- STLport no longer required, but special build of MinGW needed for
        correct DLL handling of std::string
 
- Node changes: 
    
      - If node already attached to a parent, addChild now throws an
        exception instead of just asserting, helpful to track down this type
        of bug in release build
- removeChild(Node*) now uses node name to find whether/where to
        erasing the child (still keep same behavior as previous), increases
        performance  
- Bugfix for node weighted transform scale blend: should interpolate
        between old and new scale rather than scaling old scale with factored
        new scale
 
- Compositors: 
    
      - Eliminate constant recompilation when compositors enabled on more
        than one viewport at once
- Eliminate extra memory consumption each time CompositorChain is
        recompiled
 
- ManualObject: 
    
      - Fix crash in ManualObject when silly people call begin() and end()
        with no data in between
 
      - If ManualObject is already attached to a node when new geometry is
        added, tell parent to update so potentially new bounds are updated
      too
 
- BillboardChain:  
    
      - changing number of elements and chains, enabling/disabling vertex
        colour and texture coords usage should mark index buffer dirty and
        rebuild later
- update render queue should take render queue into account
 
- Tangent calculations: 
    
      - Correct bug with shared geometry where each submesh covered only
        some of the vertices
- Orthogonalise tangent vectors with the vertex normal when
      generating
 
- Ensure the correct texture format / num mips is used if texture loaded
    through declareResource / loadResourceGroup instead of
    TextureManager::load
- Fixed stencil shadow bug when enabling a custom near clip plane, which
    in some case missing generate light/dark caps that required by zfail
    algorithm
- Viewport clear buffers defaults to FBT_COLOUR|FBT_DEPTH, the same as
    the value defaulted in Viewport::setClearEveryFrame, not 0xFF. More
    consistent, small speedup and resolves some compositor issues
- Overlay bugfix - when a parent container was using pixel metrics, and
    the child was using non-left or non-top alignment, the pixel metrics were
    being used as relative metrics to calculate the childs position in
  error
- Mesh::clone - fix pose list being empty after mesh cloning
- DeferredShading Demo now compiles under OGRE_DOUBLE_PRECISION mode
- Fix incorrect override on AnimableValue::applyDeltaValue(Real)
- Bugfixes for skeleton unloading
- Fix use of depth bias with CEGui renderer
- Tolerate compile errors in shaders, just log the errors and mark the
    technique as unsupported instead of requiring app to catch exception
- StaticGeometry was getting the wrong material technique which caused
    material LOD not to work, and for potentially unsupported techniques to
    be picked - fixed.
- Fix a bug in vertex morph animation where if the same keyframe was
    passed as both parameters for the morph (because only one keyframe in a
    track, or because the time
      exactly matched a keyframe), the same buffer
    was locked twice
- Root::addFrameListener now deals with the case where a listener with a
    given address is removed and re-added before the deferred removal is
    processed
- Entity::refreshAvailableAnimationState should refresh vertex animation
    too. Refreshing the animation state should update length if it has
  changed
- Virtualise a few SceneNode methods so they can be overridden
- Copy pass should copy hash value too. On demand illumination pass
    compiles should calculate new pass hash value immediately.
- BillboardSet: unreference main buffer when destroying buffers, so the
    hardware vertex buffer will release back to driver as early as
  possible
- Fix Ocean demo crashing if there are no supported material
  techniques
- Safely handle null camera in all cases in Viewport
- Fix a bug in the Milkshape exporter when exporting models imported from
    other formats which have less position keyframes than rotation keyframes
    (Milkshape never creates these)
- Fix and enhance BitmapFontBuilderTool
- Miscellaneous detail-level performance improvements
- Documentation updates
v1.2.2 [Dagon] (23 July 2006) -
Maintenance Release
Changes since v1.2.1: 
  - D3D9: 
    
      - when loading DDS files, se 'Ex' versions of DDS loading routines so
        that user mipmap preferences are preserved
- Initialise D3DTexture::mD3DPool to some value other than
        D3DPOOL_DEFAULT, if texture loading failed and then later it might
        re-create as empty texture on device lost/restore
- Fixed checking whether or not device supports mip-map texture when
        loading .dds texture
- Small optimisations during matrix conversion
 
- GL: 
    
      - updated GL uniform type names to GL2.0 spec as defined in
      glew.h
- added missing shadow sampler uniform types
 
- TextureUnitState: Reset mRecalcTexMatrix to false after texture matrix
    calculated, to avoid recalculating each time
- Fix bootstrap script not accepting autoconf 2.60
- Node: Avoid queueing a node for update more than once, which could
    result in a crash if node was destroyed
 
- Added missing initialisation of mAutoCalc for RotationalSpline
- MapIterator / ConstMapIterator - fixed peekNextValuePtr
- Fixed shadow_receiver_fragment_program usage with modulative texture
    shadows
- Added more tests for configure.in
- Solaris 11 (Nexenta OS Alpha 5) build compatibility
- Fixed an inappropriate unsigned casting issue in TextAreaOverlayElement
    introduced in 1.2.1
- OGRE_DEBUG_MEMORY_MANAGER can now be defined externally which is
    usefull for batch builds that need to build both versions
- Added MinGW + STLPort version of Code::Blocks project for MeshUpgrader,
    a few other Code::Blocks project tweaks
- SkeletonInstance::createTagPointOnBone offset position parameter should
    default to ZERO instead of UNIT_SCALE.
- Slight optimisation/fix of BillboardSet and ParticleSystem: 
    
      - Use list<>::splice to move billboard/particle between active
        and free list. As a side note that removing a billboard which doesn't
        exist in the active list now causes assertion fault in debug
- BBT_PERPENDICULAR_COMMON no need to generate axes and vertex
        offsets for every billboards (use common axes and vertex offsets
        instead).
- Notify particle system renderer attached node only if is
      configured
 
- Fix CEGui renderer potential bufer overrun with malformed XML
- Added MovableObject::getVisible allow direct access to the value set
    by MovableObject::setVisible without the additional conditions of
    isVisible
- SceneNode::flipVisibility should use object visible flag only, i.e.
    should not take object upper rendering distance into account.   
- Added missing overridden getMovableType for RibbonTrail
- Added overridden getSingleton* methods to CompositorManager for
    consistency
- Remove unnecessary normalize calls in normal mapping shaders for
    optimisation on lower end cards  
- Sphere intersection test with another sphere or point now uses
    squaredLength() instead of length() to avoid square root
- Fixed a naming bug in the 3dsmax exporter, can now use names with
    operators embedded
- Added a few missing header files to Mac OSX framework
- SceneNode::_getWorldAABB returns AxisAlignedBox by const reference
    instead of by value
- Some octree functions const correctness improved
- Tidy ups and minor optimisations for Vector2/3/4 classes
- SDL back-end: 
    
      - VSync support for SDL RenderSystem added
 
      - Fix compilation of OgreSDLConfig_gtk.cpp with recent libsigc
- SDL_FreeSurface not needed for screen surfaces
 
- More corrections to the manual & docs
v1.2.1 [Dagon] (11 June 2006) -
Maintenance Release
Changes since v1.2.0: 
  - Fix bug with software skinning under gcc 4.1 (an optimisation issue
    which does not occur on stable gcc 4.0 or MSVC)
- Remove unnecessary (and incorrect, although harmless) linker path from
    platform manager
 
- InputEvent's constructor should take 'when' param as a Real like the
    subclasses KeyEvent and MouseEvent to avoid truncation
- Fixed bug in edge list builder when dealing with degenerate triangles.
    Conforming vertex / index data is required to build an edge list, so     
    throw an exception if this condition is detected
- Fixed HLSL program populating incorrect parameter index of array
    parameters
- Fixed potential double inserts into mSupportedTechniques while compile
    materials
- Put RibbonTrail local TimeControllerValue class into unnamed namespace,
    avoid potential naming conflict and also marked it as private
- Minor issue in Rectangle2D - set the (unused in most cases) mBox member
    properly instead of some random stack variable
- Fixed animation update problem when animation state changed between end
    of last frame and beginning of next frame - note this changes the
    behaviour of AnimationStateSet::getDirtyFrameNumber, if you used this
    yourself, check the changes
- Fixed a bug causing the transform of an object attached to a bone to
    never update if its own transform is changed, when the parent skeleton
    animation is frozen 
  
- Entity shouldn't force software animation because of stencil shadows if
    it has shadow casting disabled
- Texture Shadow fixes: 
    
      - Fix several bugs with using global custom shadow caster / receiver
        materials that used vertex / fragment programs
 
      - Fix continuous memory consumption bug when using a combination of
        modulative texture shadows, custom shadow receivers and
      spotlights
- Fix bug in setShadowTextureSettings where the previous shadow pixel
        format settings would be used
 
- Remove fog-based distance fade of additive texture shadows since it
    can't work; clamp to border instead
- Fix problem in BillboardSet::setTextureCoords if params are 0,0
- Add compatibility with NVPerfHUD 4.0
- Add missing 'clear' methods to BillboardChain
- Add 'SceneManager::hasCamera', 'SceneManager::hasEntity' etc as
    requested in the forum
- XSI exporter: Fix a bug when submesh merging is enabled and objects do
    not have the same geometry format (UV sets or vertex colours) - would
    cause objects to be
      leaked and not exported
- CompositionPass should take & return a Material shared pointer by
    const reference instead of by value
- Ensure correct values are returned from SkeletonInstance::getName,
    getHandle, getGroup
- Update to latest Code::Blocks project format
- OpenGL fix for parentWindowHandle option under Windows
- Eye vector normalisation fix to the bump map w/ specular shader
- Fix XMLConverter crash with more than 65536 faces
- Ocean demo fixes & enhancements: 
    
      - reflection map can now be blurred by using bias to select mipmap
        level during cube map sampling
- fixed rotation matrix calc for tangent space to object space
        transformation - Cg, HLSL, GLSL now produce the exact same image
- allow wave amplitude to be much larger now that reflections work
        correctly on waves
- increased mesh resolution so that large waves aren't so jagged
 
- SDK setup enhancements: 
    
      - Wiki page link on finish page
- Add readme checkbox on finish page so readme.html is opened after
        SDK finishes install
- Fixed text crop problem on finish page  
- Add shortcut link to relevant wiki page for SDK setup and usage
 
- Remove       unimplemented FrameEvent method declarations from
    ParticleSystemManager, shouldn't be there
- Documentation fixes & tweaks
v1.2.0 [Dagon] (Final: 7 May 2006) - Major
Release
See the RC1/2 notes below for other changes and major new features in 1.2.0.
This release has the following changes & bugfixes over RC2:
  - Add NV_occlusion_query fallback for cards without
  ARB_occlusion_query
- Fix a couple of bugs when combining pose and skeletal animation in a
    single model
- Add RTLD_GLOBAL when loading dynamic libs under Linux - solves problems
    with DRI
      drivers
- Compiler2Pass now includes exclusion support for character sets
- Compositor: 
    
      - Fix knot material when HDR compositor enabled under OpenGL, now
        looks the same as D3D
- Gaussian blur compositor added
- Widen CEGui text widgets in compositor demo to prevent name
      clipping
- Fixed the initialisation of the central sample offsets for vertical
        blur, caused some artefacts in release mode sometimes in HDR and
        gaussian blur
 
- Code::Blocks: 
    
      - STLPort import libs no longer required.  DLL is linked directly
- Workaround a problem with STLport which caused filestream
      problems
- Project dependencies updated
- Removed unused defines - not using explicit dll exports for MinGW
        builds
 
- Fixed potential bug in FileSystemArchive::open - Open file stream
    should check ensure open succeeded
- Apply original fog settings to auto params even when fog override is
    enabled, since if you want to disable fixed function fog but implement
    fog in the shader you can't do it otherwise
- Recompile compositor if viewport colour / clear options changed since
    last compiled, necessary for reliably picking up viewport colours
- Shadows: 
    
      - Fixed a problem with using custom shadow caster / receiver
        materials and transparent objects
- Tweak validation of transparent renderables so that those with more
        than one pass are only rendered once into shadow textures and once
        for a receiver pass
- Don't hard code the avoidance of texture shadows in compositor
        render queue listener,
          detect reentrancy more generally - allows
        compositors to be used on texture shadows if required
- Soft shadow example added using gaussian blur compositor on shadow
        texture
 
- GLX: 
    
      - Closing windows and visibility
- Key repeat issues improved
- GLX Pointer Warp Fix
- Mouse Wheel support
 
- Clarify assert messages when trying to retrieve invalid software blend
    data
- Fixed Direct3D9 FSAA options that didn't refresh until selecting
    another a video mode
- Allow access to the internal inverse transforms in case external apps
    were using the removed _getBindingPoseInverseTransform
- Fixed memory leak of ManualObject when converted to Mesh
- Fixed issue of global new([])/delete([]) overridden when compiling
    in VS2005 with managed C++
- Fixed a couple of issues with the sizing / resizing of SDL surfaces
- XSI Exporter now builds successfully against the newer XSI 5.1 SDK
- Fixed a couple of multithreading issues fixed with shared pointers and
    resource groups
v1.2.0 [Dagon] (RC2: 17 April 2006) -
Major Release
See the RC1 notes below for the major new features in 1.2.0. This release has
the following changes & bugfixes over RC1:
  - Compatibility with Cg 1.4 (particularly affects GL); also Visual C++
    Dependencies updated to Cg 1.4.1
- Code::Blocks project updates
- Compositor demo expanded and improved; now uses CEGui to present all
    the available compositors and includes lots of new ones including Sharpen
    Edges, Old Movie, Posterise and HDR
- Fix attaching objects to bones
- Fix crash bug in OgreMeshUpgrade when using meshes with no vertex
  colour
- Bugfix for software skin blending with position/normal shared buffer
    with blend position only. Also allow more flexible vertex data
  layout.
- Fixed bug in default intersection scene query, incrementing wrong
    iterator in inner loop
- Fixed bug with hardware skinning on cards that don't support UBYTE4
    (Geforce 3/4)
- Fonts completely switched to address a legal issue with distributing
    Tahoma; now using freeware Blue Highway throughout
- Fix crash problems with glPointParameters on some cards / drivers,
    especially ATI
- Added capability flag for point sprites and extended point parameters;
    point rendering for billboardset now falls back on non-point rendering if
    point sprites not available
- Throw exception if trying to attaching movable which already attached
    to scene node or bone.
- Added missing method Animation::_getVertexTrackList.
- Manual updates
- Make MaterialSerializer match the manual for texture element - allow
    all optional elements
- Fix segfaults when using an animation with no tracks
- Turn on RTTI for core projects for VC7.1 (already on for VC8)
- Fix shadow volume generation for ManualObject
- More graceful handling when trying to define high-level shaders in a
    language not possible for the current rendersystem (GLSL on D3D, HLSL on
    GL). You don't get lots of errors in the log anymore, and technique
    fallback now works better.
- XSI exporter 
    
      - Fix vertex colour export
- Fix translation animation
- Automatically pad mesh bounds when animation takes skeleton outside
        the original bounds
 
- Milkshape exporter - fix a translation animation bug
- Fix an ambiguous method declaration on AnimableValue when using a
    non-const object; would pick the protected version and fail
- Remove old MSVC hash_compare override - this was only required for VC6
    and VC7.0 and is no longer relevant. Can cause problems if users are
    relying on the default hash function.
- Fixed issues with buggy GL drivers claiming GL 1.5 compliance and not
    supporting ARB_vertex_buffer_object.  F
- Fixed hardware occlusion support for GL render system (should check GL
    1.5 or ARB_occlusion_query instead of NV_occlusion_query)
- Binary search optimization of keyframe searching, helps with very large
    animations.
- Allow different resource group names to be used when creating
    compositors from script. 
      Was previously hard coded.
- Fix to SharedPtr with threading support enabled
- Calculating the bone matrices should combine scale as equivalent axes,
    no shearing
- Make MovableObject::_getParentNodeFullTransform return const reference
    of Matrix4 and avoid memory copy
- GLSL: Support arbitrary sized uniform arrays of vec4 like Cg
  and HLSL
- Dr_Bunsen_Head.jpg - texture was NPOT which was screwing up some ATI
    cards, fixed.
- Avoid divide by zero when setting fog auto gpu program parameter.
- Make 'original scene' compositor source pick up viewport background
    colours &
      clear options
- Bugfix for using wrong source in VertexData::reorganiseBuffers
- DataStream issues: 
    
      - Fixed read, get and skip line bug when line too long.  
- readLine and skipLine now implemented in DataStream, derived class
        doesn't need to override unless they have more effective
        implementation.     
- Use temp buffer in the stack instead of in the class.   
- ConfigFile should open file in binary mode, since line reading
        functions might seek backward, and seeking in text mode have problem
        with CR/LF pairs.
 
v1.2.0 [Dagon] (RC1: 12 March 2006) -
Major Release
1.2.0 is a new major stable release, and therefore has literally shedloads of
new features. Some interfaces have also changed since the 1.0.x branch
(Azathoth), for full information on porting your application from the
previous version of OGRE, see the Dagon
Porting Notes in the OGRE Wiki. 
  - Compositing framework 
    
      - Full-screen post-processing effects made simple
- Easily render to multiple targets, potentially multiple times, and
        combine the results through shaders
- Chain multiple compositors together flexibly so post-processing
        results can be combined simply
- Scriptable through .compositor scripts so you can write less
      code
- Demo_Compositor shows you how to create compositors in code and
        through script
 
- Multiple Render Target (MRT) support 
    
      - Render to multiple targets simultaneously in the same rendering
        operation
- Perform advanced effects like deferred shading (demo included)
- Requires a card which supports MRT
 
- RenderTexture enhancements 
    
      - RenderTextures are now created like all other textures, with
        TextureManager::getSingleton().createManual; you just need to set a
        usage parameter of TU_RENDERTARGET
- Render to the faces of cube maps and to volume slices
- Retrieve the content of these sub-faces by accessing the
        HardwarePixelBuffer like so:
        tex->getBuffer(x,y)->getRenderTarget(z)
- RenderTarget::writeContentsToDisk now implemented for all
        RenderTextures
- D3D9: RenderTextures of compatible formats now share one
        DepthStencil surface to conserve memory
- GL: For faster and more flexible rendertextures use
        GL_EXT_framebuffer_object instead of pbuffers (if available)
- GL: PBuffers only used when rendertarget is smaller than frame
        buffer. If smaller, the framebuffer is used, as this is faster
- GL: PBuffers are shared between RenderTextures to conserve
      memory
 
- MovableObject changes 
    
      - All MovableObjects are now created through MovableObjectFactory,
        and new factories can be registered by plugins. Plugging in new
        object types generically is now simple 
- SceneQueries can now exclude entire MovableObject types as well as
        individual objects 
- Added MovableObject::setRenderingDistance which operates like the
        same method of StaticGeometry, effectively limiting the view distance
        of individual objects 
- MovableObject::setVisibilityFlags controls the visibility of
        objects based on a mask set in SceneManager::setVisibilityMask, in
        the same way as SceneQuery works. This is yet another way for you to
        control object visibility, and makes it simpler to turn categories of
        object on / off quickly and efficiently 
- The default values for MovableObject::setQueryFlags and
        MovableObject::setVisibilityFlags on creation of the MovableObject
        are now defined in the static methods
        MovableObject::setDefaultQueryFlags and
        MovableObject::setDefaultVisibilityFlags. These defaults start out at
        0xFFFFFFFF to preserve previous behaviour. 
 
- Billboard / particle enhancements 
    
      - Billboards can now be sorted individually relative to the camera to
        provide correct transparency effects (also applies to
        BillboardParticleRenderer, and a new 'sorted' attribute is available
        in particle scripts) 
- ParticleSystemRenderer can now describing their desired sort mode
        by override '_getSortMode'. 
- Billboards can now have their own individual texture coordinates to
        allow you to display subsets of a texture per billboard (e.g. for
        billboard based text) 
- Particles can now be kept in local space rather than world space
      
- Added two new billboard/particle type: BBT_PERPENDICULAR_COMMON
        (perpendicular_common) and BBT_PERPENDICULAR_SELF
        (perpendicular_self). BBT_PERPENDICULAR_COMMON make the billboard
        plane perpendicular to a common direction, and BBT_PERPENDICULAR_SELF
        make the billboard plane perpendicular to their own direction. In
        other words, their facing to the given direction instead of the
        camera. It's useful for an aureola around the player and parallel to
        the ground etc. Both of them use an additional up-vector to determine
        the billboard X and Y axis. 
- Added billboard/particle rotation type setting, allowing you to
        rotate vertices or rotate texture coordinates. Defaults to rotate
        texture coordinates to preserve previous behavior. Use new
        'billboard_rotation_type' attribute to set rotate type in particle
        scripts when using BillboardParticleRenderer. 
- Billboard particle renderer now supports setting the billboard
        origin in particle scripts via 'billboard_origin'. 
- Particle system now allows the user to configure the sampling
        interval, either fixed or based on frame-rate. Default based on
        frame-rate to preserving previous behavior. Use
        'ParticleSystem::setIterationInterval' to configure iteration
        interval per particle system, or use
        'ParticleSystem::setDefaultIterationInterval' to set the default
        iteration interval for all ParticleSystem instances that don't have
        their own setting. Available in script as 'iteration_interval'. 
- ParticleSystem now supports a 'nonvisible update timeout' which
        means that if a particle system is not visible from any camera for
        the time specified, it will cease to update, saving the expense. You
        can set the default for all systems without their own setting through
        ParticleSystem::setDefaultNonvisibleUpdateTimeout, or set it per
        system (through script as 'nonvisible_update_timeout'). 
- Each billboard can now have its own custom texture coordinates
        instead of merely generated coordinates (which were either the whole
        texture or grid set) 
- Billboardset now supports an 'accurate facing' model so that
        billoard orientation is calculated based on the relative positions of
        the camera and each billboard, which is more accurate but slower than
        the default method (which is to use the camera axes for all
        billboards). This option is available through particle systems as
        'accurate_facing true' too. 
- BillboardChain and RibbonTrail classes allow you to do 'beam'
        effects like jet trails and lightning arcs 
 
- SceneManager enhancements 
    
      - SceneManagers are now constructed from SceneManagerFactory
        instances, allowing more than one instance of the same type of SM
      
- SceneManagers must be constructed first using
        Root::createSceneManager, and can be created based on a scene type
        mask (a binary combination of requested types), or an explicit name
      
- Available SceneManager types can be iterated over using
        Root::getSceneManagerMetaDataIterator, each with a type name,
        description, scene type mask and world geometry support flag 
- Using multiple simultaneous SceneManagers, of the same type or
        different types, is now safe
- SceneManager::setWorldGeometry now accepts a stream as input as
        well as a filename
 
- Material enhancements 
    
      - Techniques, passes, and Texture unit states can now be named 
- Materials can now extend other materials, through the script syntax
        'material DerivedMaterial
          : BaseMaterial', to allow simple refinement
        of existing materials 
- matrix4x4, float4, float9, and float16 in material script now
        properly load matrices for use with GLSL shader unitforms 
- New auto parameter binding 'pass_number' 
- Serializer now writes out all shader bindings (for tools) 
- Passes can now iterate an arbitrary number of times, either
        globally or per light 
- New auto parameter binding 'pass_iteration_number' 
- There is no limit on the number of frames for animated textures.
        There used to be a limit of 32. 
- matrix4x4 in material script now uses same matrix element layout
        for Cg, HLSL, GLSL 
- New TextureUnitState blending option, blend_diffuse_colour, allows
        you to use the RGB luminence of vertex colours as an additional
        blending parametric 
- New texture addressing mode 'border' and texture unit attribute
        'tex_border_colour'. 'border' addressing mode will set to the border
        colour when texture coordinates outside the range [0.0, 1.0]. 
- New gpu parameter 'render_target_flipping', allow adjust position
        to accord with requires texture flipping when bypassed standardise
        projection transform. 
- New gpu parameters 'fog_colour' and 'fog_params', allow access fog
        parameters by gpu program if need. 
- New pass attribute 'polygon_mode', allowing you to specify solid,
        wireframe or point rendering on a per-pass basis (instead of just an
        object basis as before) 
- New feature 'material schemes' - every technique can be allocated
        to a scheme ('scheme blah' in technique block), and viewports can
        have a preferred scheme. This allows wholesale switching between
        techniques per viewport, or just globally to do scalable effects, or
        hdr paths etc 
- new Ocean Demo added showing use of CEGUI manipulating programable
        shader parameters in realtime. 
- New option on texture loading within texture_unit to load a
        single-channel luminence texture into alpha, useful for
        fixed-function alpha textures 
 
- Animation enhancements 
    
      - Morph and Pose animation 
        
          - Animation of vertex positions in either hardware or
          software
- 'Morph' variant is similar to old-skool vertex keyframe
            animation; this is recommended only for legacy applications (e.g.
            MD2)
- 'Pose' variant is a modern, blendable pose based system which
            allows you to perform much more sophisticated vertex animation
            such as facial animation (using expression and mouth shape keys),
            and can be combined with skeletal animation.
 
- Existing animation tracks are now just one type of track, ie
        NodeAnimationTrack 
- New 'NumericAnimationTrack' allows the animation of any numeric
        value through the AnimableValue abstraction 
- Significant number of optimisations means that animation is now
        faster than before 
 
- Skinning blending enhancements. 
    
      - Larger skeletons are now possible with hardware skinning. OGRE now
        only passes world matrices for the bones of a subentity that are
        actually used, saving shader constants if you split up your mesh,
        should your skeleton get too large for the constraints of the target
        shader model.  
- Software skinning is now more efficient 
        
          - Temporary blended buffers are now held for a period of time per
            entity before being released back to the pool, which allows
            better frame coherency on these buffers
- software skinning is now done in object space, with additional
            special optimisations for frozen/disabled animation, so that
            the software blended vertex datacan be kept for as many frames as
            practical without recalculating it (it will only get released
            when the entity has been out of frame for some time) 
 
 
- ManualObject added to make custom geometry creation more
    accessible 
    
      - Closely mirrors the GL immediate mode interface; create geometry
        using begin(); position(); normal(); texCoord(); end(); 
- Builds data into regular hardware buffers for performance 
- Supports all types of shadows 
- Can convert the result to Mesh if desired for instancing 
 
- Node enhancements 
    
      - Node::Listener added so you can use Node::setListener to get
        callbacks when the transform changes 
- Node::setInheritOrientation/getInheritOrientation added allows
        configure the node whether it should inherit orientation from it's
        parent node. 
 
- Render queue enhancements 
    
      - Render queue groups can now be given an arbitrary uint8 identifier
        rather than just one of a fixed set of enums 
- Custom render queue invocation sequence per viewport if required
      
- Allow suppression of shadow processing and render state changes
        during custom invocation 
- Ordering / grouping of non-transparents can be changed per
        invocation 
 
- Shadow enhancements 
    
      - New shadow type SHADOWTYPE_TEXTURE_ADDITIVE, allowing the lighting
        accuracy of additive shadows with the GPU speed of texture shadows
      
- You can now disable the rendering of shadows per viewport, to save
        time in mini-maps / RTTs etc 
- ShadowListener interface added 
        
          - shadowTexturesUpdated allows you to hook into the time
            when shadow textures have been rendered to, but before they are
            used. You can use this to perform custom shadow behaviour such as
            filtering 
- shadowTextureCasterPreViewProj and
            shadowTextureReceiverPreViewProj fires before the view
            & projection matrices are set for the shadow caster /
            receiver renders respectively; you can use these hooks to provide
            a specialised camera setup if you want to define custom shadow
            systems 
 
- Texture shadow casting now fully supports alpha blended / alpha
        rejection materials 
- Both stencil and texture additive shadow technique now fully
        supports alpha rejection shadow receiver. 
- Texture shadow supports point light, used directional light look at
        target mechanism and 120 degree FOV (similar spotlight) behavior.
      
 
- Resource management enhancements 
    
      - Added a new predefined resource group called
        ResourceGroupManager::INTERNAL_RESOURCE_GROUP_NAME ("Internal") for
        dealing with resources created internally by the engine; you can now
        safely unload the default resource group if you choose without
        affecting these internal resources. 
- Added a new meta resource group called
        ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME ("Autodetect");
        if you use this group name, the real resource group is
        detected at load time based on where the resource is found in the
        configured resource locations. Entity now uses this method by default
        to load meshes so you no longer have to preload meshes in custom
        resource groups if you don't want to (although preloading is often a
        good idea anyway for performance). 
- Resource loading group fallback 
        
          - When a resource is not found in the requested resource group,
            look for it in the others based on resource locations 
- The group ownership of resources changes when this happens 
- This allows you to load a material from a custom group and have
            it load textures into a general resource group dynamically 
 
- ResourceGroupManager::unloadUnreferencedResourcesInGroup now
        available to unload only resources which are not currently being used
      
- ResourceManager::unloadUnreferencedResources /
        ResourceManager::reloadUnreferencedResources now available to
        unload / reload only resources which are not currently being used
      
 
  - Platform Manager enhancements 
    
      - Added Ogre::PlatformManager::messagePump(RenderWindow*) to the
        platform manager - This moves the Win32 message pump from Ogre::Root
        to the Win32Platform Manager, and the GLX platform messages to the
        GLX Platform manager. On other platforms (Mac & SDL) this has no
        effect. Call this method if not using startRendering (as
        startRendering calls this everyloop for the default renderwindow) to
        pump messages into Ogre while avoiding the OS pcific issues in your
        own code - allows alt-tabbing, etc to work correctly. 
- Timer stability on dual core systems 
- GLX Platform only listens to Window X events when not using Ogre
        input system - allows ability to plug in other input systems easier,
        while not having to pump specific X events into Ogre manually.
- Added Viewport::setSkiesEnabled() to let users hide skies for
        viewport individually, allow control skies displays or not more easy,
        especially for using multiple viewports.
 
- D3D9 enhancements 
    
      - Triple buffering enabled when vsync is enabled
 
- GL enhancements 
    
      - Two sided stencil is always supported for GL 2.0 compliant drivers,
        even ATI 
- Fast texture-to-texture blit, blitFromMemory, and hardware
        accelerated bi/trilinear scaling using FBO. This improves loading
        time in the common case that some textures need to be scaled to
        power-of-two size. 
- Implement Texture::copyToTexture for GL, which was already
        implemented for DX9 (useful for longer term storage of graphics
        rendered to a texture) 
 
- Camera / Viewport Enhancements 
    
      - Cameras & Frustums can now have custom view and / or projection
        matrices if required 
- Viewports now have a setting to say which buffers they clear if
        clearing is enabled (colour, depth, stencil)
- Added off-axis perspective projection to Frustum and Camera.
        Related functions: Frustum::setFrustumOffset,
        Frustum::getFrustumOffset, Frustum::setFocalLength,
        Frustum::getFocalLength.
- Added methods to access 'virtual' (reflected if need) or 'real'
        (unreflected always) world orientation/position of the camera.
 
- Added radix sorting routines to allow for faster sorting 
- CEGUI renderer updated to v0.4.x 
- Added IndexData::optimiseVertexCache to allow people to cache-optimise
    their triangle list indexes 
- Added pulse width modulation option to WaveformControllerFunction 
- Added Root::setFrameSmoothingPeriod() to let users customise smoothing
    of frame time fluctuations. 
- Every render system config options are stored to configuration file.
  
- VC6 & VC7.0 (2002) support discontinued; officially supported
    Microsoft compilers are now VC7.1 (2003) and VC8 (2005) 
- Direct3D7 support removed
v1.0.7 [Azathoth] (12 February 2006) -
Maintenance Release
  - D3D9: 
    
      - Fixed device leak when destroying primary window manually rather
        than via shutdown()
- Potential D3D9 leaks during fatal error conditions fixed
- Fix potential leak when using DDS textures if premature shutdown
        encountered
- Fix another trailing state issue on device lost/restore, clear all
        texture units and vertex streams before resetting
- Don't create any mipmaps when building temp surface in
      blitToMemory
- Fixed a compile bug in double-precision mode
- Floating point texture support now correctly logged
- Fix vs_2_x/a, ps_2_x/a/b detection
 
- D3D7: 
    
      - Fix
        crash when D3D7 window is
        minimised
 
- GL: 
    
      - Fix potential performance problems with NPOT pbuffers
 
- Terrain plugin: 
    
      - Light list finding should be specialised for each terrain
      tile.  
- LOD calculation should use minimum distance between terrain tile
        bounding box and camera position
 
      - Throw exception when registering a page source for a type which is
        already present
 
- Nodes: 
    
      - Fixed a bug in SceneNode::setDirection with a local natural facing
        of something other than +/-Z, and when dealing with different
      spaces
 
      - TagPoint should always reflect parent entity scale changes
- Fixed crash in SceneManager::destroySceneNode when using auto
        tracking
 
- Shadows: 
    
      - Fix rendering of texture shadows not respecting getShadowsEnabled()
        flag on queue group
- Alpha-blended materials can now cast texture shadows accurately
- Correctly render stencil shadows when oblique depth projection in
        use (use zfail all the time)
- Free up shadow textures immediately when texture shadows no longer
        in use to save video memory
 
- Materials: 
    
      - Fix incorrect output serialisation of 'modulate' and 'colour_blend'
        scene blend factors from memory to .material files
 
      - Fix splitting of passes when too many texture units used
- Bugfix for auto gpu program parameters:'view_direction',
        'view_side_vector' and 'view_up_vector' should be in world space.
        Also viewport size params were using render target details instead of
        viewport
 
- Particles & billboards: 
    
      - Fix billboard orientation when using camera reflection
- AreaEmitter should have a different default 'up' to the default
        'direction'
- Fix bug in particle scale affector - should scale from default
        dimensions in the first instance
 
- Workaround to avoid std::iostream memory leaks in VC8 (MS bug - until
    VC8 SP1 arrives)
- Fix Font::StrBBox for strings containing spaces
- Memory manager tweaks to improve shutdown performance when using large
    containers in debug
- Quaternion now outputs to stream with same element ordering as
    constructor
- Accessor methods added to retrieve current sky settings on
  SceneManager
- Add automatic fallback for Vector3.getRotationTo if 180 degree rotation
    is requested
- Cleaner Implementation of occlusion query delete mechanism. Added
    destroyHardwareOcclusionQuery and made RenderSystem clean up any
    remaining queries at shutdown just like RenderTarget
- Eliminate potential temp blended buffer checkout bug: occuring when
    call TempBlendedBufferInfo::checkoutTempCopies more than once in same
    frame.
- Fixed rendersystems setClipPlanes sending of user clip plane equations
    to device (d was inverted)
- Fix bug in edge list builder when indexStart is used
- Fix bug where Math::ASin returned the wrong value for +1.0 and -1.0
- Fix bug in border panel; uvs for centre panel should be updated at the
    same time as the border
- XSI exporter significant speed improvements and better progress
    reporting
- Timer more consistent after performance counter hiccups, and will run
    continuously over the 49.7 days boundary
- Move zziplib headers so external apps are no longer dependent
- Update controllers before updating scene animations in case users use
    controllers to manipulate scene animation
- Avoid multi-results of same object from
    OctreePlaneBoundedVolumeListSceneQuery
- Default mMaterialName as well as mpMaterial in SubEntity so they are
    consistent (issue with StaticGeometry if no material set)  
- Fix infinite loop when RenderQueueListener tried to skip a queue
- Fix crash when creating / destroying Root more than once
- 3D Studio Max exporter now supports Max 8
- New barrel and palette models added
- Many compiler warnings squashed
- Documentation clarifications
v1.0.6 [Azathoth] (20 November 2005) -
Maintenance Release
  - Visual C++ 2005 now supported,
    use Ogre_vc8.sln
- XSI Exporter 
    
      - XSI v5 now supported (in addition to v4.0 and 4.2)
- Material exporter now picks up custom texture transforms correctly
      
- Fix for using multiple clusters with envelopes (bone assignment
        groups) spanning them. 
- Don't export empty submeshes (caused by starting with polys which
        are  later all reallocated to clusters) 
 
- D3D9 fixes: 
    
      - Render window writeContentsToFile method speeded up + some bugfixes
      
- Avoid a memory leak when GPU programs fail to load
- Fix potential surface leak when destroying a secondary window but
        not the device
 
- GL fixes: 
    
      - Don't change GL context while creating a new render window if
        current context is available 
- Share lists between render window GL contexts
- Fixed incorrect loaded state when creating a manual texture in
      GL
- Fixed many gcc warnings on GL atifs compiler
- Type correction for external / parent handles in GLX platform &
        doc corrections
 
- D3D7 fixes: 
    
      - Fixed Dx7 device lost problems, switching from fullscreen to
        windowed and back now works in Dx7 too.
- Fix oblique projection on D3D7 (fix bad clipping on render to
        texture demo)
 
- Mesh / Entity fixes: 
    
      - XML format DTD 
        
          - Range of texture_coords attribute should be 0 to 8 not 0 to 7
          
 
          - 3D texture coordinates should be considered valid in DTD
 
- Mesh::getSubMesh now safely checks for an index out of bounds
        condition.
- Unload mesh should clear bone assignments and removes reference to
        skeleton
- Added method to access manual levels of detail for the entity.
        Allow user more control to the lod level (e.g. change material,
        attach objects).
 
- Hardware vertex buffer pool
    fixes: 
    
      - TempBlendedBufferInfo destructor needs to make sure allocated
        buffer copies have been released - this bug showed up when entities
        using software skinned skeletal animation were removed from the
        scenemanager during rendering prior to frame ended finishing 
- Buffer manager must make sure that no buffer copies or free temp
        vertex buffers exist that are associated with a vertex buffer that is
        being deleted 
 
- Logging changes: 
    
      - Silently tolerate not having any log files to write to, so people
        can run logless if they really want. 
- Allow suppression of file output on Log to allow a LogListener-only
        setup 
 
- Shader fixes: 
    
      - Correct number of constants supported by ps_1_x
- Fix ps_2_x detection; report as ps_2_a/b but assembler syntax is
        still called ps_2_x
- Fixed memory/resource leak of high-level GPU program in the case
        qhere the high-level portion is loaded, but the low-level GPU program
        itself never loaded
 
- Shadow fixes: 
    
      - Fix missing shadow volume extrude program parameters when shadow
        volume materials initialised somewhere else 
- Resolve an issue when find shadow casters for light, and the light
        is attached to scene node. Should use derived light
        position/direction to query for shadow casters 
 
- Material fixes: 
    
      - Ensure that custom texture transforms are serialised / deserialised
        into .material scripts
- When material recompile required, need to unload whole content of
        material, avoid leak because some TUS animation/effect controllers
        maybe created.
- Fix cloning problems when using the ACT_TIME auto parameter
 
- Texture fixes: 
    
      - TextureManager loadImage/loadRawData should be create texture as
        manual texture without loader, in fact the texture can't auto reload
        again.
- Enable/disable 32-bit textures now work properly even if no texture
        exists, and only reloads the loaded and reloadable textures.
- You can now access the original dimensions of the texture image
        even if the final texture dimensions (due to hardware requirements)
        are different
 
- Dependencies updated 
    
    
    
    
      - zzliplib is now 0.13.44 (this fixes a memory leak when reloading
        resources from a zip file) 
 
      - CEGui remains at 0.3.x since 0.4.x requires potential changes to
        custom looks, users are free to upgrade themselves (but will need the
        source release, not the SDK)
 
- Particle systems: 
    
      - Delay loading of image on ColourImage particle affector to avoid
        startup overhead, and deal with more formats instead of assuming
        pixel format 
 
      - Should check for duplicates before creating/adding new particle
        system templates, otherwise leakage 
 
- Disable gcc version script which causes problems in gcc v4.x 
- Add the ability to raise and listen in on RenderSystem-specific events
    (allows people to listen in on device lost / restore if they choose
  to)
- Fix comparison bug in HardwarePixelBuffer::blit which would cause it to
    scale unnecessarily 
- Solve crash when ray scene query is done without landscape loaded in
    TerrainSceneManager 
- Open data streams one at a time while parsing scripts to avoid opening
    a lot of disk files simultaneously that may exceed file handle limits
  
- Allow archives to be unloaded 
- Fixed destroying track which maybe absent, just ignore it when this
    situation happens 
- Fix merging of CEGui flags in Linux build
- Don't allow double-load of plugins
- Gracefully deal with invalid requests to use the same SceneNode name
    more than once
- RenderTarget::writeContentsToTimestampedFile now writes out the
    date/time in correct human readable format
- Fix for "unknown property."scale" in $Biped_Object" error in 3DSMax
    exporter
- OverlayElement parent overlay initialisation fixed
- Several documentation corrections 
v1.0.5 [Azathoth] (25 September 2005) -
Maintenance Release
  - D3D9: 
   - 
      - Fixed device lost issue with manual
        textures with manual loaders.  
- Ensure that textures which were
        unloaded at the time of the device lost remain unloaded after the
        device is restored (previously these textures would be loaded by the
        restore)  
- Fix restoration of specified number
        of mipmaps after device restore  
- Fix mipmap issue introduced in 1.0.4
        with textures whose dimensions are not power of two 
 
- GL:  - 
      - context switching should be
        preserving GPU programs and depth/colour mask settings, because scene
        manager treat render system as ONE 'context' ONLY.  
- 'Warning texture' now bound to a
        texture unit if it is used but not defined, e.g. in a shader but the
        material definition does not include a corresponding texture unit  
- Fix a flipping issue when a viewport
        doesn't take up the whole of a render texture 
 
- XSI Exporter:  
- Fix memory leak on software skinning 
- Material: compile illumination passes on
    demand 
- BillboardSet: Optimise updating of
    bounds when creating a new billboard 
- Win32 platform fix: DInput buffer
    overflows resolved 
- StaticGeometry::addSceneNode should
    cascade as documented 
- Ensure
    HardwareBufferLicensee::licenseExpired is called in all cases 
- GLXWindow::resize fixed 
- Fix potential memory leak during overlay
    creation 
- Alter bump mapping / offset mapping
    shaders to handle directional lights as well 
- Fix a range issue on the specular bump
    mapping shader, looks nicer now 
- Fix memory leaks when using
    StaticGeometry & stencil shadows 
- Fix TextureUnitState clone bug: _load
    called after after TUS is cloned so that effect and animation controllers
    are constructed. Also reduced _dirtyhash() calls while cloning TUS 
- Fix off-by-one bug in parseAlphaOpEx
    when using manual blend 
- Fix potential transparencybug: passes
    can be transparent even if destination blend factor is zero, if source
    factor is destination-based 
- Node: Assert that a node is parent-less
    before adding it in addChild, avoids inconsistency issues 
- Support conversion from and to
    PF_FLOATxx_R pixel format 
- Fix segfault in OgreXMLConverter when
    built with GCC 4.0 
- Fix big endian compilation bug in
    CEGuiTexture (affects Linux on PPC and OSX) 
- Some API and manual clarifications,
    including:  - 
      - Finally add section on hardware
        pixel buffers 
- now includes minimum ATI/nVidia card
        specifications for shaders of a given profile  
- Remove / correct old GUI manual pages 
 
v1.0.4 [Azathoth] (21 August 2005) -
Maintenance Release
  - Fix texture shadows when using basic
    SceneManager (not octree or bsp)  
- Fix memory leaks in Demo_Water and
    Demo_VolumeTex 
- Add isStillOutstanding method to
    hardware occlusion queries to promote more asynchronous behaviour 
- Fix a couple of squared distance
    comparison bugs 
- Fix
    OverlayElement::updateTextureGeometry being called repetitively 
- D3D _makePerspectiveMatrix fix
    (left/top/right/bottom version) 
- Demo_VolumeTex material loading bug
    fixed 
- Fixed accumulated discrepancy in
    animation track optimise 
- Bugfix to
    SceneQuery::removeQueryFlags 
- Node destruction now cleaner 
- Add ability to force software skinning
    to Entity 
- D3D texture bugfixes  - 
      - We need to check the corrected pixel
        format before determining hardware dynamic/auto-mipmap texture
        support  
- The D3D render system texture auto
        mipmap generation should respect the TU_AUTOMIPMAP usage  
- Should check the ability to use
        dyncamic textures in volume and cube maps before enabling the flag 
 
- Fix remaining device restore problems
    with manual (e.g. dynamic) textures, RTTs that are never used, and colour
    state after restore 
- Material bug - fixup best techniques
    container when material copied 
- Fix depth bias in D3D9 on nVidia to be
    more reliable 
- Fix iterator invalidation problem in
    SceneNode::removeAndDestroyChildren 
- Quaternion::equals now takes negated
    quaternion into account, may define the same rotation  
- XML Converter issues fixed:  
- Fixed water demo crash if ESC pressed at
    config screen 
- Fixed Viewport/Camera auto aspect ratio
    bug - use floating point division, not integer 
- getRenderTargetIterator added to
    RenderSystem to allow external parsing of current targets 
- Clamp projected texture in
    Demo_RenderToTexture to avoid artefacts on some cards 
- TagPoint was not inheriting parent
    entity scale meaning attached object didn't scale with their parents; now
    they do 
- Several small documentation corrections
     
- Fixed off-by-one bug in SimpleSpline
    & RotationSpline which caused incorrect interpolation over loop 
- Resource group initialised flag is now
    reset when clearing, allowing scripts to be re-read 
- Hardware skinning example shaders now
    handle directional as well as point lights 
- Fixed CEGuiTexture so it frees shared
    pointer whether it deleted shared texture or not 
- Fixed bug in EventProcessor shutdown:
    wasn't removing its registered frame listener which causes a seg fault if
    rendering continues 
- Infinite loop bug fixed in
    Matrix3::QLAlgorithm 
- Small compatibility fixes for VS2005 
- Context switching problem in GL Render
    system (GLX) solved  
- Some const correctness and other tidying exercises 
v1.0.3 [Azathoth] (10 July 2005) -
Maintenance Release
  - Fixed a problem in D3D9 where GeForce
    6x00 range was not enabling infinite projection  
- libOgreMain.so now only exports symbols
    based on ogremain.map  
- Fixed --enable-openexr argument for
    ./configure  
- XSI exporter - don't crash if textures
    are not found, just warn instead.  Also trap cases where too many texture
    coordinate sets are used and warn. 
- Last of D3D9 leaks removed  
- Extra logging for D3D9 device lost /
    restore process  
- Fix device restore of RTT in D3D9  
- Replace SDL hard-coded constant args for
    SDL_ShowMouse  
- Make RenderWindow::windowMovedOrResized
    virtual & generalised from GL/D3D since they're useful for people
    with externally managed windows  
- Corrected type of the returned value
    from std::string::find_first_of and find_first_not_of  
- Allow external setting of BillboardSet
    bounds for billboard injection  
- Q3A level loader - reject lightmap
    indexes < 0, not just -1, for greater level compatibility  
- Export TagPoint to allow post
    attach-to-bone modifications  
- Set ambient light settings per
    _renderScene call incase we switch contexts in GL  
- gcc 4.0 compatibility and removed the
    need for GCC_3_1 compiler flag 
- In GL, support the
    GL_MAX_TEXTURE_IMAGE_UNITS_ARB number of texture units when using shader
    hardware instead of just GL_MAX_TEXTURE_UNITS 
- Fix attaching particle systems to bones 
     
- Implemented vp30, vp40, fp30 and fp40 Cg
    profiles  
- Fixed a 64 bit issue in
    Serializer::flipEndian  
- Add conversion from GpuProgramPtr to
    HighLevelGpuProgramPtr, and fix mutex usage on existing reverse
    conversion  
- CEGUI v0.3.0 now required 
- Fix memory leak in ZipDataStream  
- Fix to AnimationTrack::optimise - we
    should not eliminate all duplicate keys since the boundary values are
    required to preserve the interpolation shape. In fact, we need to
    preserve sequences of up to no more than 4 identical keys to preserve
    tangents for if spline interpolation is used. Any inner ones are removed.
     
- Matrix4::operator != should take a const
    reference parameter  
- Node::removeAllChildren should notify
    those children of detachment and clear the child update list too.  
- Fix a bug in StringUtil::match where a
    partial match after a wildcard goes wrong and the wildcard doesn't
    correctly consume it ready for later matches  
- Fixed some variable shadowing warnings
    in gcc  
- Don't try to prep subentities for shadow
    volumes if they don't have their own geometry  
- Fixed DataStream::readLine returning
    incorrect count and not dealing with reading exactly the max length
    properly  
- Fixed TerrainSceneManager incorrectly
    calculating normals  
- VertexData::vertexStart bugfix for GL
    render system  
- Fix small inconsistency in near / far
    clip plane in world space between rendersystems  
- A few win32 resize / getMetrics fixes
     
- Allocate initial particle pools on
    demand to save memory  
- 3DSMax exporter - support mirrored bones
     
- Fix memory leak in Bsp Collision demo
     
- Correct GLX initialisation issue  
- Objects which are attached to bones are
    now properly picked up by scene queries and cast shadows properly  
- Fixed carrying forward of manual loader
    through Material::applyDefaults 
- A few other miscellaneous safety checks 
v1.0.2 [Azathoth] (30 May 2005) -
Maintenance Release
  - Mesh::buildTangentVectors now deals with
    32-bit indexes  
- Re-introduce commented out degenerate
    face test in progressive mesh, adds quality at very low LOD levels  
- Multisampling in GLX corrected  
- Documentation fixes  
- A few state optimisations in the
    rendersystem  
- Removed calls to srand in Math - user
    might want to control random number seeding  
- Addition of a few minor 'getter' methods
    and const-correctness  
- Matrix4 * Plane should use inverse
    transpose to transform plane normal to deal with non-uniform scale.  
- GL: throw an exception when we failed to
    properly initialise a texture, instead of a devide by zero  
- Fix for skeleton serializer (showed up
    in XSI testing) - don't assume every bone has a track.  
- VC7.1 + OGRE_DOUBLE_PRECISION fix  
- Fix bug in getSquaredViewDepth in
    WireBoundingBox  
- Added useful fuzzy comparison methods to
    Vector3 / Quaternion  
- Add animation optimisation methods to
    eliminate tracks which do nothing and duplicate keyframes (used by
    default in XML converter)  
- Include quake3settings.cfg in SDK
    distribution  
- Minor particle fixes  
- Allow Renderable to determine whether it
    can be overridden by camera as to the detail level it renders at. Allows
    us to view the whole scene in wireframe but keep the overlays solid by
    default.  
- Bugfix - when bulk-loading resources,
    unsupported high-level and assembler programs end up getting loaded since
    they are part of the declared resources in the group  
- Fix resource counting bug on bulk
    loading  
- GLX backdrop image now embedded  
- StringConverter::parseUnsignedInt fixed
    for boundary numbers  
- Fixed OgreGLTexture and compressed
    textures delete [] mismatch  
- Timer - compensate for
    QueryPerformanceCounter hiccups on some chipsets  
- MeshUpgrader should set mesh padding
    factor to nothing to avoid adding extra padding  
- Material - restore manual loader and
    manual flag after applying defaults  
- Fixed Node::getPitch/getRoll/getYaw  
- Implement ParentWindowHandle for GLX -
    Disable FSAA for now, it's heavily unstable for NVidia  
- Don't try to log exception when no
    LogManager exists yet  
- Allow skeletons to share animations with
    other skeletons (requires strict skeletal structure matching) Supports a
    scale option to adapt animation to matching skeletons with different
    sizes  
- D3D9 window resizing issues resolved  
- Properly support downgrading to 16-bit
    textures again via
    TextureManager::getSingleton().enable32BitTextures(false)  
- Small bugfix for TerrainSceneManager
    (texture coords wrapped at 1 vertex too high)  
- Some MingW and some Linux distribution
    (e.g. Gentoo) build fixes  
- Fix multi-pass precision issue on nVidia
    when using GL  
- Fixed Dynlib* deleted 2 times when
    unloading plugins manually  
- Fixed BSP plugin creating materials in
    wrong group  
- Fixed unitialised member
    mQueuedForDeletion in Pass  
- Gui demo control name strings fixed  
- ResourceManager::load methods (and
    derivatives) now reload an existing Resource which is already present,
    but has been manually unloaded  
- Fixes Linux boost linking issue when
    --enable-threading used.  Modified slightly to check for the existence of
    the library during ./configure.  
- Linux - disabled RTTI and disabled the
    ability to use undefined symbols in plugin object files.  
- Fix ordering of directional lights in
    GPU programs to be consistent  
- Fix reloading of high-level programs  
- Don't do anything in SharedPtr::setNull
    if already null, avoids issues with shared mutex for null shared
    pointers.  
- PanelOverlayElement can now live with materials which have no
    texture units. 
v1.0.1 [Azathoth] (10 April 2005) -
Maintenance Release
  - Support for Cg 1.3  
- ConfigFile no longer crashes on empty
    parameter values  
- Fix crash when using sharing skeleton
    instance between entities  
- Shutdown primary rendertarget last, fix
    for crash on ATI OpenGL shutdown when using multiple targets.  
- Fixed shutdown bug when exiting in
    frameEnded and using software skinned entities  
- Fixed shutdown bug when using a Cg-based
    custom material in TerrainSceneManager  
- Tolerate not having loaded a texture to
    allow people making editors to apply materials which have missing
    resources.  
- Fixed the case of vertex_program in
    OgreGLGpuProgramManager.cpp  
- Modified --with-platform=GLX to look for
    X11 headers.  
- Fix display corruption on DDS with
    custom mipmaps via DevIL (ie GL); the custom mipmaps are not loaded yet
    so just ignore them. D3D9 unaffected.  
- Fix bug when using colour_op_ex and
    alpha_op_ex to supply manual colour and alpha at the same time in the
    same texture unit  
- Don't define *any* memory macros if the
    user doesn't want them or we are in release mode  
- Add CEGUI-OGRE.pc.in back into the
    CEGUIRenderer.  
- Fix bufferering area contention in Zip
     
- Fixed particle system so custom render
    queue id is properly passed through to renderer  
- Deal with zero-volume meshes in
    StaticGeometry  
- Actually use the left and right flags in
    StringUtil::trim  
- cppunit m4 fix needed for some autotools
    versions  
- Add Exception::getDescription so that it
    is possible to get the 'description' field of the exception without the
    rest. This is useful for printing or logging errors compactly.  
- Make SceneManager::setSkyBox,
    setSkyPlane and setSkyDome only set their respective enabled flags at the
    end of the function. This makes sure that when an exception happens the
    renderloop will not crash in its next iteration.  
- Added missing
    OgreParticleSystemRenderer.h to OgreMain/include/Makefile.am  
- Fixed sysrq key for GLX  
- Fixed GLX screenshot colours  
- Fixed material exporting in Milkshape
     
- Back buffer resizing, dedicated depth
    stencil and lost device / destruction fixes for additional swap chains
    under Direct3D9  
- Added many new shader auto parameters;
    includes support for equivalents of many RenderMonkey parameter bindings
     
- Allow usage of external input system
    (GGI, SDL) with GLX  
- Fixed display of self- or
    common-oriented billboards that are attached to a rotated node  
- Fix for CEGUI renderer under latest
    Linux nVidia drivers; also increases performance of CEGUI rendering  
- XSI mesh and skeletal animation exporter
     
- Added a missing vertexbuffer unlock in
    MeshSerializerImpl::writeGeometry.  
- Add explicitly named methods to
    ConfigFile to resolve ambiguity when using defaulted paramters  
- Minor documentation updates  
- Hardware occlusion support fixes  
- Clean up some support for D3D9 buffer
    lock options  
- Fixed modifiers getting lost on mouseup
     
- Frame / input event Listener removal now
    doesn't invalidate iterators anymore  
- Fixed ResourceManager::resourceExists
    bug which caused it to return true when the resource didn't exist.  
- Initialise mAnimController in the
    TextureUnitState copy contructor.  
- Fixed a problem which caused
    SkeletonInstance::unloadImpl() not to be called on destruction.  
- Remove StringConverter downcast warnings
    from MSVC  
- Fixed a memory leak in BspSceneManager
    when loading multiple maps  
- Custom DDS mipmaps now work in GL as
    well as D3D  
- scene_blend now works after D3D9 lost
    device recovery  
- Potential D3D9 blending state
    optimisation on some cards  
- Fixed loading of axes.mesh when
    displaying debug skeletons  
- Specular highlights now look the same in
    GL as D3D9, and secondary vertex colour now works correctly in GL  
- Code::Blocks support and projects added
     
- Invisible lights are now properly
    excluded from shadow calculations  
- FSAA support in Win32 OpenGL  
v1.0.0 Final [Azathoth] (21 February 2005)
- Major Release
The final 1.0.0 release includes a set of bugfixes to the
original release candidate, and will also see the first emergence of a
precompiled SDK for OGRE. Again, if you are upgrading from Hastur (0.15.x)
please read the Azathoth Porting
Notes Wiki Page. 
Bugfixes & changes since RC1:
  - Fixed a couple of memory
    leaks and a buffer overrun in StaticGeometry 
- API doc introduction page
    added 
- Fixed version numbers in
    Linux build system 
- ResourceGroupManager
    iterator bugs and memory leak on removing groups fixed 
- Vsync option was not being
    passed correctly in D3D rendersystems 
- Add external access to
    software blend data in Entity 
- Fix DynLib .so appending
    issue on Linux 
- Depth bias fixed on D3D9
    and GL 
- Fixed problem with particle
    systems in some fullscreen modes 
- Convert paletted images to
    RGBA automatically 
- Fix a skeleton issue when
    unloading & reloading resources 
- Disable fog when rendering
    shadow textures 
- Allow users to configure
    custom texture shadows; change caster & receiver material and texture
    format 
- Fix a shutdown problem when
    external apps linked directly to octree plugin 
- OgreGuiRenderer project
    moved from CEGUI source repository to Ogre repository to simplify
    dependencies 
- Be tolerant of externally
    created LogManager instances 
- Fix crash on invalid DXTx
    surface sizes 
- Image based fonts fixed 
- API documentation content
    and style updates 
- Update version of image
    scaling routines 
- Fix a bug with the
    translation of scene_blend modulate 
v1.0.0 RC1 [Azathoth] (5 February 2005) -
Major Release
1.0.0 is a big release, and due to us wanting to freeze interfaces at the
best possible level for 1.0.0 there are more interface breaking changes in
1.0.0 than is typical for previous releases. For the full lowdown on
upgrading your code from Hastur (0.15.x) to Azathoth (1.0.x) , please see the
Azathoth Porting
Notes Wiki Page. 
Enhancements and new Features:
  - Resource System Overhaul:  - 
      - Resources now addressed through
        shared pointers  
- Resource groups can now be defined
        so that you can load and unload resources in groups, and also set up
        group-specific search paths and scripting tasks.  
- Manual resource provision
        formalised; there is now a ManualLoader class that should be
        implemented when creating resources in code; this allows resource
        reloads to be possible in all cases  
- Streaming support - data is now
        accessed from Ogre's virtual file system solely through the
        DataStream class (and subclasses), meaning that accessing very large
        files efficiently is now possible while still using the resource
        system.  
- Loading progress reports; you can
        now register ResourceGroupListeners in order to implement loading
        bars  
- Thread safety - steps have been
        taked to make the resource system thread-safe to allow background
        loading. This feature is experimental and should only be used by
        experienced users.  
 
- Hardware Pixel Buffers & Image
    enhancements:  - 
      - Direct access to read / write to
        texture surfaces through the HardwarePixelBuffer class, including mip
        levels, cube surfaces and volume slices  
- Pixel formats have been extended,
        are now unambiguous across endianness, having separate 'native'
        endian formats and per-byte formats  
- Support for floating-point pixel
        formats, luminence formats, depth formats, and compressed formats  
- Image class has been tidied and
        enhanced to support composite images (like cube maps)  
- PixelUtil class now provides access
        to all pixel format conversion functions, with optimised templated
        conversion routines available in capable compilers  
 
- High Dynamic Range (HDR) rendering
    support:  
- Particle System enhancements: Particle
    systems are no longer limited to rendering with billboards, they render
    through instances of ParticleSystemRenderer subclasses, which can be
    implemented in plugins and added at runtime. Use of these alternative
    renderers is scriptable and can be used to implement alternative particle
    types like ribbons.  
- GUI changes:  - 
      - The OGRE internal GUI has been
        replaced with Crazy Eddie's
        GUI, a superior GUI system which follows the same kind of design
        principles as Ogre itself (portable, clean OO code).  
- Non-interactive overlays remain
        within OGRE itself, the classes have been renamed *OverlayElement
        instead of *GuiElement to reflect their role  
 
- Material
    changes:  - 
      - alpha_rejection has been moved from
        the texture_unit to the pass  
- Linking vertex colours to material
        attributes; you can now link vertex colours to any of the diffuse,
        specular, emissive or ambient material attribures, (e.g. 'ambient
        vertexcolour') rather than the linkage being implicit.  
- You can now define the number of
        mipmaps to be generated when loading a texture in the material
        script, from '0' to 'unlimited'  
 
- New StaticGeometry class allows you to
    batch up individual meshes and render thousands of them far more
    efficiently than if they were separate movable objects  
- GL now supports render textures larger
    than the frame buffer (through pbuffers)  
- D3D9 uses best possible filter method
    supported by hardware for generating Mipmaps, this can improve display
    quality especially when using trilinear filtering  
- Support all image types that DevIL can
    load: bmp, gif, hdr, ico, jpeg, pnm, mng and many more  
- GLX, SDL, D3D9: FSAA(Full Scene
    AntiAliasing) support improved  
- Image codecs are now completely
    replaceable, if you wish to remove the use of DevIL  
- Better support for 3D and compressed
    textures  
- New and improved demos:  - 
      - 'DynTex' shows how to procedurally
        generate textures using the new pixel buffer API  
- 'VolumeTex' demonstrates volume
        rendering and procedurally generated meshes and 3D textures  
- 'Grass' demonstrates the use of the
        new StaticGeometry class to batch up lots of individual meshes  
- 'Gui' has been updated to use Crazy
        Eddies GUI.  
 
- Interface to RenderSystem::createWindow
    and RenderSystem::createRenderTexture cleaned up and made more flexible
     
- Support Athlon 64 in native 64-bit mode
    (Linux)  
- Support running the OGRE core in double
    precision floating point mode through the use of OGRE_DOUBLE_PRECISION
     
- Add 'inverse transform' automatic shader
    parameter bindings  
- MinGW/Cygwin build system using auto*
    tools included  
- Visual C++ 2005 Beta support  
Bugfixes:
  - Fixed texture_view_proj shader parameter
    binding  
- Terrain now supports texture shadows  
- Fixed 4-weight hardware skinning vertex
    shader  
- Fixed possible texture frame overflow in
    animated texture controller  
- GLX: alt-tab now allows mouse to escape window