ByatisNotes         ChangeLog and porting notes for OGRE 1.8.0 "Byatis"

Welcome to the roadmap, ChangeLog and porting notes for OGRE 1.8.0 "Byatis"

H.P. Lovecraft wrote:
Byatis, the serpent-bearded, the god of forgetfulness, came with the Great Old Ones from the stars, called by obeisances made to his image, which was brought by the Deep Ones to Earth. He may be called by the touching of his image by a living being. His gaze brings darkness on the mind; and it is said that those who look upon his eye will be forced to walk to his clutches. He feasts upon those who stray to him, and from those upon whom he feasts he draws a part of their vitality.


  • Terrain changes
    • Terrain vertex data is now compressed by default, reducing the vertex size by 40% on the GPU
    • Terrain data is saved in a compressed format (Deflate) resulting in smaller disk sizes (uncompressed data files are still supported)
  • DeflateStream added
    • Wraps any other stream to compress / decompress data via the deflate algorithm
    • If given an uncompressed stream to load, automatically falls back on a passthrough read for easy compatibility
  • Vertex normals can now be animated in morph and pose animation
    • Normals can be included in vertex morph keyframes, and specified as part of reference poses
    • Software, SSE and hardware (shader) pipelines supported
    • Mesh format has been upgraded to support the new data
    • Note: Animated normals are currently not compatible with stencil shadows because of the conflicting vertex structure requirements
  • Versioned mesh writing
    • MeshSerializer can now write all versions of .mesh back to Ogre 1.0 rather than only being able to write in the latest version format. This should make it easier for tool & exporter developers who can use the latest code but still support users on older versions
    • OgreMeshUpgrader now accepts an optional -V parameter where you can specify the target version to write
  • New Instancing system
    • Completely new InstanceManager system written from scratch, which is more robust, supports extending it with multiple techniques
    • Interface and behavior very similar to Entity, to mantain consistency and allow easy switch between Entities and Instanced Entities. Instanced Entities can be attached to scene nodes.
    • Implemented ShaderBased technique (up to 80 instances per batch, matrices stored in vertex shader's constant registers)
    • Implemented VTF technique (huge ammount of instances per batch stored in a texture, needs Vertex Texture Fetch)
    • Added "New Instancing" sample to show the capabilities, limits, and features of this new system.
  • A cache of the binary representation of shaders.

Another (partial) changelog can be found directly in the source:

Porting notes

  • TerrainSceneManager has been removed. You should be using Components/Terrain now.

Annotated roadmap

  • {LEX()}DirectX{LEX} 11 render system (d3d11)
    • RT shader system support for shader model 4/5 with dynamic linking.
    • Multi window support.
    • Multi device support.
    • Tessellation - support for new pipeline stages - Hull-Shader and Domain-Shader.
    • Multithreaded Rendering - support for deferred rendering.
    • Floating-point viewports.
    • Some demos of the new features.

  • New threading model
    • No general thread safety on majority of classes except 'join points' - which is WorkQueue and handlers
    • Task-based, data encapsulation (see new Terrain in 1.7)
    • Default to processing all {LEX()}GPU{LEX} interaction in one thread, but allow multi-threaded later where supported (e.g. Dx11)
    • Greater support for localised data ownership for tasks
  • World-assigned textures and shader parameters
    • Support easier integration of texture data provided by the world depending on location (e.g. static shadow textures, environment maps)
    • Also support shader parameters which vary according to world location (projection, fade params etc.)
    • Loosely coupled, pluggable
  • Skeletal animation bounding box updates
    • One 'update' BB which covers the mesh at every animation point
    • Dynamic {LEX()}AABB{LEX} which updates based on bone extents, plus padding factor
  • Sampler matching with {LEX()}Cg{LEX} / {LEX()}HLSL{LEX}
    Currently you need to use ': register(s0)' etc to match up samplers and texture_unit entries reliably. Allow the option of matching based on texture_unit name instead?
  • RT shader system improvements
    • Photoshop blending modes - done
    • HLSL 4 support (for D3D10 and D3D11) - done (but no dynamic linking for now)
    • {LEX()}OpenGL{LEX} ES 2.x support - done
  • Instance Manager improvements
    • Support for multiple submeshes, not just the first one done
    • Support for true HW instancing - done
  • Other
    • Vertex Attribute Object (VAO) support for OpenGL and OpenGL ES render systems - waiting for 1.9
    • Integrate glsl-optimizer for OpenGL ES 2.x. ( - done
    • NEON and possibly VFP accelerated CPU skinning - waiting for 1.9
    • EAGLSharegroup support for iOS. Allowing use of OGRE in its own thread. done
    • An option to embed zip files of OGRE resources as part of programs that use OGRE.
    • Basic Cg shaders support in OpenGL ES 2.x. done