OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

Overview

GitHub release Join the chat at https://gitter.im/OGRECave/ogre Patreon

Summary

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

Build Status
Linux, OSX, Android, iOS CI Build
MSVC Build status

Index Of Contents

  • What's New?
    A summary of the new and altered features in this release.
  • Building the core OGRE libraries
    If you're using the full source release, this will help you build it. If you're using a precompiled SDK then most of the work has already been done for you, and you should use the sample projects to see how to compile your own code against OGRE.
  • The OGRE Manual
    A high-level guide to the major parts of the engine and script reference.
  • API Reference
    The full OGRE API documentation, as generated from the (heavily!) commented source.
  • The OGRE Tutorials
    A gold mine of tutorials, tips and code snippets which will help you get up to speed with the engine.

Try it

Features

For an exhaustive list, see the features page and try our Sample Browser. For a quick overview see below

Integrated Bump Mapping Integrated shadows
HW & SW skeletal animation Multi-layer Terrain
Automatic Rendertarget pipelining (Compositors) Volume Rendering with CSG & Triplanar Texturing
Dear ImGui Particle Effects

Who is using it?

Open Source

Closed Source

Contributing

We welcome all contributions to OGRE, be that new plugins, bugfixes, extensions, tutorials, documentation, example applications, artwork or pretty much anything else! If you would like to contribute to the development of OGRE, please create a pull request.

Getting Support

Please use our community support forums if you need help or think you may have found a bug.

Licensing

Please see the full license documentation for details.

