ogre_16_logoWe’re pleased once again to offer another maintenance release for the stable version of Ogre, in this case version 1.6.3. As you might expect, this release brings more bugfixes for your v1.6 based application, and you can get the release from our download page.

Full details of the contents of the release can be found in the changelog, which is reproduced after the jump. Enjoy!

  • 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 warnings
  • Fix 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) 3×4 matrix – this could occur even if the param was declared as 4×4 but cast to 3×3.
  • 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