{mosimage}Yes, it's that time again for another maintenance release for those using the stable Dagon (OGRE v1.2) branch. You can find the detailed changelog in the complete version of this post, apart from the usual source updates users of Softimage XSI v5.x should note that an updated exporter is available. Head over to the Downloads Area to grab the new version.

We'll carry on doing these bugfixing releases until the official release of the next major stable branch (Eihort, OGRE v1.4) which is still scheduled for the end of the year. As usual, if you're an experienced developer we encourage you to try out the CVS version (although probably not for production use unless you're feeling brave) if you want to see what you'll be getting, although not officially stable or finished yet it's generally very usable.


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