Issues
  • Ogre3d Compilation issues

    Ogre3d Compilation issues

    There is a bug encountered when compiling ogre3d 1.10 on visualstudio 2015(not sure if other visualstudio), my best guess is it's within the dendancies as they maybe directed for ogre 2.xx. I'd like to suggest we have a subrepo for dependancies with version tags, or the ogre team creates a tool for compiling ogre, something like an installer that uses cmake and visual studio. I think Noob's will love this. It would infact increase the userbase greatly. I.e, it should request a user for boost directory, then proceed to ask the user which version of ogre the user wants, and install the relevant and tested dependancies. Even a simple script will do. At the end of it all, the user should end up with an sdk dir containing ogre. This is the only problem with ogre. I'm an experienced c++ dev, and yet I can't get ogre to work.

    opened by kenkit 35
  • NEON softwareVertexSkinning fails

    NEON softwareVertexSkinning fails

    System Information

    • Ogre Version: 1.12.1 (Master)
    • Operating System / Platform: IOS
    • RenderSystem: GLSLES2

    Detailled description

    The RTSS shader fail to compile when the object have a skeleton with a simple texture on IOS It result as a "broken" mesh split by all faces.

    Ogre.log

    Fri May 17 17:11:46 201 : Material scheme switch from ShaderGeneratorDefaultScheme to ShaderGeneratorDefaultScheme on material : Material_#25
    Material scheme switch from ShaderGeneratorDefaultScheme to ShaderGeneratorDefaultScheme on material : Material_#25
    
    Fri May 17 17:11:46 201 : Vertex Program:55cc4c55994686caee7ecb81e6ce6735_VS Fragment Program:4a08102476ab588eaadffaa8fb240f6d_FS
    GLSL link result : 
    WARNING: Could not find vertex shader attribute 'blendWeights' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv5' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'secondary_colour' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv1' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv4' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'blendIndices' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv6' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv2' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'colour' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'position' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv3' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv7' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'binormal' to match BindAttributeLocation request.
    Vertex Program:55cc4c55994686caee7ecb81e6ce6735_VS Fragment Program:4a08102476ab588eaadffaa8fb240f6d_FS
    GLSL link result : 
    WARNING: Could not find vertex shader attribute 'blendWeights' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv5' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'secondary_colour' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv1' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv4' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'blendIndices' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv6' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv2' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'colour' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'position' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'tangent' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv3' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'uv7' to match BindAttributeLocation request.
    WARNING: Could not find vertex shader attribute 'binormal' to match BindAttributeLocation request.
    

    -->

    :file_folder: OgreMain 
    opened by arkeon7 33
  • cf.load causing crashes when it get's to AdaptivePNTrianglesTessellation.material

    cf.load causing crashes when it get's to AdaptivePNTrianglesTessellation.material

    My resources_d.cfg is empy. when I comment out cf.load(resourcePath + "resources_d.cfg"); it works

    CODE

    #include <iostream>
    
    #include "Ogre.h"
    #include <OIS/OIS.h>
    
    #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE || OGRE_PLATFORM == OGRE_PLATFORM_IPHONE
    #include <macUtils.h>
    #endif
    
    int main()
    {
    	std::string resourcePath;
    
    #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
    	resourcePath = Ogre::macBundlePath() + "/Contents/Resources/";
    #else
    	resourcePath = "";
    #endif
    
    	Ogre::Root* root = new Ogre::Root(resourcePath + "plugins_d.cfg", resourcePath + "ogre_d.cfg", "Ogre.log");
    
    	if (!root->showConfigDialog())
    		return -1;
    
    	Ogre::ConfigFile cf;
    	cf.load(resourcePath + "resources_d.cfg");
    
    	// Go through all sections & settings in the file
    	Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
    
    	Ogre::String secName, typeName, archName;
    	while (seci.hasMoreElements())
    	{
    		secName = seci.peekNextKey();
    		Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
    		Ogre::ConfigFile::SettingsMultiMap::iterator i;
    		for (i = settings->begin(); i != settings->end(); ++i)
    		{
    			typeName = i->first;
    			archName = i->second;
    
    #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE || OGRE_PLATFORM == OGRE_PLATFORM_IPHONE
    			if (!Ogre::StringUtil::startsWith(archName, "/", false)) // only adjust relative dirs
    				archName = Ogre::String(Ogre::macBundlePath() + "/" + archName);
    #endif
    
    			Ogre::ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);
    		}
    	}
    
    	Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
    
    	Ogre::RenderWindow* window = root->initialise(true);
    	Ogre::SceneManager* smgr = root->createSceneManager(Ogre::ST_GENERIC);
    
    	//Input Stuff
    	size_t windowHnd = 0;
    	window->getCustomAttribute("WINDOW", &windowHnd);
    	OIS::InputManager* im = OIS::InputManager::createInputSystem(windowHnd);
    	OIS::Keyboard* keyboard = static_cast<OIS::Keyboard*>(im->createInputObject(OIS::OISKeyboard, true));
    
    	while (1)
    	{
    		Ogre::WindowEventUtilities::messagePump();
    
    		keyboard->capture();
    
    		if (keyboard->isKeyDown(OIS::KC_ESCAPE))
    			break;
    
    		if (root->renderOneFrame() == false)
    			break;
    	}
    
    	im->destroyInputObject(keyboard);
    	im->destroyInputSystem(im);
    	im = 0;
    
    	delete root;
    	return 0;
    }
    

    LOG

    Creating resource group General
    Creating resource group Internal
    Creating resource group Autodetect
    SceneManagerFactory for type 'DefaultSceneManager' registered.
    Registering ResourceManager for type Material
    Registering ResourceManager for type Mesh
    Registering ResourceManager for type Skeleton
    MovableObjectFactory for type 'ParticleSystem' registered.
    ArchiveFactory for archive type FileSystem registered.
    ArchiveFactory for archive type Zip registered.
    ArchiveFactory for archive type EmbeddedZip registered.
    DDS codec registering
    FreeImage version: 3.15.3
    This program uses FreeImage, a free, open source image library supporting all co
    mmon bitmap formats. See http://freeimage.sourceforge.net for details
    Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,
    pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,
    g3,sgi,exr,j2k,j2c,jp2,pfm,pct,pict,pic
    ETC codec registering
    Registering ResourceManager for type HighLevelGpuProgram
    Registering ResourceManager for type Compositor
    MovableObjectFactory for type 'Entity' registered.
    MovableObjectFactory for type 'Light' registered.
    MovableObjectFactory for type 'BillboardSet' registered.
    MovableObjectFactory for type 'ManualObject' registered.
    MovableObjectFactory for type 'BillboardChain' registered.
    MovableObjectFactory for type 'RibbonTrail' registered.
    Loading library .\RenderSystem_Direct3D9_d
    Installing plugin: D3D9 RenderSystem
    D3D9 : Direct3D9 Rendering Subsystem created.
    D3D9: Driver Detection Starts
    D3D9: Driver Detection Ends
    Plugin successfully installed
    Loading library .\RenderSystem_GL_d
    Installing plugin: GL RenderSystem
    OpenGL Rendering Subsystem created.
    Plugin successfully installed
    Loading library .\RenderSystem_GL3Plus_d
    Installing plugin: GL 3+ RenderSystem
    OpenGL 3+ Rendering Subsystem created.
    Plugin successfully installed
    Loading library .\Plugin_ParticleFX_d
    Installing plugin: ParticleFX
    Particle Emitter Type 'Point' registered
    Particle Emitter Type 'Box' registered
    Particle Emitter Type 'Ellipsoid' registered
    Particle Emitter Type 'Cylinder' registered
    Particle Emitter Type 'Ring' registered
    Particle Emitter Type 'HollowEllipsoid' registered
    Particle Affector Type 'LinearForce' registered
    Particle Affector Type 'ColourFader' registered
    Particle Affector Type 'ColourFader2' registered
    Particle Affector Type 'ColourImage' registered
    Particle Affector Type 'ColourInterpolator' registered
    Particle Affector Type 'Scaler' registered
    Particle Affector Type 'Rotator' registered
    Particle Affector Type 'DirectionRandomiser' registered
    Particle Affector Type 'DeflectorPlane' registered
    Plugin successfully installed
    Loading library .\Plugin_BSPSceneManager_d
    Installing plugin: BSP Scene Manager
    Plugin successfully installed
    Loading library .\Plugin_CgProgramManager_d
    Installing plugin: Cg Program Manager
    Plugin successfully installed
    Loading library .\Plugin_PCZSceneManager_d
    Installing plugin: Portal Connected Zone Scene Manager
    PCZone Factory Type 'ZoneType_Default' registered
    Plugin successfully installed
    Loading library .\Plugin_OctreeZone_d
    Installing plugin: Octree Zone Factory
    Plugin successfully installed
    Loading library .\Plugin_OctreeSceneManager_d
    Installing plugin: Octree Scene Manager
    Plugin successfully installed
    *-*-* OGRE Initialising
    *-*-* Version 1.10.7 (Xalafu)
    D3D9 : RenderSystem Option: Allow DirectX9Ex = No
    D3D9 : RenderSystem Option: Allow NVPerfHUD = No
    D3D9 : RenderSystem Option: Backbuffer Count = Auto
    D3D9 : RenderSystem Option: FSAA = 0
    D3D9 : RenderSystem Option: Fixed Pipeline Enabled = Yes
    D3D9 : RenderSystem Option: Floating-point mode = Fastest
    D3D9 : RenderSystem Option: Full Screen = Yes
    D3D9 : RenderSystem Option: Multi device memory hint = Use minimum system memory
    
    D3D9 : RenderSystem Option: Rendering Device = Monitor-1-Mobile Intel(R) 4 Serie
    s Express Chipset Family (Microsoft Corporation - WDDM 1.1)
    D3D9 : RenderSystem Option: Resource Creation Policy = Create on all devices
    D3D9 : RenderSystem Option: Use Multihead = Auto
    D3D9 : RenderSystem Option: VSync = No
    D3D9 : RenderSystem Option: VSync Interval = 1
    D3D9 : RenderSystem Option: Video Mode = 800 x 600 @ 32-bit colour
    D3D9 : RenderSystem Option: sRGB Gamma Conversion = No
    Creating resource group Essential
    Added resource location '../Media/thumbnails' of type 'FileSystem' to resource g
    roup 'Essential'
    Added resource location '../Media/packs/SdkTrays.zip' of type 'Zip' to resource
    group 'Essential'
    Added resource location '../Media/packs/profiler.zip' of type 'Zip' to resource
    group 'Essential'
    Added resource location '../Media' of type 'FileSystem' to resource group 'Gener
    al'
    Added resource location '../Media/fonts' of type 'FileSystem' to resource group
    'General'
    Added resource location '../Media/materials/programs' of type 'FileSystem' to re
    source group 'General'
    Added resource location '../Media/materials/scripts' of type 'FileSystem' to res
    ource group 'General'
    Added resource location '../Media/materials/textures' of type 'FileSystem' to re
    source group 'General'
    Added resource location '../Media/materials/textures/nvidia' of type 'FileSystem
    ' to resource group 'General'
    Added resource location '../Media/models' of type 'FileSystem' to resource group
     'General'
    Added resource location '../Media/particle' of type 'FileSystem' to resource gro
    up 'General'
    Added resource location '../Media/DeferredShadingMedia' of type 'FileSystem' to
    resource group 'General'
    Added resource location '../Media/DeferredShadingMedia/DeferredShading/post' of
    type 'FileSystem' to resource group 'General'
    Added resource location '../Media/PCZAppMedia' of type 'FileSystem' to resource
    group 'General'
    Added resource location '../Media/materials/scripts/SSAO' of type 'FileSystem' t
    o resource group 'General'
    Added resource location '../Media/materials/textures/SSAO' of type 'FileSystem'
    to resource group 'General'
    Added resource location '../Media/volumeTerrain' of type 'FileSystem' to resourc
    e group 'General'
    Added resource location '../Media/HLMS' of type 'FileSystem' to resource group '
    General'
    Added resource location '../Media/packs/cubemap.zip' of type 'Zip' to resource g
    roup 'General'
    Added resource location '../Media/packs/cubemapsJS.zip' of type 'Zip' to resourc
    e group 'General'
    Added resource location '../Media/packs/dragon.zip' of type 'Zip' to resource gr
    oup 'General'
    Added resource location '../Media/packs/fresneldemo.zip' of type 'Zip' to resour
    ce group 'General'
    Added resource location '../Media/packs/ogretestmap.zip' of type 'Zip' to resour
    ce group 'General'
    Added resource location '../Media/packs/ogredance.zip' of type 'Zip' to resource
     group 'General'
    Added resource location '../Media/packs/Sinbad.zip' of type 'Zip' to resource gr
    oup 'General'
    Added resource location '../Media/packs/skybox.zip' of type 'Zip' to resource gr
    oup 'General'
    Added resource location '../Media/volumeTerrain/volumeTerrainBig.zip' of type 'Z
    ip' to resource group 'General'
    Creating resource group Tests
    Added resource location '../Tests/Media' of type 'FileSystem' to resource group
    'Tests'
    Parsing scripts for resource group Autodetect
    Finished parsing scripts for resource group Autodetect
    Creating resources for group Autodetect
    All done
    Parsing scripts for resource group Essential
    Parsing script SdkTrays.material
    Parsing script OgreProfiler.material
    Finished parsing scripts for resource group Essential
    Creating resources for group Essential
    All done
    Parsing scripts for resource group General
    Parsing script DualQuaternion.program
    Parsing script Examples.program
    Parsing script Instancing.program
    Parsing script StdQuad_vp.program
    Parsing script deferred_post.program
    Parsing script ShadowCaster.program
    Parsing script GBuffer.program
    Parsing script AdaptivePNTrianglesTessellation.material
    Assertion failed: msSingleton, file E:\programming\ogre\ogre\OgreMain\src\OgreGp
    uProgramManager.cpp, line 44
    
    opened by kenkit 23
  • Always include shadow casting lights in local list

    Always include shadow casting lights in local list

    Culling of shadow casting lights from SceneNode's local list cause mismatch with frame shadow texture list. This breaks a texture shadowing if there are at least two spotlights that casts shadows in the scene. Here is small fix for this.

    opened by balrogcpp 22
  • Building fails on MacOS Mojave due to linker errors

    Building fails on MacOS Mojave due to linker errors

    System Information

    • Ogre Version: 1.11.2 stable (from source)
    • Operating System / Platform: macOS 10.14 (Mojave)
    • RenderSystem: OpenGL (looking at the linker error, at least)

    Detailled description

    I downloaded the latest source today, ran cmake -GXcode .. in a build subdirectory. Changing the architecture to x86_64, I built the project. Compiling apparently runs through, but I get linker errors afterwards.

    Below is the complete log of the linking errors.

    Ogre.log

    Ld build/lib/macosx/RelWithDebInfo/RenderSystem_GL.framework/Versions/1.11.2/RenderSystem_GL normal x86_64
        cd /Users/michael/Code/Game/ogre
        export MACOSX_DEPLOYMENT_TARGET=10.14
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -L/Users/michael/Code/Game/ogre/build/lib/macosx/RelWithDebInfo -F/Users/michael/Code/Game/ogre/build/lib/macosx/RelWithDebInfo -filelist /Users/michael/Code/Game/ogre/build/RenderSystems/GL/OGRE.build/RelWithDebInfo/RenderSystem_GL.build/Objects-normal/x86_64/RenderSystem_GL.LinkFileList -install_name @executable_path/../Frameworks/RenderSystem_GL.framework/Versions/1.11.2/RenderSystem_GL -Xlinker -rpath -Xlinker /Users/michael/Code/Game/ogre/build/sdk/lib -mmacosx-version-min=10.14 -Xlinker -object_path_lto -Xlinker /Users/michael/Code/Game/ogre/build/RenderSystems/GL/OGRE.build/RelWithDebInfo/RenderSystem_GL.build/Objects-normal/x86_64/RenderSystem_GL_lto.o -stdlib=libc++ -framework Cocoa -framework Carbon -framework OpenGL -framework AGL /Users/michael/Code/Game/ogre/build/lib/macosx/RelWithDebInfo/libOgreGLSupport.a -framework OpenGL /Users/michael/Code/Game/ogre/build/lib/macosx/RelWithDebInfo/Ogre.framework/Versions/1.11.2/Ogre -current_version 1.11.2 -Xlinker -dependency_info -Xlinker /Users/michael/Code/Game/ogre/build/RenderSystems/GL/OGRE.build/RelWithDebInfo/RenderSystem_GL.build/Objects-normal/x86_64/RenderSystem_GL_dependency_info.dat -o /Users/michael/Code/Game/ogre/build/lib/macosx/RelWithDebInfo/RenderSystem_GL.framework/Versions/1.11.2/RenderSystem_GL
    Undefined symbols for architecture x86_64:
      "Ogre::GpuProgram::setSyntaxCode(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
    
      NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    Showing first 200 notices only
    Showing first 200 errors only
    
    ** BUILD FAILED **
    
    
    The following build commands failed:
    	Ld build/lib/macosx/RelWithDebInfo/RenderSystem_GL.framework/Versions/1.11.2/RenderSystem_GL normal x86_64
    (1 failure)
    
    :factory: CMake :computer: iOS / OS X 
    opened by MichaelVoelkel 22
  • [OGRE-102] Bump Mapping sample has flickering shadows when you move the camera (OpenGL)

    [OGRE-102] Bump Mapping sample has flickering shadows when you move the camera (OpenGL)

    [reporter="thesheeep", created="Mon, 10 Dec 2012 09:33:59 +0100"]

    I only noticed this with the Bump Mapping sample, other shadow samples work correctly. Also, this only happens with OpenGL.

    :pill: CgProgramManager 
    opened by paroj 21
  • Android crash on library initialisation

    Android crash on library initialisation

    System Information

    • Ogre Version: 1.11
    • Operating System / Platform: Android
    • RenderSystem: GLSLES2

    Detailled description

    I use NDK r15c GCC 4.9 When the library containing Ogre is loaded, it crash on memory allocation. Debugger pass through: Light PerPixelLighting::msBlankLight; in OgreShaderExPerPixelLighting.cpp MovableObject::MovableObject() : MovableObject(BLANKSTRING) {} in OgreMovableObject.cpp template class AllocatedObject {}; and crash in basic_string.tcc

    template<typename _CharT, typename _Traits, typename _Alloc>
        basic_string<_CharT, _Traits, _Alloc>::
        basic_string(const basic_string& __str)
        : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
    					  __str.get_allocator()),
    		  __str.get_allocator())
        { }
    

    Maybe it's related to the OgreMemoryAllocatorConfig.h changes ? I have no idea where to look at ^^

    Log

    04-17 14:04:04.813 11326 11425 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0xfffffffc in tid 11425 (Thread-3)
    
    incomplete 
    opened by arkeon7 19
  • Fixes issue preventing use of latest emscripten versions

    Fixes issue preventing use of latest emscripten versions

    fixes #1697 fixes #1686 fixes #1289 These changes enable the use the latest versions of emscripten. Latest version of emscripten has several fixes including handling of fullscreen see changelog not to mention it now uses LLVM backend.emscripten-llvm-wasm which has several benefits.

    opened by guster32 18
  • GL3+ Texture upload is on slow path

    GL3+ Texture upload is on slow path

    System Information

    • Ogre Version: Ogre 1 master (Tested on 1.12.1)
    • Operating System / Platform: Windows 10, NVidia
    • RenderSystem: GL3Plus

    Detailled description

    GL3PlusRS glTexStorage texture upload codepath is in "driver slow path" at the moment. This could be a possible NVidia driver bug, since I found no limitation in GL spec which would explain this behaviour. Please note, that I only tested this on Nvidia HW since I dont own any AMD, or Intel GPU-s, on those this codepath could be fine.

    I made a simple test case, upload a 4k*4k texture and measure the upload time. With pure GL it took 17ms, with OGRE it took 54ms. (The OGRE Texture upload stack was on fast path, so no resizes npot or anything like that) So I investigated, VS Profiler said most of the work was done inside glTexSubImage2D(), but glTexSubImage2D() had the correct fast path GL parameters, which I also used in my test code. This proved that some texture creation parameters might cause slowdowns (driver slow path), since the texture upload in my code was fine with default texParams.

    It turned out that specifying glTexParameteri -s before creating the backing GPU pixel buffer can be problematic in some limited cases. So commenting out them one by one, I found out that GL_TEXTURE_WRAP_* parameters will cause driver slow path IF not on GL default vaule. But this happens only if you specify the parameters first and then create the texture storage.

    So this is fast : GlTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, image.getWidth(), image.getHeight()); gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);

    This is not : gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); gl->setTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); GlTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, image.getWidth(), image.getHeight());

    Possible solutions :

    • In OgreGL3PlusTexture.cpp around line 130 set the texture parameter to the correct default one GL_REPEAT.

    mRenderSystem->_getStateCacheManager()->setTexParameteri(texTarget, GL_TEXTURE_WRAP_S, GL_REPEAT); mRenderSystem->_getStateCacheManager()->setTexParameteri(texTarget, GL_TEXTURE_WRAP_T, GL_REPEAT); mRenderSystem->_getStateCacheManager()->setTexParameteri(texTarget, GL_TEXTURE_WRAP_R, GL_REPEAT);

    I used this as a quick fix, this will set us on driver fast path.

    • A slightly bigger but maybe better fix would be to set the texture params after creating the texture store. Not sure if it is 100% correct by spec, but this would avoid driver bugs like this in the future. So :

    GlHandle texture; GlGenTextures(1, &texture); gl->bindGLTexture(GL_TEXTURE_2D, texture); GlTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, image.getWidth(), image.getHeight());

    //Specify TexParami-s here

    //Upload texture later

    opened by 1k0 16
  • OgreTextAreaOverlayElement CPU hog

    OgreTextAreaOverlayElement CPU hog

    System Information

    • Ogre Version: 1.11.5
    • Operating System / Platform: Win10
    • RenderSystem: GL3Plus

    Detailed description

    Frequently updated TextAreaOverlayElement-s (like a simple fps counter) will generate unacceptable amount of CPU usage in the buffer locking methods (updatePositionGeometry, updateColours). This happens probably because of CPU-GPU synchronization, as TextAreaOverlayElement will use glMapBuffer, when using GL3Plus rendersystem.

    In this case (and on single thread probably never) should OGRE use glMapBuffer, glBufferData is much faster with buffer orphaning. Experimented with the code a bit, and could not find a fast path when glMapBuffer was used.

    My "final" solution to avoid using glMapBuffer was using a shadow buffer, at buffer creation. This put me on the glBufferData path (writeData()).

    So to "fix" the CPU hog change the buffer creation code to this (changes in bold) :

        HardwareVertexBufferSharedPtr vbuf = 
            HardwareBufferManager::getSingleton().
                createVertexBuffer(
                    decl->getVertexSize(POS_TEX_BINDING), 
                    allocatedVertexCount,
                    **HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE, true**);
        bind->setBinding(POS_TEX_BINDING, vbuf);
    
        // colours
        vbuf = HardwareBufferManager::getSingleton().
                createVertexBuffer(
                    decl->getVertexSize(COLOUR_BINDING), 
                    allocatedVertexCount,
                    **HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE, true**);
        bind->setBinding(COLOUR_BINDING, vbuf);
    

    An alternative solution without shadow buffer, would be to use a std::vector to assembe geomerty and color data at update, and use the writeData() method instead of lock()/unlock().

    opened by 1k0 16
  • thread pool creation fails

    thread pool creation fails

    System Information

    • Ogre Version: 1.11 (git commit efdf71fbeb1eaa7a6604b9b545e1f3992efab1e4 )
    • Operating System / Platform: windows 7
    • RenderSystem: webgl (emscripten)

    Detailled description

    Building ogre for emscripten target is good, but encountering exception error in samplebrowser example is no go :+1: ogre3webbug

    I'm testing this with chromium nightly build on windows 7.

    Ogre.log

    
    Creating resource group General
    Creating resource group Internal
    Creating resource group Autodetect
    SceneManagerFactory for type 'DefaultSceneManager' registered.
    Registering ResourceManager for type Material
    Registering ResourceManager for type Mesh
    Registering ResourceManager for type Skeleton
    MovableObjectFactory for type 'ParticleSystem' registered.
    ArchiveFactory for archive type FileSystem registered.
    ArchiveFactory for archive type Zip registered.
    ArchiveFactory for archive type EmbeddedZip registered.
    DDS codec registering
    PVRTC codec registering
    ETC codec registering
    Registering ResourceManager for type HighLevelGpuProgram
    Registering ResourceManager for type Compositor
    MovableObjectFactory for type 'Entity' registered.
    MovableObjectFactory for type 'Light' registered.
    MovableObjectFactory for type 'BillboardSet' registered.
    MovableObjectFactory for type 'ManualObject' registered.
    MovableObjectFactory for type 'BillboardChain' registered.
    MovableObjectFactory for type 'RibbonTrail' registered.
    *-*-* OGRE Initialising
    *-*-* Version 1.11.0dev (Rhagorthua)
    Installing plugin: OpenGL ES 2.0 RenderSystem
    OpenGL ES 2.x Rendering Subsystem created.
    Plugin successfully installed
    Installing plugin: Octree Scene Manager
    Plugin successfully installed
    Installing plugin: ParticleFX
    Particle Emitter Type 'Point' registered
    Particle Emitter Type 'Box' registered
    Particle Emitter Type 'Ellipsoid' registered
    Particle Emitter Type 'Cylinder' registered
    Particle Emitter Type 'Ring' registered
    Particle Emitter Type 'HollowEllipsoid' registered
    Particle Affector Type 'LinearForce' registered
    Particle Affector Type 'ColourFader' registered
    Particle Affector Type 'ColourFader2' registered
    Particle Affector Type 'ColourImage' registered
    Particle Affector Type 'ColourInterpolator' registered
    Particle Affector Type 'Scaler' registered
    Particle Affector Type 'Rotator' registered
    Particle Affector Type 'DirectionRandomiser' registered
    Particle Affector Type 'DeflectorPlane' registered
    Plugin successfully installed
    Installing plugin: STB Image Codec
    stb_image - v2.19 - public domain JPEG/PNG reader
    Supported formats: jpeg,jpg,png,bmp,psd,tga,gif,pic,ppm,pgm,hdr
    Plugin successfully installed
    OverlayElementFactory for type Panel registered.
    OverlayElementFactory for type BorderPanel registered.
    OverlayElementFactory for type TextArea registered.
    Registering ResourceManager for type Font
    CPU Identifier & Features
    -------------------------
     *   CPU ID: Unknown
    -------------------------
    ******************************
    *** Starting EGL Subsystem ***
    ******************************
    EGL_VERSION = 1.4 Emscripten EGL
    EGL_EXTENSIONS = 
    Registering ResourceManager for type Texture
    GLES2RenderSystem::_createRenderWindow "OGRE Emscripten Sample", 800x600 windowed  miscParams: FSAA= currentGLContext=true gamma= vsync=Yes 
    GL_VERSION = 2.0.0.0
    GL_VENDOR = WebKit
    GL_RENDERER = WebKit WebGL
    GL_EXTENSIONS = GL_ANGLE_instanced_arrays GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_frag_depth GL_EXT_shader_texture_lod GL_EXT_texture_filter_anisotropic GL_WEBKIT_EXT_texture_filter_anisotropic GL_EXT_sRGB GL_OES_element_index_uint GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc GL_WEBKIT_WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture GL_WEBKIT_WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context GL_WEBKIT_WEBGL_lose_context 
    **************************************
    *** OpenGL ES 2.x Renderer Started ***
    **************************************
    Shading language version: OpenGL ES GLSL ES 1.00 (WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium))
    Registering ResourceManager for type GpuProgram
    GL ES 2: Using FBOs for rendering to textures
    [GLES2] : detectFBOFormats is disabled on this platform (due performance reasons)
    [GLES2] : Valid FBO targets PF_A8B8G8R8 
    RenderSystem capabilities
    -------------------------
    RenderSystem Name: OpenGL ES 2.x Rendering Subsystem
    GPU Vendor: webkit
    Device Name: WebKit WebGL
    Driver Version: 2.0.0.0
     * Fixed function pipeline: no
     * Anisotropic texture filtering: yes
     * Cube mapping: yes
     * Hardware stencil buffer: yes
       - Stencil depth: 8
       - Two sided stencil support: yes
       - Wrap stencil values: yes
     * 32-bit index buffers: yes
     * Vertex programs: yes
     * Number of floating-point constants for vertex programs: 4096
     * Number of integer constants for vertex programs: 4096
     * Number of boolean constants for vertex programs: 4096
     * Fragment programs: yes
     * Number of floating-point constants for fragment programs: 1024
     * Number of integer constants for fragment programs: 1024
     * Number of boolean constants for fragment programs: 1024
     * Geometry programs: no
     * Number of floating-point constants for geometry programs: 0
     * Number of integer constants for geometry programs: 34644
     * Number of boolean constants for geometry programs: 6
     * Tessellation Hull programs: no
     * Number of floating-point constants for tessellation hull programs: 0
     * Number of integer constants for tessellation hull programs: 0
     * Number of boolean constants for tessellation hull programs: 0
     * Tessellation Domain programs: no
     * Number of floating-point constants for tessellation domain programs: 0
     * Number of integer constants for tessellation domain programs: 0
     * Number of boolean constants for tessellation domain programs: 0
     * Compute programs: no
     * Number of floating-point constants for compute programs: 0
     * Number of integer constants for compute programs: 0
     * Number of boolean constants for compute programs: 0
     * Supported Shader Profiles: glsles
     * Texture Compression: yes
       - DXT: yes
       - VTC: no
       - PVRTC: no
       - ATC: no
       - ETC1: no
       - ETC2: no
       - BC4/BC5: no
       - BC6H/BC7: no
       - ASTC: no
       - Mipmaps for compressed formats: no
     * Hardware Occlusion Query: no
     * User clip planes: no
     * VET_UBYTE4 vertex element type: yes
     * Infinite far plane projection: yes
     * Hardware render-to-texture: yes
     * Floating point textures: yes
     * Non-power-of-two textures: no
     * 1d textures: yes
     * Volume textures: no
     * Multiple Render Targets: 1
       - With different bit depths: no
     * Point Sprites: yes
     * Hardware Gamma: no
     * Extended point parameters: yes
     * Max Point Size: 0
     * Vertex texture fetch: no
     * Number of texture units: 16
     * Number of vertex attributes: 16
     * Stencil buffer depth: 8
     * Number of vertex blend matrices: 0
     * Render to Vertex Buffer : no
     * Hardware Atomic Counters: no 
     * PBuffer support: no
     * Vertex Array Objects: yes
     * Separate shader objects: no
     * GLSL SSO redeclare interface block: no
     * Debugging/ profiling events: no
     * Map buffer storage: no
    DefaultWorkQueue('Root') initialising on thread 106424.
    
    thrown exception here from chromium canary build 
    bad name in getProcAddress: glActiveShaderProgramEXT,glActiveShaderProgram 
    printErr  @ EmscriptenSample.html:1249
    

    -->

    :computer: Emscripten 
    opened by uvguy 14
  • Extensive usage of reserved identifiers

    Extensive usage of reserved identifiers

    Before you go any further, maybe you want to link to very old issue. It was marked as completed in 2017, but as of e535556dbd31955e9205f9282602047034171c0f the problems are still there.

    Several macros (and identifiers in general) use reserved names. This is undefined behaviour.

    According to the standard (Cpp17 here):

    20.5.4.3 Reserved names [reserved.names] 1 The C++ standard library reserves the following kinds of names: —(1.1) macros —(1.2) global names —(1.3) names with external linkage 2 If a program declares or defines a name in a context where it is reserved, other than as explicitly allowed by this Clause, its behavior is undefined.

    5.10 Identifiers [...] —(3.1) Each identifier that contains a double underscore __ or begins with an underscore followed by an uppercase letter is reserved to the implementation for any use.
    —(3.2) Each identifier that begins with an underscore is reserved to the implementation for use as a name in the global namespace.

    Header guards

    Header guards used in (almost) each .h file in OGRE follow one of the following conventions:

    • __OgrePrerequisites_H__
    • __CompositorManager_H__
    • _ResourceManager_H_

    All fall into 5.10 (3.2).

    Export macro

    _OgreExport, _OgrePrivate and probably other macros I'm not aware of fall into the 5.10 (3.1).

    There may be other similar issues in other files, I did not check everything.

    priority: low 
    opened by Erellu 2
  • StaticGeometry gets double the Root SceneNode transform

    StaticGeometry gets double the Root SceneNode transform

    System Information

    • Ogre Version: 13.4.1
    • Operating System / Platform: macOS Catalina
    • RenderSystem: OpenGL

    Detailled description

    When StaticGeometry is created using StaticGeometry::addSceneNode(), each Entity is queued along with its derived transform. That bakes the Root SceneNode's transform into the geometry. Then when StaticGeometry::build() calls Region::build(), it creates its Node as a child of the Root SceneNode. This results in the Root SceneNode's transform being applied twice.

    Not sure best way to fix:

    1. Straightforward: In StaticGeometry::addSceneNode(), instead of calling _getDerivedPosition() (etc) we manually derive from a child of Root.
    2. Tricky: Use _getDerivedPosition() (etc) but then subtract or divide away the Root's transform.
    3. Ugly: Save the Root's transform, set it to identity, call _getDerivedPosition() (etc), then restore the Root's transform.
    Known Issues 
    opened by chillywillysoft 9
  • Refactor WorkQueue to be leightweight

    Refactor WorkQueue to be leightweight

    it should only dispatch tasks.

    Not all tasks need a response queue and the corresponding overhead. Tasks that need it, can register to the frameEnded event to process any new messages instead of handleResponse.

    Drop all non-STD threading implementations (deprecated since 1.11) while at it.

    References:

    • https://forums.ogre3d.org/viewtopic.php?t=96708
    • #1336

    related #33 #7

    opened by paroj 0
