Welcome to the ChangeLog and Porting Notes for OGRE 1.9.0 "Ghadamon".
H.P. Lovecraft wrote:
Ghadamon. A Seed of Azathoth. A bluish-brown, slimy monstrosity riddled with holes, and an occasional malformed head.
Table of contents
ChangeLog
Core Improvements
- OgreMain
- Extract the overlays from OgreMain and transform it into a own overlay component
- Progressive Mesh improvements and new Mesh LOD sample.
- Loads of documentation updates
- Added Mesh::mergeAdjacentTexcoords to collapse two adjacent texcoords into one (i.e. float2 texcoord0 & float2 texcoord1 become float4 texcoord0)
- According to the documentation, the default SceneManager ambient light should be black, which is wasn't though.
- SceneManager: updateSceneGraph should happen BEFORE prepareShadowTextures.
- AtomicScalar operators should be returning their value. Only affects using GCC or Clang.
- New class ProgressiveMeshGenerator to degenerate mesh detail at runtime.
- Bug fix for Sphere::merge. Inaccurate results can occur if one sphere does not fully encompass the other.
- New LOD strategies 'distance_box' and 'screen_ratio_pixel_count'. Details, see Ogre Manual.
- SharedPtr moved to use atomics (related API change see below in the porting notes).
- SubMesh has a new method: clone(const String& newName, Mesh *parentMesh) to perform deep copies of SubMesh objects. The second parameter is optional and can be used to reparent a SubMesh.
- Removed Configfile::load(const String& filename, const String& resourceGroup, const String& separators, bool trimWhitespace) because it can easily be ambiguous. If you wish to load from a resource group, use the existing function loadFromResourceSystem. The arguments are identical to the removed function. See OGRE-175.
- New Volume Rendering component with LOD. See GSoC 2012 Volume Rendering
- Many Terrain improvements.See GSoC 2012 Terrain Improvements
- RTSS
- Changed error handling of RTSS sub-render state parameter creation. Sub-render state now throws exception on errors
- Added 2 new demo samples: multiple lights and textured fog
- CgProgramManager
- Added support for high-level output profiles glslv/glslf/glslg and hlslv/hlslf (glslg not fully working yet)
Platform Support
- Android Port
- Remove eclipse based android port
- CMake based build support
- Create find Ant / NDK packages (currently Ant and the NDK must be in the global path)
- Generate android make files for the sample browser
- Use android tool chain to compile OGRE as static lib
- Cleanup RTSS (Remove OgreStringSerialiser)
- Improve platform integration
- Add Android log listener into OgreRoot
- Disable Filesystem- / Zip- / EmbeddedZip- Archives on android
- Resource system improvements
- OgreAPKFileSystemArchive to handle file access inside the APK
- OgreAPKZipArchive so we can handle zip files inside the APK (APK is also compressed using zip)
- Improve EGL support
- Create concrete subclasses of EGL-Support/Window/Context
- Handle context creation / configs inside OGRE
- Resource recreation / Handle it like DX device lost / restore
- Add managed resource class which every resource derive from (only active on Android - handled via macros)
- Recreation of Texture, Shader, HardwareVertexBuffer
- ETC1 texture codec
- PKM support
- Sample browser
- Add touch input support
- Build a APK file via CMake command line
- Add rotation support
- Fix / Enable more samples
- Compositor not working
- Improve CPU/ vendor detection
- Add how to build it on Linux / OSX / Win32
- Provide pre-compiled dependencies
- Fix our dependencies so the can compile against the android tool chain
- Windows Metro style application (WinRT)
- Add support as a new platform (named WinRT).
- Create a WinRT project for the sample browser.
- Create a how to compile file.
- Get all existing samples to work with the D3D11 render system.
- Multi monitor\device support.
- Windows Phone 8 port.
- OS X
- Add a helper function to get a sandbox friendly temp file name for iOS and OS X.
- Other fixes to file handling in response to App Store rules.
- Support for building with libc++ on OS X.
- Proper example of DisplayLink usage in the SampleBrowser.
- Plugins and components are now built as frameworks.
- Add escape key as a shortcut for Cancel. Fix crash when hitting cancel as well.
RenderSystems
- DirectX 11
- Improvements from GSoC project.
- Add tessellation shaders support.
- Add tessellation sample.
- Add dynamic linking support.
- DirectX 9Ex support
- Added OpenGL 3+ RenderSystem. Still marked as experimental and under heavy development.
- OpenGL ES
- GLES 2 terrain support.
- OpenGL ES state and uniform caches.
- Rewrote PVRTC codec, adding cube map, 3D and mipmap support. Only files created with PVRTexTool are supported now, not Apple's texturetool utility.
- Experimental OpenGL ES 3.0 support.
- GL RenderSystem
- GLEW updated to 1.9.0.
- Remove restriction that all GLSL programs have the same matrix order when linking.
- GLSL binary shader cache now works properly (OGRE-251)
JIRA Tickets
- Numerous other bug fixes, documentation fixes and updates and general code improvements including, but not limited to the following list:
To see the complete list, check out this JIRA filter, since we stopped adding the closed tickets here after number #217: JIRA - Ogre3D 1.9 fixed issue filter
- OGRE-2 - OverlayComponent break linux build
- OGRE-5 - Hardware gamma corrected textures are not working with Nvidia cards (Windows)
- OGRE-8 - StringConverter localisation issues
- OGRE-9 - DFREEIMAGE_LIB prevents dynamic linking to FreeImage
- OGRE-12 - Lots of PixelFormat are missing corresponding DXGI_FORMAT in D3D10Mappings
- OGRE-14 - Bad image data for single-channel opacity maps
- OGRE-16 - Material alpha effect error
- OGRE-18 - Colurmap image file must have mipmaps to produce colourmap.
- OGRE-19 - Alternate behavior for DDS cubemap loading
- OGRE-21 - RenderSystemCapabilitiesCreated event needs to be added to all render systems
- OGRE-28 - Papercut Missing array versions of some light auto parameters
- OGRE-32 - Bloom + Wireframe Issue
- OGRE-34 - Papercut Website links to dependency package
- OGRE-37 - shadow_receiver_vertex_program_ref in a material corrupts shadow behaviour for other materials
- OGRE-40 - Ogre fails to build with TBB on Linux
- OGRE-44 - Race condition
- OGRE-45 - Issues with building OGRE from src
- OGRE-46 - Cubemap with combinedUVW is sampled improperly (ogre 1.8, OpenGL ES 2.0, iOS4.3.3 iPod4)
- OGRE-50 - Problem with stencil shadows issued from a directional light
- OGRE-53 - FrameListener and Root::renderOneFrame() confusion
- OGRE-54 - In D3D9RenderSystem when lost device can not clear viewport.
- OGRE-56 - MeshSerializerImpl::calcGeometrySize returns incorrect value
- OGRE-59 - Debian packaging: using system's TinyXML before resorting to in-source copy
- OGRE-60 - Debian packaging: Allow several versions of OGRE installed at the same time
- OGRE-61 - Terrain sample, setShadowTextureCasterMaterial is misleading
- OGRE-64 - Isometric surface sample broken for Mac OpenGL target
- OGRE-65 - Compositors interact poorly with uses of scene manager visibility flags
- OGRE-67 - Water sample causes buffer leaks on configuration change
- OGRE-69 - Scaled SceneNode's getWorldBoundingSphere() incorrect since 1.7
- OGRE-70 - OS X: CMake install does not install framework, FindOGRE fails
- OGRE-74 - Microcode caching broken when using GLSL shaders
- OGRE-75 - Render system config window crash on linux.
- OGRE-76 - Please consider using another font for samples
- OGRE-78 - "receive_shadows off" doesn't work with custom pixel and vertex shaders.
- OGRE-80 - Setting Pixel Format PF_BYTE_BGRA has no effect in OGRE 1.8.1
- OGRE-84 - Make iOS build simulator/device libs to separate locations
- OGRE-87 - Example framework updates for Overlay Component
- OGRE-88 - Applications not rendered on android 4.1 (asus eee pad) after system upgrade
- OGRE-90 - HTML.cfg.in does not handle spaces in directory name (also OUTPUT directory)
- OGRE-91 - Stack overflow in SceneManager::destroySceneNode
- OGRE-93 - GCC warning
- OGRE-96 - Direct3D9 RenderSystem cannot be built when Win8-SDK (or Visual Studio 2012) is installed.
- OGRE-99 - Little bug in SceneManager::_renderScene
- OGRE-100 - Switching render systems while a sample is still active crashes the application
- OGRE-101 - Hitting ESC in the BSP sample does not show the menu
- OGRE-103 - Some Compositor samples not working with OpenGL
- OGRE-104 - SSAO Sample doesn't work correctly in OpenGL
- OGRE-105 - Shader System Sample: Switching to PSSM3 shadows crashes the application
- OGRE-106 - Multi Light Sample doesn't start because of incorrect assumptions about render device
- OGRE-107 - Shadows Sample: Crash when switching to LiSPSM
- OGRE-110 - Material::getReceiveShadows() is ignored
- OGRE-111 - RenderQueueGroupMap sorting is broken
- OGRE-112 - Multi Light Sample do not work without CG plugin
- OGRE-117 - Debug builds of unit tests and samples do not use debug versions of libs
- OGRE-119 - Papercut TBB is broken in VS 2012
- OGRE-120 - DirectX9 make fails due changes in include path
- OGRE-121 - SampleBrowser_d crashes due to uninitialized GpuProgramManager singleton
- OGRE-122 - Broken compile: OgreWindowEventUtilities.h uses unknown type: RenderWindowList
- OGRE-124 - Matrix3::QDUDecomposition returns wrong value
- OGRE-125 - OGRE Root should take absolute paths as well.
- OGRE-128 - Direct3D9 rendersystem crash on WindowsXP
- OGRE-129 - Cannot build Ogre using clang with -stdlib=libc++ option on OS X
- OGRE-130 - Incorrect handling of mip map dimensions in uncompressed DDS
- OGRE-131 - Compiling error with POCO with thread support 2 on Ubuntu 12.04
- OGRE-132 - Missing OgreCommon.h include in 1.9
- OGRE-133 - Render subsystem GL3Plus is missing in FindOGRE.cmake
- OGRE-137 - Letters damage in TextArea with center alignment while font material has no filtering
- OGRE-138 - Change ResourceManager::getNextHandle() to be lock-free by using atomic counter
- OGRE-139 - Cannot compile D3D11: Missing simultaneous render target count
- OGRE-140 - Material errors in SampleBrowser
- OGRE-142 - OgreHardwareVertexBuffer and many other places use 32-bit floats even when OGRE built to use 64-bit floats
- OGRE-144 - Mercurial Windows configuration
- OGRE-148 - Build error in OgreD3D11Texture.h using MinGW
- OGRE-151 - Startup Crash when using GL3+ on Windows
- OGRE-156 - ManualObject does not log an error message if the material specified is invalid
- OGRE-162 - RTSS crashes on update after removing cloned material
- OGRE-167 - Undeclared variable at OgreGLSLESProgramPipeline.cpp
- OGRE-168 - Debian packaging: using system's GLEW before resorting to in-source copy
- OGRE-171 - OpenGL OgreWin32Window.cpp has a dangling pointer
- OGRE-172 - Optimization suggestion for MinTextureStateChangeHashFunc
- OGRE-174 - ZLib default dependency on OS X makefile build
- OGRE-177 - ResourceGroupManager::ResourceGroup public/protected mismatch
- OGRE-179 - ResourceGroupManager::ResourceGroup::removeFromIndex --- function have bug
- OGRE-180 - OgreD3D9Plugin.cpp typo in MingW header
- OGRE-181 - On Linux you can't run SampleBrowser from install dir.
- OGRE-182 - Resource manager memory budget feature has no effect
- OGRE-184 - Papercut Rename DistanceLodStrategy::getReferenceViewEnabled to isReferenceViewEnabled
- OGRE-185 - Papercut List of inaccuracies and bugs of documentation
- OGRE-186 - Papercut Rename Codec::code to Codec::encode
- OGRE-187 - Papercut Need some more explanations that means "Reference view" in DistanceLodStrategy
- OGRE-190 - EAGL2Context leaked on iOS
- OGRE-193 - Unity OpenGL3 Build Fails on Linux
- OGRE-195 - loadImage for GLES2 Rendersystem changes underlying Image format
- OGRE-196 - Missing header in DX11 render system
- OGRE-197 - Terrain component generates wrong number of blend textures
- OGRE-199 - SampleBrowser segfaults Linux unloading Sample_Volume*
- OGRE-204 - Improve material LOD distance strategy for flat objects
- OGRE-210 - WIN Linking debug and release version of boost
- OGRE-211 - Migrate SharedPtr to atomics
- OGRE-212 - OgreGLES2RenderSystem.cpp compile error on Android/iOS
- OGRE-213 - GLRenderSystem::_createDepthBufferFor may crash if it needs separate depth and stencil buffers
- OGRE-214 - Black screen: no shaders are compiled when "Separate shader objects: yes"
- OGRE-216 - VS: Specify Precompiled Header Memory Allocation Limit
- OGRE-217 - Missing PixelFormatDescription entries in _pixelFormats in OgrePixelFormat.cpp causing crash
Porting Notes
- GPU_ATI has been renamed to GPU_AMD
- Rectangle class has been removed. It was only used in OverlayElement. RealRect already included the same functionality and can be used as a replacement.
- Minimum OS X version is now 10.6
- For debug mode, Ogre now uses "Plugins_d.cfg" instead of "Plugins.cfg"
- ProgressiveMesh class has been removed. Use ProgressiveMeshGenerator instead.
- ShaderGenerator::finalize has been renamed to ShaderGenerator::destroy.
- On iOS when using GL ES 2 and an external view controller, Ogre will not add the view to your window or call makeKeyAndVisible(). You must perform both those steps in your own code.
- OgreBites::SdkTrayManager constructor changed. To pass mouse and keyboard the following lines are now needed:
Copy to clipboard
OgreBites::InputContext inputContext; inputContext.mMouse = m_pMouse; inputContext.mKeyboard = m_pKeyboard; OgreBites::SdkTrayManager* pTrayMgr = new OgreBites::SdkTrayManager("TrayMgr", m_pRenderWnd, inputContext, this);
- As OgreOverlay is now its own component, you need to manually initialize it, with the following two lines of code (m_pSceneMgr is a pointer to your current Ogre::SceneManager):
Copy to clipboard
Ogre::OverlaySystem* pOverlaySystem = new Ogre::OverlaySystem(); m_pSceneMgr->addRenderQueueListener(pOverlaySystem);
- Ogre::RenderSystem::set/getWaitForVerticalBlank() was removed due to redundancy, since Ogre::RenderWindow already had VSync settings.
Known Issues
n/a
Annotated Roadmap
- Android Port (Owner: Wolfmanfx)
- Remove eclipse based android port [done]
- CMake based build support
- Create find Ant / NDK packages (currently Ant and the NDK must be in the global path)
- Generate android make files for the sample browser [done]
- Use android tool chain to compile OGRE as static lib [done]
- Cleanup RTSS (Remove OgreStringSerialiser) [done]
- Improve platform integration
- Add Android log listener into OgreRoot [done]
- Disable Filesystem- / Zip- / EmbeddedZip- Archives on android [done]
- Resource system improvements
- OgreAPKFileSystemArchive to handle file access inside the APK [done]
- OgreAPKZipArchive so we can handle zip files inside the APK (APK is also compressed using zip) [done]
- Improve EGL support
- Create concrete subclasses of EGL-Support/Window/Context [done]
- Handle context creation / configs inside OGRE [done]
- Resource recreation / Handle it like DX device lost / restore
- Add managed resource class which every resource derive from (only active on Android - handled via macros) [done]
- Recreation of Texture, Shader, HardwareVertexBuffer [done]
- Recreation of FBO's (not working atm)
- ETC1 texture codec
- PKM support [done]
- KTX support
- Sample browser
- Add touch input support [done]
- Build a APK file via CMake command line [done]
- Add rotation support [done]
- Fix / Enable more samples
- Compositor not working
- Improve CPU/ vendor detection [done]
- Add how to build it on Linux / OSX / Win32 [in progress]
- Provide pre-compiled dependencies [done]
- Fix our dependencies so the can compile against the android tool chain [done]
- OgreMain
- Extract the overlays from OgreMain and transform it into a own overlay component [done]
- RTSS
- Changed error handling of RTSS sub-render state parameter creation. Sub-render state now throws exception on errors [done]
- Added 2 new demo samples: multiple lights and textured fog [done]
- DirectX 11 render system
- Add tessellation shaders support. [done]
- Add tessellation sample. [done]
- Add dynamic linking support. [done]
- Windows Metro style application (WinRT)
- Add support as a new platform (named WinRT). [done]
- Create a WinRT project for the sample browser. [done]
- Create a how to compile file. [done]
- Get all existing samples to work with the D3D11 render system.
- Multi monitor\device support.
- OpenGL render system
- Add tessellation shaders support.
- Windows Phone 8 port - [done]