Ogre 1.12.4 released

I just published the Ogre 1.12.4 holiday release. Besides wishing you all a merry Christmas, there are new features that deserve an in-depth description.

OGRE_NODELESS_POSITIONING

Using Cameras and Lights without having them attached to a SceneNode was already deprecated with the 1.10 release and you got compiler warnings if you attempted to so since then.

With the OGRE_NODELESS_POSITIONING=OFF build option, we now allow actually taking advantage of having the positioning code in the Nodes.

With this option all positioning code in Cameras and Lights will be disabled, which results in faster updates and notably smaller memory footprint, which is

  • 12% less for Lights
  • 7% less for Cameras

As the node-less positioning API will be gone as well, you should make sure that you trigger no warnings in this regard.

For the most part the porting should look like

// before
mLight->setDirection(...);

// after
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(mLight);
mLight->getParentSceneNode()->setDirection(..., Node::TS_WORLD);

Also refer to the notes on the deprecation page. Some additional caveats to look out are:

  • SceneNodes do not use a fixed yaw axis, while Cameras do
  • SceneNode::setDirection uses TS_LOCAL by default while Cameras and Lights behaved like TS_WORLD

Background shader compilation

The GpuProgram code got refactored and now properly respects the prepare and load states. This means that the shaders can be loaded and pre-processed in a background thread.

With D3D this additionally allows compiling the shaders in the background, which is quite handy given that HLSL compilation times range in the order of seconds.

You probably are thinking “This is great and all, but how to do background resource loading in Ogre?”. Given that was a common question for years, there is finally an according tutorial.

Other notable changes

  • Continued effort of porting Samples away from Cg
  • Documented the Matrix conversion behavior between OGRE (row-major) and GLSL (column-major)
  • compilation with OGRE_CONFIG_DOUBLE=TRUE works again
  • The built-in shadow Renderer now correctly handles multiple shadow casting lights with the RTSS
  • The RTSS now fully supports linear skinning and Dual Quaternion skinning with shearing (GLSL, GLSLES and HLSL). The manual was updated for the available options.

Ogre 1.12.3 released

Ogre 1.12.3 was just released. Typically we do not write a specific announcement for minor updates, however this one contains some major new features that warrant this one.

Of course there is the usual slew of bug-fixes as well, which are listed here.

New Features

  • Reversed-depth buffer support for D3D11 and OpenGL3+. See the accompanying tutorial for details.
  • Full Unicode Path support, including ZIP archives, on Windows (on by default)
  • The Real Time Shader System, now uses ShaderModel4 style texture sampling, which fixes multiple samples (mainly depth and 1D texture related)
  • Overlays now properly support content scaling, which is needed for HiDPI screens.
  • Native ImGui support through the Overlay component
The new ImGui Sample

Ogre Ecosystem Roundup #3

following the last post about what is going on around Ogre, here is another update.

Ogre-next project split

So lets put first things first; Ogre v1 and Ogre v2 are not only different versions of Ogre, but rather separate projects. Now officially.

While this sounds like big news, actually it is not that much of a change. If you followed the development of Ogre, you already noticed that the two branches moved independently in two separate directions. Hence, we had to write the what version to choose page.

Generally, Ogre2 focuses on the latest and fastest techniques, Ogre1 focuses on backward compatibility and keeping old projects running. Also Ogre1 is developed on github, while Ogre2 still lives on bitbucket.

With bitbucket now abandoning mercurial, we decided to move Ogre2 to github as well. While we could have kept it in a branch, we instead decided to create a separate repository with own issue tracking, landing page etc. So, enter ogre-next.

This also makes it possible to follow semver with Ogre1 and make a 2.0 release when needed.

(more…)

Ogre 1.12 released

We just tagged the Ogre 1.12 release, making it the new current and recommended version. We would advise you to update wherever possible, to benefit from all the fixes and improvements that made their way into the new release.
This release represents 1 year of work from various contributors when compared to the previous 1.11 release. Compared to the last Ogre 1.11 release (1.11.5), however we are only talking about 4 months. Here you will mainly find bugfixes and the architectural changes that justify the version number bump.

For source code and precompiled SDKs, see the download page. Currently the Android is still missing. We will update the download page as it becomes available.

(more…)