Releases(v13.4.3)
  • v13.4.3(Jul 31, 2022)

    • Main
      • refactor code to C++11 style (#2524, #2532, #2533, #2534)
      • slightly clean-up PixelFormat conversions
      • Texture - fix off by one in num mipmaps in convertToImage (#2519)
    • ParticleFX: ColourInterpolatorAffector - set particle colour on init
    • Dependencies: fix relwithdebinfo bullet build on msvc
    • pkgconfig: dont hardcode boost and freeimage lib names (#2525)
    • RTSS: NormalMap - use non-normalised post-interpolation values for TBN
    • Samples: Bullet - show cursor (#2523)
    Source code(tar.gz)
    Source code(zip)
  • v13.4.2(Jul 15, 2022)

    • Main
      • Root - run destructor on MaterialManager before GpuProgramManager
      • StaticGeometry - logError if Root SceneNode is transformed
      • WorkQueue - fix logging
      • WorkQueue - sync response processing time limit doc and code
    • Terrain: generate normal and composite map material in one go
    • RTSS: simplify ProgramManager
    • Java & CSharp: link only used components libraries
    • PCZSceneManager
      • fix scaling of portal radius
      • slightly clean-up readme
    • GLSupport: Win32 - fix building with QUAD_BUFFER_STEREO
    • Docs
      • update list of components using pugixml
      • Make libxrandr a requirement for Ubuntu
    • Samples
      • PCZTest - reduce PCZSceneNode usage
      • ShaderSystem - fix crash on shutdown
    Source code(tar.gz)
    Source code(zip)
  • v13.4.1(Jun 21, 2022)

    • Main: BillboardChain - fix orientation when there is only one camera
    • SDK: also ship bullet headers
    • CMake: make bullet component self-contained for consuming projects
    • Docs
      • drop superfluous remarks annotations
      • make inline images legible in dark mode too
    Source code(tar.gz)
    Source code(zip)
  • v13.4.0(Jun 7, 2022)

    Highlights

    • Add Bullet component based on BtOgre
    • add VET_INT_10_10_10_2_NORM
    • add basic support for joystick devices

    What's Changed

    • Main
      • add ControllerReal typedef
      • add top-level aliases for material schemes e.g. MSN_DEFAULT
      • AutoParamDataSource - use lookRotation to get spotlight matrix
      • BillboardChain::Element - width and texCoord should always be float
      • EdgeListBuilder - improve asserts in addIndexData
      • Entity - drop useless extractTempBufferInfo indirection
      • factor out VertexData::_cloneRemovingBlendData so it can be shared
      • fix delayed loading of shadow caster material & add test
      • fixed incorrect handling of samplers as constants
      • fix StaticGeometry::setRenderingDistance
      • FocusedShadowCameraSetup - drop special mLightFrustumCamera
      • FrameTimeControllerValue - inline trivial functions
      • GpuProgramParams - validate named constant count
      • GpuSharedParameters - use template to avoid code duplication
      • HardwareBufferManager - devirtualise methods called in destructor
      • InstanceBatchHW - use correct HBU_CPU_TO_GPU
      • LightClippingInfo - clipPlanesValid should be a bool
      • Light - fix OGRE_NODELESS_POSITIONING typo
      • Math - fix noisy compiler warnings (#2463)
      • Mesh
        • add UserObjectBindings & merge PrefabLoader + PrefabFactory
        • check skeleton by pointer instead of by name
        • default AutoBuildEdgeLists to false
        • slightly refactor softwareVertexBlend
      • ParticleSystemRenderer - correctly deprecate ParticleVisualData
      • replace deprecated std::binary_function by lambda
      • Resource - _fireLoadingComplete parameter is unused
      • SceneManager
        • inline _populateLightList overload
        • shadow casting lights can be != shadow textures
      • ScriptTranslator
        • catch invalid multiple target_output usages
        • deprecate bool symbol
        • factor out safeSetConstant
        • make caster_ref fallback technique-specific
      • ShadowCameraSetup
        • do not re-derive orientation when possible
        • use default method to get ShadowMappingMatrix
      • Serializer - slight cleanup
      • ShadowRenderer - const correct sortLightsAffectingFrustum
      • simplify GpuProgramManager::createImpl
      • TangentSpaceCalc - dont discard existing vertex data
      • TempBlendedBufferInfo - handle additional attributes in pos buffer
      • Texture - unify validation of number of requested mips
      • use new HBU_* names in headers to improve documentation
      • VertexData - implement convertVertexElement
      • VertexData - simplify reorganiseBuffers
      • VertexElement - deprecate convertColourValue
      • VertexElement - deprecate getBestColourVertexElementType
      • Viewport - inline trivial member functions
      • Viewport - use TRect to store dimensions
      • WorkQueue - simplify WorkerFunc
    • CMake
      • fix setting of OGRE_NODE_INHERIT_TRANSFORM option
      • let CMake autodetect OSX_SYSROOT
      • Dependencies: update to latest releases
      • Dependencies: make sure we capture our self-build SDL2 on Linux
      • pkg-config: match cmake regarding include paths
      • Don't use sse on non-x86 architectures (#2444)
    • RTSS
      • CookTorrance - respect transparency and ambient light
      • fix getAutoConstantIntData for array types
      • PBR - iterate lights in shader to avoid redundant computations
      • PSSM - move ApplyShadowFactor to lighting stages as it should be
    • Bites
      • add basic support for joystick devices
      • ImGuiInputListener - finish port to event-based IO
      • correct check if a gamecontrollerdb.txt is loaded
    • SWIG: wrap BillboardChainElement
    • Overlay: update ImGui to 1.87
    • Terrain: fix getCastsShadows always being true and change default
    • GL: GpuProgram - drop duplicated fields
    • Vulkan: correctly check for RSC_USER_CLIP_PLANES
    • Metal: fix crash on shutdown from mDefaultVP/FP outliving their creator
    • D3D*: port to common isCompatible() method
    • D3D11
      • D3D11DeviceResourceManager - improve assert message
      • HLSL - simplify IA reflection handling
    • PCZSceneManager: fix named node registration in createSceneNode override
    • Assimp
      • explicitly give GenSmoothNormals precendence
      • fix string comparison when walking bones
    • Samples
      • add Bullet sample
      • Browsers - fix overflow of samples carousel
      • Python - add google colab compatible ipy notebook
    • Tools
      • clean up help CLI help strings
      • make use of Ogre::Root to reduce boilerplate code
      • XMLConverter - drop VET_COLOUR* parsing from CLI
      • MeshUpgrader: add option to pack normals and tangents as int_10_10_10_2
      • AssimpConverter: include plugins in RPATH, so Codec_Assimp is found
    • Docs
      • correct channel order of metal roughness params
      • improve FrameTimeControllerValue documentation
      • improve Hardaware Buffers documentation
      • improve Plugin documentation
      • merge getUserObjectBindings descriptions
      • MeshTools - update documentation and add AssimpConverter
      • minor fixes
      • shadows - small formatting fix
    • Tests: test PF_A2R10G10B10 packing/ unpacking

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.3.4(Apr 2, 2022)

  • v13.3.3(Mar 27, 2022)

    What's Changed

    • Main
      • add plugin path separator on OSX too
      • Animation - correctly compute time index when time == end
      • apply cosmetic changes suggested by PVS-Studio
      • fix bugs detected by PVS-Studio
      • move shadow material initialisation to ShadowRenderer
      • SkyBox - construct box using a triangle strip
      • TextureUnitState - assert that sampler is valid
      • Root - allow calling openFileStream without a Root instance
      • InstanceBatchHW_VTF - assert that maxUsableWidth is correct
    • CMake
      • Dependencies: fix assimp in debug builds
      • Dependencies - use CONFIG mode for Qt according to CMP0086
      • set CMP0086 to NEW, as we dont rely on that
      • fix exported OGRE_PLUGIN_DIR
    • RTSS
      • normal_map - verify that referenced sampler exists & update docs
      • Delete default program processors
    • GL: allow geometry shaders via GL3.2 instead of EXT_geometry_shader4
    • Csharp: check for compiler presence on Linux
    • Docs
      • fix typos and merge text
      • LiSPSM - properly reference the papers
    • Samples
      • fix samples not loading on OSX
      • OpenCV - fix background being drawn on top
    Source code(tar.gz)
    Source code(zip)
  • v13.3.2(Mar 11, 2022)

    What's Changed

    • Main
      • Material - add clone overload to correctly resolve char* parameter
      • Material - assert correct Listener behaviour in getBestTechnique
      • Material - slightly clean up clearBestTechniqueList
      • Material/ Technique - use macro to forward function calls to Pass
      • RenderQueue - simplify logic & early out in processVisibleObject
      • ShadowRenderer - correctly handle unsorted transparent casters
      • ShadowRenderer - do not require dummy empty lightList
    • CMake: resources.cfg - remove no longer used resource location
    • Bites: also scale button events on OSX
    • RTSS: PSSM3 - use projective space splits to allow reversed-Z
    • Vulkan: implement Reversed Depth mode
    • Docs: Pass - clarify when light clip planes are available
    • Samples
      • Browser - skip samples.cfg on static builds
      • fix Samples/ Tests exports
    • Tests
      • PlayPen - do not modify global material in LightClipTests
      • TestContext - get rid of plugin architecture/ tests.cfg
    Source code(tar.gz)
    Source code(zip)
  • v13.3.1(Feb 17, 2022)

    What's Changed

    • CMake: respect OGRE_BIN_DIRECTORY for plugins on Windows
    • Docs
      • Add some more information on Shadow Mapping and some minor style corrections
      • scripts - add API samples for GpuProgram, Compositor and RTSS
    • Samples/ Docs: Shadows - modernize depth shadows sample
    • Tests: update gtest download URL
    Source code(tar.gz)
    Source code(zip)
  • v13.3.0(Feb 12, 2022)

    Highlights

    • GL3+: improved performance by 10% when draw-call bound
    • Codec_Assimp: allow loading glTF2 meshes
    • RTSS: PBR material support
    • Improved Gamepad Support via Bites

    What's Changed

    • Main
      • add PF_DEPTH24_STENCIL8
      • add type to GpuParamVariability
      • clarified WorkQueue request type values.
      • clean-up OGRE_ARCH_TYPE detection
      • deprecated RSC::getStencilBufferBitDepth
      • fixed memory usage calculation when cloning material (#2373)
      • Light - use point sized AABB to allow retrieval via SceneQuery
      • LodStrategyManager - forward declare MapIterator
      • log ExternalTextureSource error int ranslator instead of manager
      • Math - use std::log2 for Log2
      • Matrix3 - improve euler conversion documentation
      • Mesh - const correct _notifySkeleton
      • Rectangle2D
        • do not update bbox by default
        • set default positions & minor code cleanup
        • use infinite bbox by default
      • RenderWindow "border" param is not supported on Linux
      • ResourceGroupManager - unload Archive on removeResourceLocation
      • ResourceManager - provide common parseScript implementation
      • SceneManager
        • allow creating before RenderSystem init
        • disable normaliseNormals when there is no FFP
        • do not bind compute programs
        • move renderObjects to QueuedRenderableVisitor
        • we no longer have to re-issue texgen settings
        • modulative shadows - use autoconstants for shadow color
      • SceneNode - improve error message on duplicate object name
      • ScriptCompiler - unify OBJECTALLOCATIONERROR handling
      • ScriptTranslator - catch missing Particle Affectors/ Emitters
      • ShadowRenderer - move material definitons to script
      • simplify StaticGeometry::Region
      • Texture: call ManualResourceLoader as per Resource protocol
    • UnifiedShader
      • add FOG semantic
      • cover precision qualifiers
      • define mod() for HLSL
    • Media: drop unused Vulkan shaders
    • RTSS
      • CookTorrance - allow material level parametrisation
      • fix two-sided lighting on Vulkan
      • GLES - dont force highp precision on all shaders
      • gracefully handle shader compilation error
      • implement metallic-roughness PBR
      • merge FFPLib_Transform.{cg, hlsl}
      • simplify code by moving to shaderlib
    • Bites
      • ApplicationContextSDL - add gamecontrollerdb.txt support
      • ImGuiListener - add Gamepad support
    • CMake
      • clean up macro_log_feature calls
      • fix OpenGL build on OSX
      • rename FeatureSummary.cmake to avoid name clashes
      • treat minsizerel as release
      • Fix plugindir in OGRE pkgconfig files, fix OGRE-PCZ pkgconfig
      • Fix plugins not installed into OGRE_PLUGINS_PATH
      • Android: fix build with gradle 7
    • SWIG
      • sync ignores to deprecations
      • wrap MovableList
      • ImGui
        • enable passing ImTextureID
        • expose ImGuiStyle::Colors
        • set __version__ for Python
    • Assimp
      • apply some fixes to IO to make glTF importer work
      • Fix detection of assimp 5.1, upgrade bundled assimp, remove cmake workaround for CI (#2318)
      • AssimpLoader: optimize for fast loading by default
      • use normal and metal roughness maps if present
    • Terrain: GLSLES - only use highp precision where needed
    • Tools: create dummy skeletons - just as we create dummy materials
    • GL*
      • drop unused GLSLProgramCommon::extractLayoutQualifiers
      • HBL_NO_OVERWRITE does not imply DISCARD & update docs
    • GLSupport
      • EGL - fix restarting thread to GLES
      • GLX - fix selecting maximal supported context version
      • fix compilation on emscripten
    • GL3+
      • avoid conflict between OSX shader patching and UnifiedShader
      • clean up StateCache and unconditionally cache perf critical state
      • notify StateCache of VAO destruction
    • GL3+/ GLES2
      • enforce buffer discard with HBL_DISCARD
      • fix debug labelling of textures
    • GL: replace glew by glad, so we dont pull GLX & WGL any more
    • D3D9/ D3D11/ Cg: take target profile into account when caching shaders
    • D3D11: stop leaking D3D11DepthBuffer (#2357)
    • D3D9: use shared vertex/ fragment textures and deprecate binding_type
    • Metal
      • export metal device name
      • HardwareBuffer - clean up code
      • use PF_DEPTH24_STENCIL8 by default
    • Vulkan
      • Buffer - warn if user hits unimplemented codepath
      • enable RSC_VERTEX_TEXTURE_FETCH
      • export VulkanPlugin for static plugin loading
      • use persistent mapping for HBU_CPU_TO_GPU
    • Docs
      • correct External Texture Sources documentation
      • do not use deprecated *BufferSharedPtr for code appearing in docs
      • drop unused style.css
      • exclude private headers from API reference
      • improve InstanceManager documentation
      • improve particle-system documentation
      • License - better reference for Cuckoo font
      • update 13-Notes
    • Samples
      • add OpenCV ArUco sample
      • simplify ParticleGS Sample
      • Transparancy - check whether OIT is supported
      • Python: fix raw sample
      • Android: migrate to AndroidX

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.2.4(Dec 13, 2021)

    What's Changed

    Quick Fix for regression in v13.2.2, where OpenGL was no longer buildable on OSX

    • CMake: fix OpenGL build on OSX
    • GL3+: avoid conflict between OSX shader patching and UnifiedShader
    Source code(tar.gz)
    Source code(zip)
  • v13.2.3(Dec 11, 2021)

    What's Changed

    Quick Fix for regression in v13.2.0, where skeleton links are lost by OgreTools

    • Tools: create dummy skeletons - just as we create dummy materials
    Source code(tar.gz)
    Source code(zip)
  • v13.2.2(Dec 9, 2021)

    What's Changed

    • Main
      • PixelFormat - use red channel when packing PF_A8 to match OpenGL
      • SceneManager - drop redundant calls to _setPolygonMode
      • ScriptTranslator - fix constant parameter parsing
      • shadow caster material should never receive shadows
      • Ogre.h - include OgreUnifiedHighLevelGpuProgram.h
    • CMake: clean up GL linking
    • Overlay: BorderRenderable - correctly follow parent PolygonModeOverride
    • GLSupport
      • clean-up VideoModes handling
      • Win32 - factor out switchMode
    • D3D9: Texture - fix generation of Cube mipmaps
    • Vulkan
      • add swizzling for PF_A8
      • enable PF_DEPTH32
      • Texture - fix mipmap generation for layerd textures
    • Docs
      • add fedora setup instructions (#2301)
      • improve SceneQuery documentation
      • Instancing - use real code snippets
    • Samples
      • Instancing - drop unused invShadowMapSize
      • VTFInstancing - clean up HLSL shaders
    • Tests: fix PlayPen_Distortion

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.2.1(Dec 5, 2021)

    What's Changed

    Highlight: PF_DEPTH support in D3D9

    • Main
      • Texture - fix loadImage after loadingstate changes
      • fixed build on old macOS
    • GLSupport
      • factor out common GLX & EGL X11-code
      • fix potential crash in EGLDisplay exception path
    • D3D11: allow PF_DEPTH as part of a MRT
    • GLES2: fix HardwareBuffer::readData
    • D3D9
      • add PF_DEPTH16 support via INTZ
      • do not call D3DXCheckTextureRequirements twice
      • Texture - streamline format selection
    • Samples: Compositors - use UnifiedShader for DOF on HLSL

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.2.0(Nov 28, 2021)

    What's Changed

    Highlight: Vulkan RenderSystem added

    • Main
      • Frustum - deprecate getProjectionMatrixRS
      • Mesh - drop mSkeletonName as it always matches mSkeleton
      • RenderSystemCapabilities - deprecate int&bool programConstantCount
      • RenderSystem - hard deprecate old StencilState API
      • ResourceGroupManager - move error checking to getResourceGroup
      • SceneManager - better GPU profiler grouping
      • ScriptTranslator - deprecate cull_software
      • ScriptTranslator - streamline parameter type parsing
      • ShadowRenderer - load spot_shadow_fade.dds ahead of time
      • Texture - ensure listeners are notified for manual textures too
      • TextureUnitState - drop reference to managed textures on unload
      • GpuProgramParams - dbg assert we dont write out of bounds
      • update zip/ miniz to 2.2.0
      • Use safe idiom for math constants.
      • allow instanced rendering w/o an instance buffer
      • Fix FTBFS on GCC 11
      • Media: drop obsolete HLMS shaders
      • remove windows defines from cross-platform code
    • Bites
      • ApplicationContext - add method to query the current DPI
      • Trays - disable transparent sorting to improve batching
    • UnifiedShader
      • add OGRE_UNIFORMS macro to toggle UBO usage
      • add row_major for Vulkan
      • correctly guard Vulkan specific macros
      • fix availability of semantic aliases
      • map ivecN to HLSL
      • add all TEXCOORDn defines
    • RTSS
      • allow targeting glslang
      • further refactor parameter writing
      • GLSL - enable binding samplers in shaders via UnifiedShader
      • GLSL - let UnifiedShader take care of gl_FragColor differences
      • GLSL - use separate program linkage when available
      • GLSL - Vulkan is strict regarding vertex attribute type
      • GLSL - we can safely use custom attribs for VES_COLOUR everywhere
      • GLSL - write params as UBOs when using SPIRV
      • GLSL - write uniform location when possible
      • merge GLSLESProgramProcessor into GLSLProgramProcessor
      • ProgramManager - use writer language as cache-file extension
      • refactor ProgramProcessor registration
      • refactor ProgramWriter registration
      • update ShadowPCF4 for Vulkan
      • use UnifiedShader sampler declarations with all ProgramWriters
      • write semantics with GLSL too - to be used as attribute locations
    • Overlay
      • fix missing bits for HiDPI support
      • Font - disable transparent sorting to improve batching
      • ImGui - use Vulkan friendly buffer management
      • revert our changes to utf8_decode that broke it
      • update imgui to 1.85
    • Terrain
      • avoid interrupting rendering for Vulkan compatibility
      • GLSL - add Vulkan support
      • use texture unit count instead of shader language as heurstic
    • GLSLang
      • correctly read alignment of UBOs
      • do not register if SPIRV is not supported
      • SPIRV-Tools dependancy is superfluous
      • UBO - fix wrong size and disable logical indexing
      • do not pad 1-element uniforms as per std140
      • use latest GLSL version to get all features
    • Vulkan
      • add new RenderSystem based on ogre-next version
      • currently classified as BETA
    • D3D*: drop unused createInternalResources overload
    • D3D11
      • allow using debug markers, regardless of Ogre instrumentation
      • HLSLProgram - destroy default buffer on unload
    • D3D9
      • HLSLProgram - set correct bufferSize when reading microcode
      • stop counting constants twice for parameter buffer size
    • GL*
      • drop superflous GLHardwarePixelBuffer indirection
      • RTT Preferred Mode is legacy GL specific
      • allow PF_DEPTH MRT on GL & GLES2 + small fix for GL3+
    • GL3+
      • allow binding samplers in shader
      • use BaseVertex variants for vertexStart instead of trashing VAO
    • Metal
      • drop superflous code-paths
      • finish DepthBuffer support
      • simplify uniform index offset handling
      • fix wrong VES_TANGENT location
    • Docs
      • BuildingOgre - add Vulkan requirements
      • BuildingOgre - update dependancy list
      • improve cmake part of bootstrap tutorial
      • improve instancing section
      • Manual - rework hardware buffers section
      • Manual - adapt some pages for new theme
      • move library descriptions from Tutorial1 to Setup
      • use doxygen awesome theme for readability & mobile support
      • add Metal and Vulkan to modules and remove GLSupport
    • Samples
      • Browser - fix drawing of Thumbnails
      • Browser: scale overlay on HiDPI displays
      • Instancing - drop check for specific shader languages
      • LightShafts - update for Vulkan
      • PBR - update for Vulkan
      • Skinning - make sure we query the correct scheme
      • TextureArray - update for Vulkan
      • use UnifiedShader for B&W compositor to get Vulkan support
      • Fresnel - port to UnifiedShader for Vulkan support
      • implement DoF compositor
      • ShaderSystem - move InstancedViewports code to that SRS
    • Tests
      • update gtest to 1.10
      • BillboardText - use non-ascii pangram to test utf8 decoding

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.1.1(Oct 16, 2021)

    What's Changed

    • D3D11: drop superfluous ColourValue mapping
    • GL3Plus: fix usage of glObjectLabel
    • GLES2: clean-up glLabelObjectEXT usage
    • GLSLang
      • add local copy of gl_types.h as Vulkan SDK lacks it on Windows
      • allow compiling on Android
      • allow compiling on Windows

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.1.0(Oct 9, 2021)

    What's Changed

    • Main
      • add factory for Rectangle2D to allow auto memory management
      • add Rectangle2D to Ogre.h
      • Deprecated - drop duplicate definition of aligned_vector
      • ensure manual Textures have correct Resource load state
      • Entity - handle srcbuf == dstbuf in finalisePoseNormals
      • FactoryObj - provide default destroyInstance
      • HighLevelGpuProgram - make entry_point a common property
      • HighLevelGpuProgram - _resolveIncludes fix off-by-one #line number
      • MeshSerializer - simplify colour conversion logic
      • ParticleSystem::_expire - use idiomatic remove-erase
      • ParticleSystem - properly initialise bursting emitted emitters
      • ParticleSystem - we can assume emitters are not NULL
      • RenderSystem - factour out flipFrontFace
      • RenderWindow - provide default isClosed() implementation
      • SceneManagerFactory - provide default destroyInstance
      • SceneManager - inline aliases for destroyMovableObject
      • fix some warnings messages in android ndk r23 compilation
    • CMake
      • allow to control resource paths (#2199)
      • Allow to configure docs path
      • Fixed missing include in FindOpenGLES2.cmake
      • Enable OBJC and OBJCXX for apple build
    • RTSS
      • Fix implicit cast in shader (#2201)
      • implement two-sided lighting
      • PSSM - make PCF kernel configurable & fix reversed-z
      • PSSM - properly respect shadow far distance
    • Bites: Use Qt 6 for OgreBitesQt if present
    • UnifiedShader
      • add texture2DArray support and refactor respective sample
      • initial support for glslang
    • Overlay
      • BorderPanelOverlayElement - fix crash on device lost
      • fix compilation with imgui on mingw
    • D3D11: Sampler - fix mipFilter=FO_NONE translation
    • D3D9: Texture - do not recreate unloaded buffers
    • Metal: drop uneeded Discard and Staging buffer stubs
    • GL3Plus & GLES2: improve GL error logging
    • GLSupport: Fix build issue with libglvnd 1.3.4 (#2221)
    • GLSLang
      • fix parsing of UBO members and define VULKAN as appropriate
      • handle includes and defines
      • enable standard params & add vulkan support
    • Samples: fix build without terrain component
    • Docs: Particles - fix emitting emitter description and improve layout

    Development is funded by your contributions

    If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.0.1(Sep 4, 2021)

    • Fix compiling errors with OGRE_CONFIG_DOUBLE
    • Main: FileSystemLayer - add missing include for OSX
    • Overlay: also link against zlib, when using freetype
    • Samples: EndlessWorld - fix AutoLOD toggle

    Development is funded by your contributions If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v13.0.0(Aug 14, 2021)

    The versioning scheme changed with this release. This is the successor to Ogre 1.12 and the porting efforts are comparable with porting from 1.11 to 1.12.

    • Main
      • move
        • deprecated std wrappers into OgreDeprecated.h
        • SceneType enum to OgreDeprecated.h
        • StaticCache to Deflate, which is the only consumer
        • StaticFaceGroup to BSP plugin
      • hide
        • implementations of built-in image codecs
        • macros of OgreDynLib.h
        • OGRE_LOG_THRESHOLD
        • OgreMeshFileFormat.h
        • OgreSearchOps.h
        • ParamCommand classes
        • private parts
        • RadixSort
        • stroto*_l internal aliases
      • drop
        • "Custom Render Queues" support
        • deprecated SceneLoader API
        • identifiers for compilers gone long ago
        • long-standing hard deprecations
        • most of texture_alias API
        • ParticleIterator
        • some deprecated functions with low impact
        • _StringBase & _StringStreamBase indirection
        • subroutine API in favor of specialization constants
        • support for TEX_TYPE_2D_RECT
      • Compositor
        • avoid evaluating Techniques twice
        • CompositorChain - correct clearBuffers value for "input previous"
        • drop read_back_as_texture option
        • fix auto clear colour and use it in "scene previous"
        • improve error reporting
        • throw on compositor not found
        • CompositorPass - group data by type
        • simplify RSStencilOperation
      • SceneManager
        • createLight - add convenience param to specify Type
        • default to PF_BYTE_RGBA for shadow textures
        • factor out ShadowTextureListener
        • getDebugDrawer should be const
        • SceneNode - drop deprecated WireBox field
        • change SceneNode::setDirection TS_LOCAL > TS_PARENT
      • StaticGeometry
        • allow swapping material at runtime
        • assert that we get an indexBuffer
        • minor code cleanup
        • use more robust prepareForShadowVolume
        • use the entity material and not the mesh one
        • fix StaticGeometry not casting shadows
      • InstanceManager
        • assert that technique is supported
        • unshare LODs as well (#2000)
        • Make sure cloned vertex data is deleted.
      • ShadowRenderer
        • also consider lightmask in shadow visibilitymask
        • check whether pass is actually programmable
        • drop unused fields
        • ensure shadow caster material is not a receiver
        • handle dynamically changing receivers
      • Root
        • catch bad config options in restoreConfig
        • drop createRenderWindows
      • Image
        • consistently use uint32 for dimensions
        • drop unsupported Filter enum values
      • TRect
        • add asserts to merge & intersect
        • clarify that rects extend downwards.
      • Particle & Billboard
        • store packed colour to safe memory
        • reduce memory footprint
      • ParticleEmitter
        • provide default _getEmissionCount
        • add burst mode
      • UnifiedGpuProgram
        • add final annotation
        • drop priorisation support
      • GpuProgramParams
        • drop RenderSystemData
        • use unified constant storage
      • GpuSharedParameters
        • batched up & download
        • drop unused fields
        • use sized int for version field
      • FileSystemLayer
        • do not change paths already pointing inside snap
        • also look relative to lib for configs on Linux
      • add API for exporting scene hierarchy + dotscene implementation
      • add copy of miniz/ zip
      • alias deprecated caps to RSC_VERTEX_PROGRAM
      • always use MovableObjectFactory::destroyInstance
      • Capabilities - drop deprecated and generally supported caps
      • catch empty GpuProgram sourceFile
      • Codec - drop deprecated parts and move the rest to ImageCodec
      • consistently use float for depth and uint16 for stencil values
      • convert guarded ERR_INVALIDPARAMS to OgreAssert
      • DDSCodec - disable mips instead of decompressing
      • DefaultDebugDrawer -Skip bounding boxes that are infinite.
      • DepthBuffer - simplify API
      • Disable vptr checks for Singleton constructor (#2032)
      • Export ScriptTranslatorManager (#2031)
      • factor out GLSL_GL3Support include and use it in RTSS
      • fix texture_unit name setting
      • Frustum - stop inheriting from Renderable
      • GpuNamedConstants - drop generateConstantDefinitionArrayEntries
      • GpuProgram - const correctness fixes
      • HardwareBufferManager - stop superfluos Buffer tracking
      • HardwarePixelBuffer - unify SliceTRT handling
      • HL GpuProgram - make populateParameterNames final
      • Log::Stream should only be movable as per STL streams
      • make custom int types forward to stdint.h
      • make HighLevelGpuProgramPtr an alias for GpuProgramPtr
      • make log of RSC_AUTOMIPMAP_COMPRESSED descriptive
      • make remaining createImpl overrides private
      • make STL usage more specific, by slimming down OgreStdHeaders.h
      • Material - drop needless pointer indirection
      • MaterialSerializer - do not export RTSS techniques by default
      • Math - add missing limits include (#2051)
      • Math - Use Möller-Trumbore ray-triangle intersection algorithm
      • merge HighLevel & GpuProgramManager
      • Node - drop DebugRenderable
      • OgreAssert - behave like standard assert and print expression
      • ParticleSystem - use vector instead of list to collect Particles
      • Particle - always use own dimensions
      • Pass - drop shadow_*_program_ref API
      • Pass - inline trivial accessors & use float for storage
      • PixelFormat - inline alias functions and improve docs
      • Prefabs - drop no longer needed Prefab_Axes
      • Rect - use int32 as base type for MSVC/ GCC consistency
      • RenderQueueGroup - drop unused argument from constructor
      • RenderSystem - make setStencilState the primary stencil API
      • RenderTarget - drop ColourDepth property
      • RenderTarget - drop unused StatFlags enum
      • RenderWindow - setFullscreen & reposition are optional
      • replace HardwareUniformBuffer by plain HardwareBuffer
      • replace zzip & libz with zip/ miniz
      • ResourceBackgroundQueue - hide details
      • Resource - clarify unprepareImpl documentation
      • ResourceGroupManager - replace WorldGeometry by CustomStage
      • ResourceManager - const correctness
      • ResourceManager - fix compilation in legacy mode
      • ScriptTranslator - catch invalid material references in compositor
      • ScriptTranslator - fix applyTextureAliases fallback
      • ShadowCameraSetupFocused - make some members private
      • ShadowCaster - simplify getShadowVolumeRenderableList API
      • Simplify DefaultHardwareBuffer creation
      • simplify & inline getElement(N) helper functions
      • Skeleton - fix addLinkedSkeletonAnimationSource
      • Skeleton - make mAnimationsList available to derived classes
      • slightly clean up TextureUnitState
      • slightly refactor FocusedShadowCameraSetup
      • StreamSerialiser - improve error reporting with OgreAssert
      • StringInterface - add SimpleParamCommand template
      • StringInterface - directly use name instead of ParameterDef
      • StringUtil::normalizeFilePath - default to keep case
      • Texture - allow manually overriding image mips
      • TextureManager - add removeAllNamedSamplers
      • unify ShadowRenderable implementations
      • unify SharedPtr typedef names as Ptr
      • use int in TextureUnitState::getTextureDimensions
      • use typed enums and update field order to reduce padding
      • use unnamed SceneNodes as possible
      • UtilSSE - assert correct stride in softwareVertexMorph
      • VertexElementType - make VET_COLOUR* an alias for VET_UBYTE4_NORM
      • Viewport - disable clearBuffers if clearEveryFrame is off
      • reduce availability of iteratorwrapper by using forward declarations
      • rename Media/ShadowVolume to Media/Main
      • Mark public shader functions with @public-api
    • Bites
      • ApplicationContext - drop platform shader discovery heuristics
      • ApplicationContext - skip resource location check on emscripten
      • Trays - ensure Font is loaded before using it
      • Trays - ensure glyph info is loaded
    • RTSS
      • add WBOIT SRS and extend Transparency Sample
      • allow injecting data via local variables (PSSM, Lighting, Texture)
      • allow passing SPC_TANGENT_OBJECT_SPACE to FS
      • auto param data can only be float/ uint32
      • be greedy about lights to avoid shader trashing
      • decouple normal-mapping from lighting stage
      • drop Cg support
      • drop deprecated functions
      • FFPFog - use autoconstants
      • fix use of non-unit light direction when scaling is present
      • Fog - follow the preAddToRenderState protocol
      • GLSL - check that sampler is used before binding
      • GLSL - dont flag optimized away texture samplers
      • hide default shader writers and processors
      • hide FFP SRS that can be used with generic API only
      • hide HardwareSkinning implementations
      • hide lighting renderstates
      • make shader libs and entry-points private
      • merge FFPLib_Texturing
      • move TextureAtlas SRS to samples
      • move unrelated shaders to Samples
      • ProgramManager - drop superfluous cast
      • PSSM3 - add support for colour shadows
      • remove unused iterator leftovers
      • ShaderProgram - only support one "main" function
      • Shadows - use shadow2D instead of texture for HLSL compatibility
      • slightly refactor Operand writing
      • Texturing - only sample texture if necessary
      • UniformParameter::bind - paramsPtr cannot be null
      • UniformParameter - do not duplicate GpuConstantDefinition queries
      • UniformParameter - uint8 is sufficient to store elementsize
    • SWIG
      • add %template for CameraMap
      • consistently name containers _type_List and _type_Map
      • enable director for OverlayElementFactory
      • fix compilation with SWIG4.0
      • stdi.i is needed after recent sized int typdef changes
      • Python: dont try to use strings as sequences
    • Terrain
      • Delete plane when shutting down.
      • fix dynamic shadows not working in LOD1
      • make waitForDerivedProcesses public
      • MaterialGenerator - drop description field
      • QuadTreeNode - drop unused quadrant field
      • Return early if rect doesn't match node.
      • RTSS Transform - take advantage that Material is Terrain local
      • use RTSS to generate LOD1 technique
      • use uint for coordinates that must not be < 0
    • Overlay
      • Font
        • remove Texture to allow reloading
        • position glyphs using bearing and advance instead of width
      • ImGui
        • move into separate SWIG module
        • update to 1.83
      • hide builtin Element factories
      • hide ParamCommand classes
      • remove separation between templates and elements
      • typedef DisplayString to String and replace UTFString
      • use stb_truetype if freetype is not found
    • ParticleFX
      • hide all factory classes
      • ScaleAffector - add scale_range parameter
    • DotScene
      • export visibility for light & entity
      • implement export of entity local material
      • Add instancing support
      • fix DTD and add test
    • add GLSLang shader compiler plugin
    • Assimp: blacklist bsp loader found in recent versions
    • STBICodec: update stb image to 2.27
    • PCZSceneManager: register as listener instead of using inheritance
    • HLMS: drop the component
    • CI
      • run vtests on GL3+ for full RTSS coverage
      • run VTests using headless EGL
    • CMake
      • bump required version to 3.10
      • clean up dependencies discovery
      • default to OGRE_ASSERT_MODE 2
      • dont install additional find scripts
      • dont put patch in sovesion in accordance to semver
      • drop vcproj_userfile - not needed any more
      • proper fix for building SampleBrowser bundle
      • stop installing sample code
    • RenderSystems: make parentWindowHandle an alias to externalWindowHandle on all platforms
    • D3D*: drop unused "Backbuffer Count" option
    • D3D11
      • also support "OgreUniforms" as default cbuffer
      • drop non-standard HLSL defines
      • drop _renderUsingReadBackAsTexture
      • drop unused "Floating-point mode" option
      • HLSLProgram - align buffer memory & update params with one memcpy
      • HLSLProgram - avoid leaking mSerStrings
      • HLSLProgram - minor code cleanups
      • implement hardware shared_params
      • introduce CHECK_DEVICE_ERROR macro
      • reduce mSerStrings usage
    • D3D9
      • properly register assembly language support
      • rename "Multi device memory hint" > "Auto buffer management"
    • GL*
      • GLSL - warn if there is a default value, that we would overwrite
      • use getResourceLogName for better error reporting
    • GLSupport
      • Android - use finaliseWindow as well
      • CPreprocessor - add basic concatenation support
      • EGL - search maximal supported context version like GLX
      • EGL - try harder to find a suitable default display
      • fix compilation with Android NDK 20+
      • GLX - select maximal supported context version
      • OSX - drop "hidden" global RS option
    • GL3+ & GLES2: simplify GLSLProgramFactory
    • GL3Plus
      • enable "Separate Shader Objects" by default
      • fix usage of UBOs for default params
      • implement UBO storage for non shared params
      • drop ABO support - SSBOs do the same with a less esoteric API
      • rename "spirv" to "gl_spirv" as it is indeed a different syntax
    • GLES2: Fixing warning in a deprecated String::toString case (#2054)
    • Metal: Program - fix physical index retrieval
    • Docs
      • add hardware shared_params section
      • fix ColourInterpolator Affector formatting
      • improve _createRenderWindow miscParam docs
      • improve & regroup Compositor script docs
      • improve stencil shadow algorithm documentation
      • Manual - add cross-platform shaders section and restructure RTSS
      • port static geometry tutorial from wiki
      • RTSS - mention shader generation control & update init sample code
      • setColourOperationEx note no longer applies to D3D9+
      • StencilState - improve & unify compositor script reference
      • use RenderDoc images in Deferred Tutorial
    • Samples
      • AndoidJNI - update sample to show Input Event handling
      • Browser - use getRenderWindowDescription
      • clean-up Grass (static-geometry) sample
      • DeferredShading - disable RTSS lights if we dont need them
      • DeferredShading - exclusively use the RTSS for GBuffer shaders
      • fix B&W compositor for HLSL
      • move RTSS materials to sample media
      • simplify DeferredShading Demo
    • Tests
      • fix geometry shader test after resource lookup changes
      • move ogretestmap.zip to BSP resources
      • Terrain - extend to test (de)serialization
      • TextureShadowsCustomReceiverMat - use FFP API to avoid Cg
      • TextureShadows - use FFP API to avoid Cg
      • MeshUpgrader - clean up CLI options after colour simplification
    • VRMLConverter: fix warning messages about shadowing 'end' variable with std::ios::end stl variable (#2057)
    • VTests: also consider -rs option on initial run
    • VTests: fix StaticGeometry tests

    Development is funded by your contributions If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v1.12.13(Aug 14, 2021)

    • Main
      • Instances Make sure cloned vertex data is deleted.
      • add API for exporting scene hierarchy + dotscene implementation
      • catch empty GpuProgram sourceFile
      • CompositorChain - correct clearBuffers value for "input previous"
      • Compositor - fix auto clear colour and use it in "scene previous"
      • DDSCodec - disable mips instead of decompressing
      • DefaultDebugDrawer -Skip bounding boxes that are infinite.
      • Disable vptr checks for Singleton constructor (#2032)
      • Export ScriptTranslatorManager (#2031)
      • FileSystemLayer - also look relative to lib for configs on Linux
      • FileSystemLayer - do not change paths already pointing inside snap
      • fix StaticGeometry not casting shadows
      • InstanceManager - unshare LODs as well (#2000)
      • make log of RSC_AUTOMIPMAP_COMPRESSED descriptive
      • MaterialSerializer - do not export RTSS techniques by default
      • ParticleEmitter - new take on burst mode
      • PixelFormat - inline alias functions and improve docs
      • Root - catch bad config options in restoreConfig
      • SceneManager::createLight - add convenience param to specify Type
      • ScriptTranslator - catch invalid material references in compositor
      • ShadowRenderer - also consider lightmask in shadow visibilitymask
      • ShadowRenderer - ensure shadow caster material is not a receiver
      • Skeleton - fix addLinkedSkeletonAnimationSource
      • StaticGeometry - assert that we get an indexBuffer
      • StaticGeometry - use more robust prepareForShadowVolume
      • TextureManager - add removeAllNamedSamplers
      • TRect - add asserts to merge & intersect
      • TRect - clarify that rects extend downwards.
      • Viewport - disable clearBuffers if clearEveryFrame is off
    • Bites: ApplicationContext - skip resource location check on emscripten
    • Overlay: Font - Texture must be removed to allow reloading
    • CMake: proper fix for building SampleBrowser bundle
    • RTSS
      • be greedy about lights to avoid shader trashing
      • fix use of non-unit light direction when scaling is present
      • Shadows - use shadow2D instead of texture for HLSL compatibility
    • SWIG
      • add %template for CameraMap
      • enable director for OverlayElementFactory
      • Python: dont try to use strings as sequences
    • Terrain
      • Delete plane when shutting down.
      • fix dynamic shadows not working in LOD1
      • Return early if rect doesn't match node.
    • DotScene
      • DotScene - fix DTD and add test
      • implement export
    • D3D11: HLSLProgram - avoid leaking mSerStrings
    • GL*: GLSL - warn if there is a default value, that we would overwrite
    • GLSupport
      • Android - use finaliseWindow as well
      • CPreprocessor - add basic concatenation support
      • EGL - search maximal supported context version like GLX
      • EGL - try harder to find a suitable default display
      • fix compilation with Android NDK 20+
      • GLX - select maximal supported context version
    • Docs
      • fix ColourInterpolator Affector formatting
      • improve _createRenderWindow miscParam docs
      • improve & regroup Compositor script docs
      • RTSS - mention shader generation control & update init sample code
      • setColourOperationEx note no longer applies to D3D9+
      • StencilState - improve & unify compositor script reference
      • use RenderDoc images in Deferred Tutorial
    • Samples: DeferredShading - disable RTSS lights if we dont need them

    Development is funded by your contributions If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v1.12.12(Apr 21, 2021)

    highlight: node animation support in DotScene Plugin

    • Main
      • add SceneNode::loadChildren
      • ArchiveManager - use consistent wording in messages
      • CompositionPass - avoid compiling material twice
      • Compositor
        • allow creating cubemaps
        • allow overriding camera in render_scene
        • allow referencing specific cubemap slices
      • DDSCodec - make DDS constants static
      • deprecate unused includeOverlays parameter in _renderScene
      • Exception - avoid referencing dangling strings
      • FileSystemLayer
        • also look in XDG_DATA_HOME for configs
        • also look relative to dll for configs on Windows
        • also look relative to dylib for configs on OSX
        • simplify getConfigFilePath
      • Frustum - fix description of getNearClipDistance (#1901)
      • HardwareBufferManager - assert that this is the correct manager
      • InstanceManager - fixed invalid EdgeData after unshareVertices
      • Log - replace setLogDetail by setMinLogLevel
      • make resource lookup robust to reloaction on Linux
      • move shared FOURCC macro to internal header
      • ResourceGroupListener - drop unused worldGeometryPrepare* methods
      • Root - use actual stack instead of mSceneManagerStack
      • SceneManager - improve error messages at compositor resolution
      • SceneManager - preserve the previous material scheme
      • ScriptCompiler - allow abstract compositor target sections
      • ScriptCompiler - simplify toggling AST debug output
      • slightly simplify SceneManager::_renderScene
      • TangentSpaceCalc - prevent leaking buffer lock
      • UnifiedProgram - forward compile errors & handle res not found
      • build fix on NetBSD: remove #ifdef FreeBSD (#1911)
    • Bites
      • add OGRE_BITES_STATIC_PLUGINS CMake option to skip plugins.cfg
      • Android - fix crash on surface recreation
      • Android - properly parse RenderSystem ConfigOptions
      • print which resources.cfg is being parsed
      • warn about non-existant locations in resources.cfg
    • RTSS
      • fix AlphaTest shaders for GLES2
      • GLSL - explicitly bind output buffer location if possible
      • handle BuildDstTechnique flag inside SGTechnique
      • log program names when caching to disk to aid debugging
      • ProgramWriter - the only program we ever write is main
      • PSSM - avoid scalar swizzling for compatibility
      • simplify handling of HLSL targets
      • Texturing - also override texture type for cubic reflection
    • Overlay:
      • add setVisible to OgreOverlay and OgreOverlayElement
      • Element - inline trivial accessors
      • improve BorderPanelOverlayElement documentation
      • Revert "[OGRE-155] TextAreaOverlayElement: fix for mSpaceWidth field getting stuck with wrong value in certain cases."
    • Terrain
      • add SWIG bindings for CSharp
      • TerrainGroup - deprecate getTerrainIterator
    • SWIG
      • allow iterating over SceneNodes
      • Fixed output params of suggestTangengtVectorBuildParams (#1928)
      • instantiate GpuProgramParametersPtr
      • instantiate SplitPointList (#1927)
      • wrap MovableObjectMap
    • Csharp: forward operator overloads on Vector for convenience
    • Python
      • weakly link libpython to allow relocation
      • add build system for python wheels
    • CMake
      • also install dependencies on OSX
      • Dependencies - update SDL2 to 2.0.14
      • fix Framework linking with recent CMake & Xcode
      • fix PrecompiledHeader.cmake for old CMake versions (#1942)
      • make InstallDependencies available on all platforms
      • make OGRE_BIN_DIRECTORY configurable
      • respect user CMAKE_INSTALL_RPATH
      • use relative paths in resources.cfg on OSX
      • Revert "allow/ fix static build of python component"
    • Plugins: export Plugin classes for direct linkage
    • DotSceneLoader
      • correct angle parsing (#1902)
      • Add DotScene usage scenarios (#1892)
    • ParticleFX: TextureAnimator - fix speed calculation
    • D3D9
      • fix auto HardwareBuffer management
      • fix wrong cast in createBuffer
      • HardwareBuffer - fix comparison that turned into assignment
      • reduce dependance on d3d9x
    • GL
      • disable unused GLU include
      • HardwareBuffer - fix readData and destruction
    • GLSupport
      • EGL - catch client extension failure on android
      • EGL - Emscripten does not support PBuffers
      • EGL - export "Content Scaling Factor" on Android
      • fix wrong VERSION value on OSX/GL3+
      • OSX - only contentScaling 1 and 2 is supported
    • Tools: MeshUpgrader
      • Fix some formatting regarding console output (#1946)
      • Fix some input prompts and logname (#1940)
      • set log file path (#1948)
      • Throw an exception if the material name is empty (#1934)
      • Tidy up whitespaces (#1938)
    • Docs:
      • correct documentation of OgreOverlayElement
      • 1.12 Notes - add noteworthy post 1.12.0 additions
      • Add section about empty Material Names (#1944)
      • BuildingOgre - fix target names for OSX which is case-sensitive
      • document "Content Scaling Factor" RenderSystem Option
      • fix typo in InstanceManager (#1906)
      • format corrections in "iteration" section (#1897)
      • improve PixelBuffer and Texture parts
      • Light - correct some erroneous wording and apply consistency. (#1909)
      • RenderQueueListener fix formatting
      • small typo in the description of setStencilBufferParams (#1904)
      • improve override documentation
    • Samples
      • add Java sample
      • Android - fix TextureOES sample
      • Compositor - update blacklist
      • CSM - correct capabilities check
      • CubeMap - port to new compositor functionality
      • Deferred - drop unused "profiles" parameter
      • enable LightShafts for GLES2
      • factor out requireMaterial/ use it to check compatibility
      • Fresnel - port to compositors
      • PBR - allow shader upgrading on GL3+/OSX
      • Python - simplify bootstrap sample

    Development is funded by your contributions If your company uses Ogre, consider supporting its development in return:

    Source code(tar.gz)
    Source code(zip)
  • v1.12.11(Feb 13, 2021)

    highlights: new Software RenderSystem and headless mode on Linux

    • Main
      • DefaultHardwareVertexBuffer - correctly set used BufferMgr
      • fix getCastsShadows when inherting from MovableObject + Renderable
      • fix inconsistently named PF_RG8
      • fix warning in RenderQueueGroup::merge
      • ShadowRenderer - fix culling not propagated to RTSS passes
      • Image - fix getData() const overload
      • add Ogre::to_string(..) alias for unified access to such functions
      • add simplified Material::clone overload
      • AutoConstantEntry - clean up storage type
      • Camera - allow to sort by depth and not by distance
      • Compositor - allow referencing global textures again
      • DDSCodec - implement writing PF_FLOAT16_R
      • GpuProgramParams - only set variability if requestedSize > 0
      • GpuProgramParams - simplify two-param AutoConst overloads
      • GpuProgramParams - use templated _writeRawConstant & update docs
      • GpuProgramParams - use templates instead of copy & paste
      • HardwareBuffer - allow acting as facade for real implementation
      • HardwarePixelBuffer - consider depth in size computatiuon
      • minor code cleanup around _getProgramByName
      • Node - inline some trivial setter overloads
      • Particle - implement sprite sheet texture animation
      • ParticleSystem - fix autoupdate of AABB
      • ParticleSystem - fix setMaterialName lookup
      • ParticleSystem - forward shadow casting flag to renderer
      • ParticleSystem - logError instead of assert on null material
      • RenderSystem - add "VSync Interval" as common option
      • RenderSystem - do not require validateConfigOptions
      • RenderSystem - provide default *TexelOffset implementations
      • RenderSystem - unified derived depth bias update
      • use RenderWindow::resize to react to size change instead of querying
      • replace "depth" by "distance" to match the computations
      • ScriptTranslator - avoid multiple lookups for translateProgramRef
      • ScriptTranslator - flag unexpected parameter
      • ShadowCameraFocused - receiverBB should be intersected with
      • unify fsaaHint documentation
      • unify null material logging
      • unify PixelBuffer locking between rendersystems
      • Animation - deprecate IteratorWrapper based access
      • deprecate RenderTarget::Impl
      • RenderQueueGroup - deprecate getIterator
      • GpuProgramParams - deprecate setConstantFromTime
      • fix spelling errors reported by lintian
    • CMake
      • allow/ fix static build of python component
      • clean-up feature summary
      • GL* - prevent exporting OgreGLSupport for linking
      • use OGRE_LIB_DIRECTORY when determining OGRE_PLUGIN_PATH for OGREConfig.cmake
      • use PATH_VARS in configure_package_config_file
      • Bites - only add D3D include_directories when needed
    • RTSS
      • assert that we have a sceneManager in synchronizeWithLightSettings
      • provide overloads taking material directly instead of by name
      • PSSM3 - cast shadows on "lighting_enabled false" surfaces
      • ShaderGenerator - do not index SceneManagers by name
    • Overlay
      • OverlayContainer - drop wrong cast
      • OverlayElement - warn if we are about to change the material
      • TextArea - ensure glyphinfo is loaded/ avoid superfluos lookups
    • Bites
      • ApplicationContextBase - catch if no RenderSystems are available
      • Input - add Gamepad support
      • make GLXConfigDialog optional, relaxing the Xaw dependency
      • StaticPluginLoader - add Assimp and TinyRenderSystem
    • SWIG
      • add Vector.setitem and missing NodeObjectMap
      • wrap ParticleSystemRenderer
      • Python - enable implicit conversion from float to Radian
    • Volume: TextureSource - skip GPU round-trip and allow different formats
    • Assimp: respect resource group when creating material
    • STBICodec: encodeToFile - improve error message
    • UnifiedShader: add texture2DLod
    • Tiny: implement Software Renderer
    • D3D*
      • drop superfluous MinGWSupport headers
      • fix braindead CSAA naming and mode selection
    • GL*
      • clean up display frequency configOption handling
      • immediately parse vendor instead of caching string
    • D3D11: turn D3D11_CREATE_DEVICE_DEBUG into runtime option
    • GL3Plus: turn GL_DEBUG_OUTPUT into runtime option and improve msg format
    • D3D9
      • port to delegate buffer API
      • RenderSystem - remove fields duplicated from RenderWindow
      • use staging buffer instead of downgrading all manual textures
    • GL
      • gl.h and glext.h are unused (#1841)
      • port to delegate buffer API
    • GLSupport
      • correctly request 3.0+ core context
      • EGL - also query client extensions
      • EGL - provide PBuffer based Window for transparent fallback
      • EGL - Window do not require methods only used on X11
      • resurrect EGLRenderTexture
      • X11EGLWindow - fix shadowing warnings
      • GLX - recover from more XRandR failure cases
    • Docs
      • add missing copyright statements
      • add grouping to BillboardSet documentation
      • Bites - fix doxygen grouping
      • CodingStandards - add SPDX-License-Identifier
      • describe the camera coordinate system
      • drop references to AGP memory
      • improve Scripts part
      • improve WinRT build instructions
      • Manual - improve SceneManager overview
      • manual - unify GPU Program docs below Scripts
      • slightly overhaul basictutorials
      • Tutorial3 - reference texture splatting wikipedia article
      • unify ParticleFX and particle script docs
      • update and reference RenderSystem::setConfigOption
      • update RTSS docs
    • Samples
      • Emscripten - fix build
      • fix reference to a non existing object in filament.material
      • Python - fix crash at shutdown
      • VolumeTerrain - store data as half-float to reduce SDK size
    • PlayPenTests
      • fix missing BSP scene manager RTSS registration
      • fix Overlay material warning
      • port some tests to UnifiedShader

    Source code(tar.gz)
    Source code(zip)
  • v1.12.10(Dec 13, 2020)

    highlight: native GLES2 support on Windows via WGL

    • Main
      • add & improve error messages on missing materials
      • add OGRE_MIN_VERSION convenience macro
      • Any - deprecate operator<<
      • deprecate dummy operator<< that only exist due to Ogre::Any deficiency
      • move handling of missing RSC_POINT_SPRITES support to RTSS
      • BillboardSet - fix removeBillboard
      • BillboardSet - refactor vertex generation
      • BillboardSet - simplify ActiveBillboards handling
      • ParticleEmitter - ensure uniform distribution of emitter direction
      • ColourValue - add conversion for native-endian byte formats
      • ColourValue - inline comparison operators
      • DefaultDebugDrawer - fix Frustum drawing
      • DefaultSphereSceneQuery - use scaled & cached WorldBoundingSphere
      • drop wrong PFF_HASALPHA for PF_DXT1
      • Entity - make SchemeHardwareAnimMap a vector
      • HighLevelGpuProgram - set lineFilename support explicitly
      • make Image class more versatile
      • Image - add casting getData
      • Image - add create for 2-phase allocation
      • Image - only re-allocate buffer if needed
      • Image - simplify combineTwoImagesAsRGBA
      • Image - simplify encoding paths
      • Image - simplify resize & scale using create
      • Image::FILTER_LINEAR/ BILINEAR is identical
      • inline several hot methods
      • MovableObject - factor out getBoundingRadiusScaled
      • MovableObject - make getVisibilityFlags getQueryFlags virtual
      • MovablePlane - use static BOX_NULL
      • ParticleSystem - tell renderer about bounding box
      • BillboardParticleRenderer - export setTextureStacksAndSlices
      • Pass - inhibit _dirtyHash if being deleted
      • Pass - inhibit recompile if being deleted
      • PixelUtil - bulkPixelConversion use production assert
      • PSSM Camera Setup - skip custom culling frustum (#1781)
      • RadixSort - add iterator based overload
      • RenderSystem - backport RSC_DEPTH_CLAMP from next
      • RenderSystem - document setConfigOption
      • RenderSystem - provide default thread registration functions
      • SceneLoaderManager - forward groupName to Codec implementations
      • SceneManager - do not cull texture shadow casting lights
      • SceneManager - fix crash in manualRender(Renderable*)
      • ShadowRenderer - assert that a custom caster material has passes
      • ShadowRenderer - simplify visibility test
      • simplify several AABB computations
      • StringConverter::parse - keep value unchanged on error
      • unify baseVertexPointerToElement into templated implementation
      • VertexBufferBinding - inline hasInstanceData
      • VES - alias DIFFUSE/ SPECULAR to COLOUR1/2
      • enable AutoParams for RenderToVertexBuffer shaders
      • fix build with OGRE_CONFIG_DOUBLE
      • Math - float is always sufficient for trigonometric functions
      • Quaternion - always use float storage
      • deprecate obsolete compute_group_dimensions
      • drop usage of deprecated RenderSystemCapabilities
      • deprecate getDisplayMonitorCount
      • deprecate RSC_INFINITE_FAR_PLANE
      • deprecate RSC_VERTEX_FORMAT_UBYTE4
      • drop remains of Symbian OS detection
    • CMake
      • Dependencies - always use static build, if we build our own deps
      • DirectX11 - fix discovery when using MINGW and having W10SDK
    • RTSS
      • correctly handle SPS_BLEND_INDICES & drop workaround
      • implement FFPRenderStateBuilder as TargetRenderState::link
      • move resolveColourStageFlags fixup method to TargetRenderState
      • Program - add convenience resolveParameter overload
      • RenderState - add stringvector link overload
      • RenderState - drop template in generic funcs
      • ShaderFunction - refactor resolve*Parameter
      • SubRenderState - add generic setParameter
      • swap resolveLocalParameter arguments for consistency
      • transfer TargetRenderState ownership to Pass
    • Bites
      • OSXConfigDialog - use new ogre logo and a tighter layout
      • Trays - fix broken mouse-wheel handling & update SampleBrowser
    • UnifiedShader: inital metal support
    • ParticleFX: simplify colour related computations
    • Overlay
      • update imgui to 1.79
      • ImGuiOverlay - avoid recreating buffers at every draw call
      • ImGuiOverlay - fix off-by-one in strncpy
      • Font - implement simple writing to BillboardSet
      • Font - fix tight glyph packing. Obsoleting character_spacer cfg
      • suppress warnings in imgui
    • SWIG
      • Add cast from OverlayElement to PanelOverlayElement and TextAreaOverlayElement (#1741)
      • Added cast from OverlayElement to OverlayContainer
    • AssimpCodec
      • fixes for getScale function
      • add support for point- and line-list meshes
    • DotSceneLoader: attach loaded TerrainGroup to rootNode as UserAny
    • D3D11
      • drop unused mSceneAlpha* members
      • fix HBL_DISCARDed HBU_GPU_ONLY buffers not being updated
      • fix reinterpretGSForStreamOut
      • fully disable rasterization with streamout
      • HardwarePixelBuffer - correct HBU check
      • log selected device feature level
      • fix RenderTargetView for Texture3D
    • D3D*: use common Ogre implementation for #include handling
    • GL3+: drop unused scratch buffer implementation
    • GL
      • GLSLLinkProgram::activate - drop pre-use glGetError
      • TextureBuffer::blit - disable HW FBO blit again to fix PG Impostors
    • GLSupport
      • GLX - simplify context creation and re-enable fallback
      • Win32 - use CreateContextAttribs
    • Metal:
      • add alpha to coverage support
      • enable runtime #include support through Ogre
      • Hardware*Buffer - also update shadow buffer in copyData
      • implement _setPolygonMode
    • Terrain
      • factor out TerrainTransforms.glsl
      • improve getPointTransform API
      • LayerBlendMap - use Image for storage
      • move uv multiplication from vertex into fragment shader
      • replace more raw malloc calls by Ogre::Image
      • use Image for CPU staging buffers
      • use RTSS shaders for depth shadows
      • use RTSS shaders for Fog & Lighting
      • QuadTreeNode - deprecate getAABB
      • QuadTreeNode - use private inheritance instead of aggregation
    • Docs
      • improve building instructions
      • improve PixelFormat documentation
      • make sure Assimp and FreeImage show up in Plugins
      • Manual - clean up Particle System Attributes
      • Manual - improve introduction
      • Terrain - add method grouping
    • Samples
      • CSM - add back required Cg caster program
      • Instancing - fix VTF techniques after TerrainHelpers refactor
      • ParticleGS - finish D3D11 implementation
      • ParticleGS - refactor display shaders to use VS radius
      • ParticleGS - simplify Generate material
      • ParticleGS - fix HLSL shader
      • Python - slight cleanup
      • RTSS - drop superfluous checks after resolve*Parameter
      • update terrain sample and tutorial
      • Water - render "circles" using BillboardSet
    • Tests
      • add Image.Resize test
      • avoid loading plugins
      • add BillboardText test

    Source code(tar.gz)
    Source code(zip)
  • v1.12.9(Sep 20, 2020)

    highlight: merge ogre-assimp as Codec_Assimp and OgreAssimpConverter Tool

    • Main
      • Any - enable implicit conversion constructor following std::any
      • Billboard - inline trivial getters & setters
      • BillboardParticleRenderer - inline facade methods
      • BillboardSet - avoid segfault if MaterialPtr is NULL
      • BillboardSet - inline and devirtualise trivial getters/ setters
      • BillboardSet - simplify per Billboard property handling
      • cleaned definition to fix build for macOS on ARM64
      • clean-up/ refactor HBU flags
      • Codec - refactor API to make it generally usable
      • Camera - use inherited mManager property instead of duplicating
      • deprecate ParticleVisualData
      • deprecate Root::convertColourValue
      • deprecate SceneLoaderManager API in favor of new Codec API
      • HighLevelGpuProgramManager::isLanguageSupported - add const
      • ManualObject - allow using transparent pass with detached MO
      • Mesh - introduce MeshCodec indirection to allow different formats
      • MovableObjectFactory - provide default destroyInstance impl
      • ParticleEmitter - use inherited Particle pos
      • ParticleSystem::clear - do not leak emitters into free list
      • ParticleSystem - set owner on creation instead of status change
      • ScriptTranslator - allow multi-language programs
      • Serializer - const correctness
      • ShadowRenderer - fix FT_MIP setting being overwritten
      • StringUtil.normalizeFilePath - properly handle absolute unix paths
      • Swig - extend PixelBox by method returning data as void pointer (#1674)
      • UnifiedShader - add texture1D alias for HLSL
      • use new HBU flags for code appearing in docs
      • Make resource paths relative to resources.cfg-location
      • use mesh provided HardwareBufferManager to create hardware buffers
      • unify debug drawing in the DefaultDebugDrawer class
    • Bites
      • use new logo in GLX config dialog
      • use new logo in Win32 config dialog
      • Add OGRE_CONFIG_DIR envvar
    • RTSS: AlphaTest - pass is a reserved keyword in HLSL
    • Overlay
      • Font - improve freetype related error messages
      • update imgui to 1.77
    • SWIG
      • enable imgui with C# and Java as well
      • export LogListener
      • Overlay - add workaround for setting DisplayString parameters
    • Terrain
      • simplify - blendmap format is always PF_BYTE_RGBA
      • use OgreUnifiedShader for shader generation
    • GL*: properly translate HBU setting
    • D3D11
      • HardwarePixelBuffer - properly use staging buffers
      • properly use HBU setting instead of abusing systemMemory flag
      • re-use shadow buffer for temporary staging
    • D3D9
      • auto-disable FFP fog, when fragment shader is present
      • drop D3DPOOL_MANAGED for buffers & discard HBU_DETAIL_DISCARDABLE
      • properly respect HBU_CPU_ONLY setting
    • Emscripten
      • avoid needless switchFullScreen call
      • load RenderSystem settings from ogre.cfg
      • Fixes issue preventing use of latest emscripten versions (#1698)
    • Docs
      • make sure per-component docs are correctly picked up by doxygen
      • manual - bring hardware buffer section up to date
      • merge cpp and manual docs of VertexData
      • RTSS - add note about automatic shader re-generation
    • Samples
      • ImGui - fix "NewFrameSanityChecks(): Assertion" again
      • merge GLSL150 and GLSLES shaders that all were GLSL100
      • PBS - use OgreUnifiedShader to make it HLSL compatible
      • redeclare Cg shaders as HLSL
      • SdkSample - use unique_ptr to manage mControls
    • Tests: allow RTSS to pass TextureShadowsTransparentCaster VTest
    • Tools: XMLConverter - createOrRetrieve Material

    Source code(tar.gz)
    Source code(zip)
  • v1.12.8(Jul 26, 2020)

    • Main
      • update ShadowTextureConfig with actually chosen texture format
      • add RSC_TEXTURE_2D_ARRAY and fix array texture detection/ handling
      • add OgreUnifiedShader.h and unify ShadowVolume shaders
      • HighLevelGpuProgram - correctly resolve #include in #include
      • pass native shader version to shaders as e.g. OGRE_HLSL=4
      • ShadowRenderer - improve default caster material for PF_DEPTH use
      • ShadowRenderer - handle dynamically changing RTSS caster materials
      • ASTCCodec - fix typo in validating blockDims
      • deprecate shadow_receiver_*_program_ref
      • document the current lighting and material model
      • fix RENDER_QUEUE_MAX being treated as RENDER_QUEUE_COUNT
      • HardwareBuffer - guard lock usage with runtime asserts
      • MaterialSerializer - escape special chars in material attributes
      • Material - turn isManual notice into warning
      • Pass - hard deprecate setShadow*Program
      • unify and deprecate RenderSystem::_createRenderWindows
      • unify RenderSystem::_createRenderWindow checks & log output
    • RTSS
      • include OgreUnifiedShader.h unconditionally
      • always write GLSL types - will be handled by UnifiedShader defines
      • HLSL - support Shadow & Array samplers
      • PSSM - slightly refactor shader invocation
      • PSSM - use 4 taps for HW PCF too, configurable split count
      • TextureAtlas - GLSLES compatibility
      • unify ShaderLib as GLSL and improve OgreUnifiedShader.h
      • use #include based dependency resolution for GLSLES as well
    • Bites: respect selected monitor, when creating SDL window
    • Overlay: use cmake to download imgui instead of git submodule
    • SWIG: add read access to elements of Matrix4 (#1608)
    • DotSceneLoader: appease unique_ptr destructor when building w/o Terrain
    • Tools: simplify argument parsing & use logError for error reporting
    • Python
      • allow using buffer types instead of raw pointers
      • allow using sequences instead of Vector and ColourValaue
    • D3D11 & D3D9
      • use sane fallback if no "target" is set
      • use sane fallback format for PF_DEPTH*
    • D3D11
      • fix HRESULT formatting in exception description
      • fix wrong d3dcompiler version, when compiled with MinGW 9.3
      • introduce OGRE_CHECK_DX_ERROR macro to reduce boilerplate code
      • PF_DEPTH texture support
      • reversed-depth fixes
    • Docs
      • add citation for Terrain LOD algorithm
      • disable inlining inherited members
      • fix Pass references in ACT_SURFACE_ALPHA_REJECTION_VALUE docstring
      • fix warnings uncovered by doxygen v1.8.17
      • hide friend compounds
      • hide ogre internal defines from function signatures
      • Manual - MeshUpgrades does LOD, not XMLConverter
      • move ComPtr to D3D11 module
      • specify unit of "rotate" in material scripts
      • use named member groups to improve readability
    • Emscripten
      • implement graceful degradation from WebGL2 to WebGL1
      • CMake: precompiled headers do not work on emscripten
    • GL*: use sane fallback format for PF_DEPTH*
    • GLES2
      • enable PF_DEPTH16 with WebGL2
      • ignore GL_OES_vertex_array_object on emscripten
    • GLSupport
      • make __VERSION__ available in preprocessor
      • CPreprocessor: forbid numerical defines
    • Samples
      • Browser - do not add Trays UI to Unit Tests
      • clean up Bumpmapping sample
      • Csharp - add Windows.Forms integration sample
      • Emscripten - add PSSM/shadow_caster material
      • LightShafts - port from Cg to OgreUnifiedShader
      • request PF_DEPTH for shadow mapping, where possible
      • ShaderSystem - fix LayeredBlending controls
    • Tests: clean up TextureShadowsTransparentCaster VTest

    Source code(tar.gz)
    Source code(zip)
  • v1.12.7(Jun 12, 2020)

    • Main
      • PixelCountLodStrategy - fix wrong estimation of boundingArea
      • respect element count for ACT_FOG_COLOUR
      • ScriptTranslator - revert to legacy "alpha" keyword translation
      • allow constructing Box from TRect
      • provide some builtin defines for shaders
      • BillboardSet - clean up setTextureCoords API
      • Compositor - avoid needless Texture lookups by name
      • convert SkyRenderer to SceneManager::Listener
      • split SkyRenderer into Plane, Box and Dome classes
      • correctly return getDefaultParameters by const reference
      • InstanceBatchVTF - assert the correct texture format
      • Light - clarify shadowFarDistance vs. shadowFarClipDistance
      • ManualObject - inline hot methods to speed up dynamic creation
      • ManualObject - slightly clean up API
      • Pose - add mutable vertex access for offline tools
      • Root::loadPlugins - log Exception as error
      • ShadowCaster - de-virtualise hasEdgeList
      • slightly clean-up MeshLod code
      • ImageCodec - fix missing include
      • Only include <sys/sysctl.h> for iOS
      • VertexElementType - deprecate VET_COLOUR*
      • RenderSystem - deprecate getColourVertexElementType
      • add deprecation message to OgreIteratorWrappers.h
      • Camera - add missing deprecation markers
      • deprecate remaining texture_alias functions
      • SceneNode - deprecate some bounding box related functions
      • Light - _deriveShadowFarClipDistance deprecate Camera* param
      • add OGRE_IGNORE_DEPRECATED macros to allow using deprecated API
      • add Renderable::DEFAULT_PRIORITY for use instead of the define
    • CMake
      • clean-up swig lookup & add quiet flag for optional dependencies
      • Fix OSX platform libs
      • Use the right variable to determine if Qt was found
    • RTSS
      • Fog - drop redundant computations and simplify code
      • PSSM3 shadows - correctly handle sampling behind far plane
      • PSSM3 shadows - add debug mode, visualizing the shadow splits
    • Overlay
      • ImGui - drop D3D9 colour conversion, by using correct VET
      • ImGuiOverlay - update API to avoid NewFrame/ EndFrame mismatch
      • make OverlaySystem a Singleton
      • OverlayContainer - deprecate getChildIterator
    • Terrain
      • avoid needless Texture lookups by name
      • CompositeMap - fix ortho window size
      • enable vertex compression with GLSL
      • fix specular lighting computation with GLSL
      • GLSL - fix construction of the TBN matrix
      • ShaderHelper - fix and simplify lighting calculation
      • simplify Composite-Map Scene
      • use Rect::intersect where applicable
    • Tools
      • XMLConverter & MeshUpgrader add -byte option to use ubyte4_norm
      • XMLConverter - use VET_COLOUR resolution in OgreMain
      • XMLSerializer - respect colour channel order at exporting to XML
    • SWIG
      • drop deprecated IteratorWrapper instances
      • flatnested is only needed with python
      • wrap PixelCountLodStrategy
    • RenderSystem:
      • use default destroyVertexDeclarationImpl everywhere
    • D3D11
      • clear shader reflection data to fix reloading
      • D3D11HLSLProgram - remove unused and broken setShaderMacros
      • port to Sampler object. Enables caching of ID3D11SamplerState
    • Metal: backport to Ogre 1.12 from ogre-next v2-1
    • Docs
      • Frustum - remove reference to non-existing method
      • improve doxygen module association of Main
      • port meshlod tutorial from wiki
      • Tutorial3 - mention the composite map explicitly
      • PCZSceneManager - convert documentation to proper Doxygen
    • Samples
      • Browser - only refresh carousel geometry when needed
      • PBR - Added example how to use filament shaders
      • ImGui - avoid unmatched NewFrame if Window becomes inactive
      • ImGui - drop mControls from input chain. It is not created yet
      • MeshLOD - the displayed value is the pixel count, not distance
      • port CSM Shadows Sample
      • resurrect PCZTestApp and convert it to SdkSample
      • Shadows - fix crash due to accessing NULL mCameraMan
      • Terrain - drop D3D11 workaround for vertex compression
      • Triplanar Texturing - fix reference to deleted textures

    Note: imgui is not included - workaround

    Source code(tar.gz)
    Source code(zip)
  • v1.12.6(Apr 25, 2020)

    • Main
      • allow overriding PluginFolder with OGRE_PLUGIN_DIR env variable
      • make ResourceHandle size_t to avoid using 64bit atomics on 32bit
      • deinline non performance-critical methods to improve compile speed
      • EmbeddedZipArchiveFactory - prevent leaking Archives
      • GpuSharedParameters - Fixed param offset calculation
      • Fix build on FreeBSD.
      • add riscv64 as 64bit architecture
      • Skeleton - do import in prepare() to allow background loading
      • Texture - allow different PixelFormat for different cubemap faces
      • Texture - allow generally reinterpreting luminance as alpha
      • provide default implementations for ResourceLoadingListener
      • RenderSystem - fix FunctionInvocation leak
      • RenderSystem - require implementation of setColourBlendState
      • RenderSystem - use Ogre::Rect to represent scissor & viewport rect
      • ScriptTranslator - flag invalid pixelformats
      • ShadowRenderer - forward visibility flags (#1511)
      • Android: APKFileSystemArchive - properly set stream name to filename
      • Fixes compilation error C2338 when building with double precision (#1505)
      • improve wording of old mesh format warning
      • MeshManager - silence warnings in MeshBuildParams initialization
      • RenderSystem - hard-deprecate non-atomic _setDepthBufferParams
      • Texture - deprecate treatLuminanceAsAlpha
      • deprecate ParticleIterator
      • deprecate Skeleton::LinkedSkeletonAnimSourceIterator
      • ResourceGroupManager - deprecate getResourceManagerIterator
      • factor out Math::lookRotation
      • factor out StencilState struct & use it to simplify code
      • move findShadowCastersForLight to ShadowRenderer
      • move RenderSystemCapabilies logging to Root
      • Node & SceneNode - define private & use protected API
      • Resource - define private & use protected API
      • SceneManager - factor out resolveShadowTexture
      • refactor Codec API
      • unify RenderSystem::reinitialise
      • Zip - replace deprecated std::bind2nd with a lambda
    • RTSS
      • log source material name if shader compilation fails
      • PSSM - fix ambient passes receiving shadows
      • Transform - disable instancing on GLES2 devices
    • Bites
      • add Qt implementation of ApplicationContext
      • fix discarded mouse motion events on OSX
      • OSXConfigDialog - use dynamic config options list
      • OSX - scale input according to content scaling factor
    • CMake
      • Fix definition of OGRE_PLUGIN_DIR in OGREConfig.cmake on Windows
      • Dependencies - switch to stable zzip release
      • Replace FindSDL2.cmake by sdl2-config.cmake (#1530)
      • drop extra win libs with SDL2 linking
      • drop remains of OGRE_SDK_BUILD
      • iOS - fix warnings, resources, instructions
      • OSX - clean up framework linking
      • OSX - fix linking against the Ogre Frameworks
      • silence SWIG warnings with recent cmake
      • slightly clean up build option handling
    • Docs:
      • clarify Image::getSize and HardwarePixelBuffer::lock
      • doxygen - fixed remaining issues or added workarounds
      • move config file description to setup tutorial
      • update links on mainpage and use local licensebutton copy
      • Add vcpkg installation instructions
      • FileSystemLayer - fix locations in documentation
    • DotSceneLoader - fix compilation w/o Terrain, fix crash on parse error
    • SWIG
      • enable ResourceLoadingListener
      • Overlay - make createOverlayElement actually useful
      • extend Matrix3, Matrix4 and Affine3 by non member operator overloads
    • Terrain
      • ShaderHelper - simplify generateVertexProgramSource
      • TerrainMaterialGenerator - deprecate getDescription
    • D3D*: use common _beginFrame
    • GL*
      • HardwarePixelBuffer - drop unused mFace member
      • simplify scissor test handling
    • GL3Plus:
      • improve OSX shader hot-patching
      • fix "WARNING: Could not find vertex shader attribute ..."
    • GL
      • add ConfigOption to disable FFP
    • GLES2
      • iOS - suppress attribute warnings
    • GLSupport
      • EGL - fix currentGLContext support
      • OSX - correctly set Window visible to receive updates
      • added macro recursion feature to GLSLPreprocessor
    • Samples
      • simplify directory structure and build
      • simplify Sample info handling
      • unify SdkSample and VisualTest API in Sample
      • Browser - add OGREDEPS to RPATH on OSX
      • Browser - disentangle main and android_main
      • Browser - fix superficial link on OSX
      • Browser - move iOS specific parts to SampleBrowser_iOS
      • BSP - fix accessing CameraMan before it is created
      • correctly mark GLSL300ES shaders as such
      • drop unused Cocoa NIB files
      • LightShafts - multiply out alpha, as we use additive blending
      • LightShafts - use standard depth texture & spotlight params
      • OSX - correctly set rpath for browser
      • Terrain - replace proprietary nvidia textures by cc0textures
    • XMLConverter
      • correctly warn about dropped flags
      • fix unitialised colourElementType
      • handle meshes with bad material references
    • CI: enable Qt in SDK build and switch to relwithdebinfo

    Note: imgui is not included - workaround

    Source code(tar.gz)
    Source code(zip)
  • v1.12.5(Feb 16, 2020)

    Note: imgui is not included - workaround

    • Main
      • Box - introduce getSize & getOrigin convenience functions
      • deprecate Codec::dataType()
      • deprecate HardwareUniformBuffer methods
      • deprecate multiple map iterator wrapper accessors
      • deprecate Renderable::RenderSystemData
      • deprecate shadow_caster_*_program_ref for shadow_caster_material
      • deprecate texture_alias in favor of script variables
      • deprecate RSC_VERTEX_PROGRAM & RSC_FRAGMENT_PROGRAM
      • make RSC_ATOMIC_COUNTERS an alias for RSC_READ_WRITE_BUFFERS
      • StringConverter - deprecate converting ColourBufferType
      • Entity - replace @copydoc comments by explicit override annotation
      • Frustum - introduce Corners typedef for Vector3[8]
      • GpuProgram - correctly do parameter creation in postLoadImpl
      • GpuProgramParameters - parse index instead of using dummy entries
      • GpuProgramParams - avoid dirty flag on download & unify error msgs
      • GpuProgram - skip loadImpl and postLoadImpl on compile error
      • HardwarePixelBuffer::blit - rewrite with blitToMemory
      • HighLevelGpuProgram - fix line numbers when handling #include
      • HW BufferManager - provide default impl for non essential buffers
      • InstanceBatchShader - make performance warning actually a warning
      • merge HW Uniform and Counter Buffers
      • refactor RenderSystemCapabilities logging
      • ScriptTranslator - flag invalid properties inside shared_params
      • ScriptTranslator - universally use Error::getDescription
      • ShadowCaster - deprecate getShadowVolumeRenderableIterator
      • ShadowRenderer - make sure render system specific sampler is used
      • StaticGeometry - deprecate Iterator based API
      • Texture - assert that we are not loading an empty image
      • Fixed possible crash in the addImpl() method of the ResourceManager class
      • compatibility with musl libc
    • CMake
      • request legacy GL discovery mode
      • samples should be only installed when they are also built
      • deprecate the HLMS component
      • Android - only derive activity label if EXTRA_ACTIVITIES exist
      • use standard (cmake 3.16+) PCH paths if possible
    • Bindings:
      • Added overloaded addition, subtraction, multiplication and division.
      • Added template for ConfigOptionMap
      • Changed Swig SharedPtr to Ogre SharedPtr.
      • CSharp: compile C# dll instead of installing source files
      • Fixed memory management for SceneManager::createRayQuery, added RayTestResult as a SWIG type.
      • Void Pointer and casting of MovableObject (#1413)
      • SWIG: allow building Overlay bindings without imgui
      • Java: suppress new warnings in build
    • RTSS
      • allow InTexcoord parameters of arbitrary type
      • correctly reset default shadow receiver material
      • DualQuaternionSkinning - fix interplay with projective texturing
      • fix bug with single pass parallax mapping & adapt sample
      • fix vertex output compacting
      • GBuffer - change TL_DEPTH_NORMAL to TL_NORMAL_VIEWDEPTH
      • GL - implement SPC_POSITION_PROJECTIVE_SPACE FS input
      • GLSL - legacy GLSL should be only use when targeting <= GLSL120
      • GLSL - use #include instead of shader attachment
      • GLSL Writer - get rid of wrong and unneeded cast
      • implement GBuffer output SubRenderState
      • implement hardware instancing support
      • implement parallax mapping and use it in respective sample
      • NormalMapLighting - do not transform normal if there are no lights
      • Program - create entry point in constructor
      • PSSM3 - fix scalar on GLSL swizzling which requires GLSL420
      • ScriptTranslator - log error when encountering unknown parameter
      • TextureAtlas - drop #extension as it does not work with #include
    • Terrain: fix wrong light direction of composite map
    • GLSupport
      • drop unused GLSLProgramCommon::isSkeletalAnimationIncluded
      • GLSLProgramManagerCommon - drop needless GL type indirection
      • GLSLProgramManagerCommon - drop unused shared param parsing
    • GL*
      • further unify GLSLProgramManagerCommon
      • further unify GLSLShaderCommon
      • allow matrix types in texcoord semantic
      • GLSLProgram - store member shaders as array in GLSLProgramCommon
      • GLSLShaderCommon - drop the loadFromSource -> compile indirection
    • D3D11/ D3D9/ Cg: set entry point to "main" by default
    • D3D11
      • prevent DefaultHardwareVertex/Index/UniformBuffer creation
      • VertexDeclaration - be specific which semantic index is missing
    • GL3Plus/ GLES2
      • fix loading monolithic programs from microcode cache
      • attach uniform blocks to shared params for CPU <> GPU sync
      • factor out new linkSeparable() API for SSO
    • GL3Plus
      • clean up blitFromTexture
      • clean up GLSLProgramManager::extractUniformsFromProgram
      • fix linking of spirv SSOs
      • fix RenderToVertexBuffer with monolithic shaders
      • HardwareBuffer::lock - use more appropriate error message
      • merge UBO and SSBO classes
      • SSO - expose uniform locations through param_indexed
      • TextureBuffer::download - fix crash when dest type differs
      • unify microcode read/ write like in GLES2
    • GL/GL3+:
      • deprecate the "attach" mechanism in favor of #include
      • enable hardware texture blit, verified working
    • GLES2: implement limited hardware texture blit w/o scaling
    • D3D9: do not spam unsupported HLSL targets & correct VTF format check
    • BSPSceneManager
      • fire RenderSingleObject, so RTSS passes are updated
      • make BspLevel Renderable to use standard rendering path
    • Tools: MeshUpgrader - allow two SubMeshes reference the same Material
    • Docs
      • Compositor - document quad_normals pass attribute
      • fixed several doxygen errors
      • Manual - improve formatting of "Parameter specification"
      • Material - document the interplay of TUS and Sampler
      • Resource Management - include data retrieval in diagram
      • Tutorials - update deferred shading resource links
      • update regarding shadow_caster_material
    • Samples
      • Compositor - HDR merge GLSL and GLSLES shaders
      • Deferred Shading - merge GLSL and GLSLES shaders
      • Deferred Shading - use HLSL instead of Cg for D3D11 compat
      • Deferred - SSAO use standard instead of custom data sources
      • drop white.bmp that was only used as a placeholder
      • fixup for wrong matrix construction in last commit
      • GLSL - fix several errors discovered by strict SSO checking
      • Instancing - fix shadow casting and matrix types with GLSL
      • Instancing - user better lighting setup
      • Instancing - use RNG from std and make output consistent
      • Instancing - use RTSS for accurate shader based technique
      • ParticleGS - use point sprites with GLSL
      • port DeferredShading to RTSS
      • Shadows - convert to the "standard" PSSM/shadow_caster material
      • Shadows - simplify setup by properly using integrated shadows
      • SkeletalAnimation - set hardware skinning parameters via script
      • SSAO - fix RTSS material initialisation
      • SSAO - port to gbuffer RTSS stage
      • BSP - replace chiopteraDM by OpenArena oa_rpg3dm2
      • BSP - drop quakemap.cfg indirection for Android compatibility
      • AtomicCounters - finish the sample and drop obsolete code
    • Tests
      • convert ImageCombine PlayPen to Unit test
      • fix additive offset mapping test
      • test resource loading listener discarding only element in group
      • VTests: PlayPen_BlitSubTextures - use hardware blit path
    Source code(tar.gz)
    Source code(zip)
  • v1.12.4(Dec 23, 2019)

    Note: imgui is not included - workaround

    • Main
      • Compile Remotery.c as cpp-file
      • Fixed wrong material name in ManualObjectSection
      • InstanceBatch: Initialize frame number in constructor.
      • Revert "OgreResourceBackgroundQueue: disable when OGRE_THREAD_SUPPORT == 3"
      • remaining fixes for OGRE_CONFIG_DOUBLE
      • add converting constructors to Matrix4 and Affine3 + Test
      • AutoParamDataSource - use Vector4f, when float precision is enough
      • Camera - add #ifdef NODELESS_POSITIONING
      • Camera - simplify with nodeless positioning enabled
      • deprecate AtomicScalar
      • deprecate OgreVector2.h, OgreVector3.h and OgreVector4.h
      • fixed inability to properly parse 'import "longQuotedFilename"'
      • further reorder fields to reduce padding
      • GpuProgram - add safePrepare to account for throwing overloads
      • GpuProgram - move reading from file to prepare
      • GpuProgramParams - use typed overloads for Vector4 float & double
      • Lexer - do not repeat the filename in each ScriptToken
      • Light - add #ifdef NODELESS_POSITIONING
      • make sure directional lights are always sorted in front
      • make TransfromBase compatible when T is not Real
      • merge HighLevelGpuProgram::loadHighLevel with GpuProgram::loadImpl
      • move CmdPreprocessorDefines to HighLevelGpuProgram
      • replace in memory spot_shadow_fade.png by on disk .dds file
      • Resource::calculateSize - use sizeof(*this)
      • SceneManager - move destroyShadowTextures to clearScene
      • ScriptCompiler - avoid vector of SharedPtr
      • ScriptCompiler - deprecate unused internal API
      • ScriptCompiler - throw error on invalid import statements
      • ScriptLexer - get rid of Ptr to vector antipattern
      • ScriptLexer - only record lexeme when type is not sufficient
      • ScriptParser - factor out unquoted function
      • ScriptTranslator - unify GpuProgram translation
      • ShadowRenderer - bind shadow texture to correct Pass with RTSS
      • ShadowRenderer - fix spot shadow fade with the RTSS
      • slightly refactor shadowrenderer
      • switch internal HighLevelGpuProgramFactory API to GpuProgram*
      • TextureManager - assert that total texture size is not zero
      • UnifiedHighLevelProgram - allow delegating to low-level programs
      • Node - make getLocalAxes more numerically stable
      • Matrix3 - make several functions inline for re-use and refactor
    • Bites
      • add keypad key support for Dear ImGui.
      • map Dear ImGui to SDL_TEXTINPUT for correct text character processing.
      • Move check for Xaw to Bites.
    • CMake
      • expose OGRE_NODELESS_POSITIONING
      • disable imgui, if it is not found out and add nodeless to summary
      • Make OGRE_BUILD_TESTS depend on Ogre Bites.
      • RTTS - drop separation between core and ext shaders
    • Overlays
      • imgui - correctly handle RGB > BGR conversion for D3D9
      • restore script loading hack to allow re-loading groups
    • RTSS
      • FFPLib - add missing FFP_Transform variant
      • fix linear skinning shaders and replace existing sample by them
      • HarwareSkinning - only include light calculations when needed
      • LinearSkinning - add missing normal transformation
      • make hardware skinning work with GLES3+
      • properly handle uniform arrays of non square matrices
      • Texturing - switch back to inspecting srcPass
      • Texturing - use ACT_TEXTURE_VIEWPROJ_MATRIX for projection matrix
      • use the RTSS to generate Hardware Skinning shadow caster shaders
      • use uint4 for BLENDINDICES for HLSL4 compatibility
    • D3D9/ D3D11: allow background shader compilation in prepare()
    • D3D11
      • HLSL - drop shared_ptr juggling and remove according hack in Main
      • make sure PF_RGB correctly falls back to PF_XRGB instead of RGBA
      • Switched ID3D11DeviceContext::ClearState and ID3D11DeviceContext::Flush as recommend by Microsoft.
    • D3D9: retain monitorIndex of the "Rendering Device" config option
    • GL*
      • delete background contexts before destroying the HBM
      • fix uploading sampler array uniforms
      • Non-square matrices are always row-major in Ogre with no conversion, so force off transposition.
    • GL
      • explicitly convert matrices to float for OGRE_CONFIG_DOUBLE
      • fix crash & error due to type mismatch
      • get rid of GLSLGpuProgram and consolidate GLSL code in GLSupport
    • GLSupport
      • add the 'externalGLControl' option to Cocoa render windows
      • factor out common GLWindow class
      • move background context registration to GLRenderSystemCommon
    • Docs: add background resource loading tutorial
      • Basic Tutorial 2 - use additive lighting
      • improve VTF section
      • manual - improve GPU Program documentation
      • Manual - slightly improve Shadows section
      • Manual: document GLSL non-square matrix translation behavior
      • RTSS - add hardware_skinning section
      • update License.md - added pugixml, dropped nedmalloc
    • Samples
      • add clarifying comment when using the ImGuiOverlay() in custom apps (#1333)
      • Do not build demo installer when SampleBrowser is disabled
      • BumpMapping - use HLSL instead of Cg
      • clean up Shadows sample
      • do not build imgui sample, if it is disabled
      • drop obsolete HadwareSkinning materials & shaders
      • enable Fresnel Sample for D3D11 by using HLSL instead of Cg
      • fix depth shadow caster for HLSL4
      • OffsetMapping - finalize cleanup and fix multilight setting
      • OffsetMapping - use HLSL instead of Cg and simplify material
      • Browser - improve UI layout on Mobile
    • Tests
      • PlayPen - port to nodeless positioning by using helper class
      • unify glow shaders
    Source code(tar.gz)
    Source code(zip)
  • v1.12.3(Nov 6, 2019)

    • Main
      • allow reading zip archives from unicode paths
      • Compositor - allow setting auto clear colour from script
      • deprecate QuadMaterialMap typedef
      • deprecate TEX_TYPE_2D_RECT
      • deprecate _writeRawConstant(size_t, Real, size_t count)
      • fix GpuParameters not being updated if preRender returns false
      • make reverse-Z a ConfigOption and check compatibility in GL3Plus
      • Pass - setPointSpritesEnabled. Check for RSC_POINT_SPRITES
      • properly handle MRT depth attachments
      • removed extra unlock, which caused assert failure. (#1273)
      • SkyRenderer - correctly apply orientation to SkyBox
      • TextureUnitState::setTextureName - do not reset the TextureType
      • Added support for 32 bit floating point depth buffer (#1290)
      • Provide copy and assign ctors where needed.
      • Fixed exit from Matrix3::SingularValueDecomposition when reaching max iteration count
    • CMake
      • add dotscene plugin and imgui support to feature summary
      • enable unicode path support on MSVC by default
    • Bites
      • ApplicationContext - implement destroying windows
      • Input - specify return value and add InputListenerChain
    • Overlay
      • allow injecting derived Overlay classes
      • merge ogre-imgui into Overlay & Bites
      • Implemented pixel ratio for HiDPI
    • RTSS
      • HLSL use SM4 sampling functions if available
      • PSSM3 - fix shader generation for depth textures with HLSL
      • PSSM3 - fix depth texture, no split with reversed depth with GLSL
    • Terrain
      • generate SM4 compatible shaders
      • fix shadows with reversed-z & depth textures
    • Docs
      • improve Compositor script documentation
      • fix a bunch of doxygen warnings
      • Install Linux docs in /usr/share/doc/OGRE
      • add reversed depth tutorial
    • GL*
      • drop unneeded calls to glReadBuffer
      • Texture - keep driver default parameters for initial upload to avoid stalls
    • GL3+
      • allow FBOs with depth and non-depth texture attachments
      • Reverse depth buffer implementation for OpenGL3+
      • fix leak when a program object is created but one already exists
    • GL3+/ GLES2: fix handling of PF_A8 textures & add test
    • D3D11 & GL3+: consider reversed-Z for texture compare & texture border
    • GL: remove some version checks - we globally require GL 1.5
    • GLSupport:
      • EGL - fix emscripten build
      • EGL - use the standard FSAA name on Emscripten & Android
      • GLSLPreprocessor: fixup #elif support + test
      • GLSLPreprocessor: use std::forward_list instead of ad-hoc solution
      • Android: export viewport scale through getViewPointToPixelScale
      • Android - query ANativeWindow instead of EGL for window size
    • D3D11
      • drop RSC_POINT_SPRITES, which is not supported
      • use precise depth format mappings that we have now
      • add reversed-Z support
    • D3D9 & D3D11: ps_2_x & vs_2_x are not HLSL profiles
    • Samples
      • add Imgui demo
      • introduce HLSL_SM4Support.hlsl to unify Cg/ HLSL4 shaders
      • clean up Example_Basic.{cg, hlsl} mess
      • Browser - make sure Trays are not tiny on Android
      • Context - use isCurrentSamplePaused to make code more readable
      • drop Sample::getRequiredRenderSystem
      • ShowUV - fix varying matching in GLSL shaders
      • SkyBox materials must not use normals - D3D11 is picky here
      • SSAO - merge Cg & HLSL post processing shaders
      • fix depth shadow caster for HLSL4
    • Tests:
      • make PlayPen_VertexTexture compatible with D3D11
      • fix MinGW build
      • PlayPen_DepthShadowMap - add normals to satisfy D3D11
    Source code(tar.gz)
    Source code(zip)
  • v1.12.2(Sep 15, 2019)

    • Main:
      • DefaultHardwareBufferManager - fix order of destruction
      • deprecate getMovableObjectFactoryIterator
      • deprecate RenderSystem::bindGpuProgramPassIterationParameters
      • deprecate SceneManager::getMovableObjectIterator
      • factor out internal _openFileStream method
      • Frustum - correct extent computation for customProjMatrix
      • remove logging from Exception constructor altogether
      • TRect - add operator==
      • use the idiomatic addElement().getSize() chaining for VertexDeclarations
    • CMake
      • disable precompiled headers on MinGW
      • export unicode paths option on MSVC
    • Csharp: install source files for easier consumption and fix build
    • D3D9: implement bindGpuProgramPassIterationParameters by general means
    • GLSupport
      • EGL - add HWgamma support
      • EGL - correctly handle windowMovedOrResized with parent win
      • implement the 'currentGLContext' parameter for cocoa windows on macOS
      • unify EGL/ GLX debug output
    • GL3+
      • support loading SPIRV shaders
      • update glcorearb.h to OpenGL 4.6
    • GL*
      • GLSL - some code simplification
      • GpuProgram - implement pass iteration params binding using mask
      • unify uniform block handling in GLSupport
    • Plugins
      • add DotSceneLoader plugin
      • STB image - update to latest upstream
    • XMLConverter
      • replace tinyxml by pugixml
      • simplify code
    • Samples
      • add volumetric light shafts sample
      • avoid SampleBrowser swallowing sample input events
      • Tutorials - Added CXX 11 as it does not build without it
    • Tests
      • fix gtest discovery when built locally
      • test Camera::setCustomProjectionMatrix
      • update gtest and build it like the rest of the deps
    • Docs
      • update dependencies and document cmake options
      • use aliases to annotate shader specific pass parameters
      • update "Binding vertex attributes" section
    Source code(tar.gz)
    Source code(zip)
An OpenGL 4.3 / C++ 11 rendering engine oriented towards animation

aer-engine About An OpenGL 4.3 / C++ 11 rendering engine oriented towards animation. Features: Custom animation model format, SKMA, with a Blender exp

Thibault Coppex 26 Jul 25, 2021
A Vulkan game engine with a focus on data oriented design

The Fling Engine aims to be a cross platform Vulkan game engine that will experiment with the following: Low-level engine systems such as render API a

Fling Engine 293 Jul 26, 2022
A faster drop-in replacement for giflib. It uses more RAM, but you get more speed.

GIFLIB-Turbo What is it? A faster drop-in replacement for GIFLIB Why did you write it? Starting in the late 80's, I was fascinated with computer graph

Larry Bank 27 Jun 9, 2022
DxWrapper is a .dll file designed to wrap DirectX files to fix compatibility issues in older games

DxWrapper Introduction DxWrapper is a .dll file designed to wrap DirectX files to fix compatibility issues in older games. This project is primarily t

Elisha Riedlinger 692 Aug 1, 2022
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 94 Jul 31, 2022
The flexible game engine.

The flexible game engine. Crown is a general purpose and data-driven game engine, written in orthodox C++ with a minimalistic and data-oriented design

Daniele Bartolini 1.6k Jul 30, 2022
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 33 Jul 28, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 52 Jul 31, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 163 Aug 9, 2022
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Storm Devs 637 Aug 6, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 7 Apr 20, 2022
An Unreal Engine 4 silent aim method, not usable on all games. Tested on Fortnite, Rogue Company, Bloodhunt, and Splitgate.

UE4-Silent-Aim An Unreal Engine 4 silent aim method, not usable on all games. Only tested on Fortnite, Rogue Company, Bloodhunt, and Splitgate. Done t

null 38 Aug 7, 2022
This is netvars, interfaces and class ids dump from Valve's Source2 Engine games

About this This is netvars, interfaces and class ids dump from Valve's Source2 Engine games: Artifact Classic Artifact Foundry Dota 2 Dota Underlords

Dmitry 9 May 24, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.7k Jul 31, 2022
Bounce is a 3D physics engine for games.

Bounce Welcome! Bounce is a 3D physics engine for games. Features Common Efficient data structures with no use of STL Fast memory allocators Built-in

Irlan Robson 70 Jul 26, 2022
Speedrun plugin for Source engine games.

Features Automatic demo recording Accurate session timing Speedrun timer with complex custom rule system Tools for segmented and tool-assisted speedru

Portal 2 Speedrunning 48 Jul 25, 2022
TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

TrenchBroom 1.2k Aug 1, 2022
Engine being created for homeworks in UPC Master's Degree in Advanced Programming for AAA Video Games.

Strawhat Engine Strawhat Engine is a game engine under construction that has model loading and camera movement features along with an editor. Reposito

I. Baran Surucu 12 May 18, 2022
Box2D is a 2D physics engine for games

Build Status Box2D Box2D is a 2D physics engine for games. Contributing Please do not submit pull requests with new features or core library changes.

Erin Catto 5.8k Aug 3, 2022