GhadamonNotes        
Print

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.

 

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(external link)

    • OGRE-2(external link) - OverlayComponent break linux build
    • OGRE-5(external link) - Hardware gamma corrected textures are not working with Nvidia cards (Windows)
    • OGRE-8(external link) - StringConverter localisation issues
    • OGRE-9(external link) - DFREEIMAGE_LIB prevents dynamic linking to FreeImage
    • OGRE-12(external link) - Lots of PixelFormat are missing corresponding DXGI_FORMAT in D3D10Mappings
    • OGRE-14(external link) - Bad image data for single-channel opacity maps
    • OGRE-16(external link) - Material alpha effect error
    • OGRE-18(external link) - Colurmap image file must have mipmaps to produce colourmap.
    • OGRE-19(external link) - Alternate behavior for DDS cubemap loading
    • OGRE-21(external link) - RenderSystemCapabilitiesCreated event needs to be added to all render systems
    • OGRE-28(external link) - Papercut Missing array versions of some light auto parameters
    • OGRE-32(external link) - Bloom + Wireframe Issue
    • OGRE-34(external link) - Papercut Website links to dependency package
    • OGRE-37(external link) - shadow_receiver_vertex_program_ref in a material corrupts shadow behaviour for other materials
    • OGRE-40(external link) - Ogre fails to build with TBB on Linux
    • OGRE-44(external link) - Race condition
    • OGRE-45(external link) - Issues with building OGRE from src
    • OGRE-46(external link) - Cubemap with combinedUVW is sampled improperly (ogre 1.8, OpenGL ES 2.0, iOS4.3.3 iPod4)
    • OGRE-50(external link) - Problem with stencil shadows issued from a directional light
    • OGRE-53(external link) - FrameListener and Root::renderOneFrame() confusion
    • OGRE-54(external link) - In D3D9RenderSystem when lost device can not clear viewport.
    • OGRE-56(external link) - MeshSerializerImpl::calcGeometrySize returns incorrect value
    • OGRE-59(external link) - Debian packaging: using system's TinyXML before resorting to in-source copy
    • OGRE-60(external link) - Debian packaging: Allow several versions of OGRE installed at the same time
    • OGRE-61(external link) - Terrain sample, setShadowTextureCasterMaterial is misleading
    • OGRE-64(external link) - Isometric surface sample broken for Mac OpenGL target
    • OGRE-65(external link) - Compositors interact poorly with uses of scene manager visibility flags
    • OGRE-67(external link) - Water sample causes buffer leaks on configuration change
    • OGRE-69(external link) - Scaled SceneNode's getWorldBoundingSphere() incorrect since 1.7
    • OGRE-70(external link) - OS X: CMake install does not install framework, FindOGRE fails
    • OGRE-74(external link) - Microcode caching broken when using GLSL shaders
    • OGRE-75(external link) - Render system config window crash on linux.
    • OGRE-76(external link) - Please consider using another font for samples
    • OGRE-78(external link) - "receive_shadows off" doesn't work with custom pixel and vertex shaders.
    • OGRE-80(external link) - Setting Pixel Format PF_BYTE_BGRA has no effect in OGRE 1.8.1
    • OGRE-84(external link) - Make iOS build simulator/device libs to separate locations
    • OGRE-87(external link) - Example framework updates for Overlay Component
    • OGRE-88(external link) - Applications not rendered on android 4.1 (asus eee pad) after system upgrade
    • OGRE-90(external link) - HTML.cfg.in does not handle spaces in directory name (also OUTPUT directory)
    • OGRE-91(external link) - Stack overflow in SceneManager::destroySceneNode
    • OGRE-93(external link) - GCC warning
    • OGRE-96(external link) - Direct3D9 RenderSystem cannot be built when Win8-SDK (or Visual Studio 2012) is installed.
    • OGRE-99(external link) - Little bug in SceneManager::_renderScene
    • OGRE-100(external link) - Switching render systems while a sample is still active crashes the application
    • OGRE-101(external link) - Hitting ESC in the BSP sample does not show the menu
    • OGRE-103(external link) - Some Compositor samples not working with OpenGL
    • OGRE-104(external link) - SSAO Sample doesn't work correctly in OpenGL
    • OGRE-105(external link) - Shader System Sample: Switching to PSSM3 shadows crashes the application
    • OGRE-106(external link) - Multi Light Sample doesn't start because of incorrect assumptions about render device
    • OGRE-107(external link) - Shadows Sample: Crash when switching to LiSPSM
    • OGRE-110(external link) - Material::getReceiveShadows() is ignored
    • OGRE-111(external link) - RenderQueueGroupMap sorting is broken
    • OGRE-112(external link) - Multi Light Sample do not work without CG plugin
    • OGRE-117(external link) - Debug builds of unit tests and samples do not use debug versions of libs
    • OGRE-119(external link) - Papercut TBB is broken in VS 2012
    • OGRE-120(external link) - DirectX9 make fails due changes in include path
    • OGRE-121(external link) - SampleBrowser_d crashes due to uninitialized GpuProgramManager singleton
    • OGRE-122(external link) - Broken compile: OgreWindowEventUtilities.h uses unknown type: RenderWindowList
    • OGRE-124(external link) - Matrix3::QDUDecomposition returns wrong value
    • OGRE-125(external link) - OGRE Root should take absolute paths as well.
    • OGRE-128(external link) - Direct3D9 rendersystem crash on WindowsXP
    • OGRE-129(external link) - Cannot build Ogre using clang with -stdlib=libc++ option on OS X
    • OGRE-130(external link) - Incorrect handling of mip map dimensions in uncompressed DDS
    • OGRE-131(external link) - Compiling error with POCO with thread support 2 on Ubuntu 12.04
    • OGRE-132(external link) - Missing OgreCommon.h include in 1.9
    • OGRE-133(external link) - Render subsystem GL3Plus is missing in FindOGRE.cmake
    • OGRE-137(external link) - Letters damage in TextArea with center alignment while font material has no filtering
    • OGRE-138(external link) - Change ResourceManager::getNextHandle() to be lock-free by using atomic counter
    • OGRE-139(external link) - Cannot compile D3D11: Missing simultaneous render target count
    • OGRE-140(external link) - Material errors in SampleBrowser
    • OGRE-142(external link) - OgreHardwareVertexBuffer and many other places use 32-bit floats even when OGRE built to use 64-bit floats
    • OGRE-144(external link) - Mercurial Windows configuration
    • OGRE-148(external link) - Build error in OgreD3D11Texture.h using MinGW
    • OGRE-151(external link) - Startup Crash when using GL3+ on Windows
    • OGRE-156(external link) - ManualObject does not log an error message if the material specified is invalid
    • OGRE-162(external link) - RTSS crashes on update after removing cloned material
    • OGRE-167(external link) - Undeclared variable at OgreGLSLESProgramPipeline.cpp
    • OGRE-168(external link) - Debian packaging: using system's GLEW before resorting to in-source copy
    • OGRE-171(external link) - OpenGL OgreWin32Window.cpp has a dangling pointer
    • OGRE-172(external link) - Optimization suggestion for MinTextureStateChangeHashFunc
    • OGRE-174(external link) - ZLib default dependency on OS X makefile build
    • OGRE-177(external link) - ResourceGroupManager::ResourceGroup public/protected mismatch
    • OGRE-179(external link) - ResourceGroupManager::ResourceGroup::removeFromIndex --- function have bug
    • OGRE-180(external link) - OgreD3D9Plugin.cpp typo in MingW header
    • OGRE-181(external link) - On Linux you can't run SampleBrowser from install dir.
    • OGRE-182(external link) - Resource manager memory budget feature has no effect
    • OGRE-184(external link) - Papercut Rename DistanceLodStrategy::getReferenceViewEnabled to isReferenceViewEnabled
    • OGRE-185(external link) - Papercut List of inaccuracies and bugs of documentation
    • OGRE-186(external link) - Papercut Rename Codec::code to Codec::encode
    • OGRE-187(external link) - Papercut Need some more explanations that means "Reference view" in DistanceLodStrategy
    • OGRE-190(external link) - EAGL2Context leaked on iOS
    • OGRE-193(external link) - Unity OpenGL3 Build Fails on Linux
    • OGRE-195(external link) - loadImage for GLES2 Rendersystem changes underlying Image format
    • OGRE-196(external link) - Missing header in DX11 render system
    • OGRE-197(external link) - Terrain component generates wrong number of blend textures
    • OGRE-199(external link) - SampleBrowser segfaults Linux unloading Sample_Volume*
    • OGRE-204(external link) - Improve material LOD distance strategy for flat objects
    • OGRE-210(external link) - WIN Linking debug and release version of boost
    • OGRE-211(external link) - Migrate SharedPtr to atomics
    • OGRE-212(external link) - OgreGLES2RenderSystem.cpp compile error on Android/iOS
    • OGRE-213(external link) - GLRenderSystem::_createDepthBufferFor may crash if it needs separate depth and stencil buffers
    • OGRE-214(external link) - Black screen: no shaders are compiled when "Separate shader objects: yes"
    • OGRE-216(external link) - VS: Specify Precompiled Header Memory Allocation Limit
    • OGRE-217(external link) - 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:
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):
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(external link))
    • 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]

Discussions about it

 


Contributors to this page: edoardo782 points  , wolfmanfx398 points  , spacegaier6073 points  , scrawl795 points  , Oogst6 points  , mattan furst89 points  , masterfalcon435 points  , cabalistic71 points  and assaf raman87 points  .
Page last modified on Friday 10 of January, 2014 17:25:31 UTC by edoardo782 points .


The content on this page is licensed under the terms of the Creative Commons Attribution-ShareAlike License.
As an exception, any source code contributed within the content is released into the Public Domain.