{mosimage}Yes, the time has finally arrived – OGRE 1.4.0, aka ‘Eihort’, is now deemed to be a final stable release! This means that 1.4.x is now our officially supported version, having passed relatively unscathed through 2 release candidates to get to this stage. If you were holding off updating before, we strongly recommend you update now since there will be no more releases on the Dagon (1.2) branch from this point onwards. As mentioned previously, please read the Eihort Porting Notes for advice on how to upgrade your applications.

For details on what’s new in Eihort over Dagon, please see the original 1.4.0 RC1 announcement. In the full detail of this post you will find the changes in this version since the last release candidate, RC2.

Please note that this release now features updated tools and also a new SDK for Mac OSX. We hope you enjoy using OGRE!


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
Exit mobile version