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.

Comments
  • 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
  • OpenGL3Plus multi-window rendering

    OpenGL3Plus multi-window rendering

    Hi guys, I seem to be having a problem with multi window rendering on OpenGL3Plus. This mostly looks like materials are not applied correctly to some items where for example textures will work on one window but not the other or some geometry is just black. I use render queue listeners to skip render groups depending on which viewport is currently being rendered. If I stop skipping invocations then everything renders perfectly but only on one window, the other one is blank. This is on Ogre 13.4.4 x64 Windows.

    This app was migrated from a 32bit app that used Ogre 1.12.9. It seemed fine on this version except on specific machines which I assume may just be incompatible shaders or something else unrelated.

    opened by FillipMatthew 23
  • 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
  • No normalmap after commit

    No normalmap after commit

    after this commit 3dc6462d64b910ca4dcfcd19f5d42bf5eddc5dbd My models exported from blender are without normal map, before this worked fine, shouldn't necessary some shader update ?

    archlinux x86_64 master branch

    incomplete 
    opened by Joilnen 17
  • 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
  • Drop Frustum::OrientationMode

    Drop Frustum::OrientationMode

    this option deals with viewport rotation for landscape/ portrait mode. However, the feature is implemented pre-projection and thus spills to user-code and touches multiple core classes.

    the same can be trivially achieved in_convertProjectionMatrix, like we already do with Vulkan: https://github.com/OGRECave/ogre/blob/36cdbea7478f39be7b164a5a3d4b86e7b97a21d1/RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp#L1240-L1241

    current implementation introduced in 962f3964f0631924881dfacb4c9412ec22984345

    opened by paroj 5
  • TestContext: particle/ RNG state is leaked between samples

    TestContext: particle/ RNG state is leaked between samples

    • only happens if a ParticleFX Test is loaded after an preceding Test
    • PointEmitter::_initParticle gives one of two possible sequences for random direction
    • number of Math::UnitRandom() calls is the same
    • number of rendered frames is the same
    opened by paroj 0
  • vertex attribute cosumer/ providers

    vertex attribute cosumer/ providers

    Some SRS stages might want to access the same vertex attribute, e.g. TEXCOORD0.

    Other SRS stages do provide it by different means, e.g. by computing it.

    Currently the consumers check whether somebody already provides it via probing for it with get:

    getOutputParameter(Parameter::SPC_TEXTURE_COORDINATE0, GCT_FLOAT2)
    

    If this fails, they fall back to a minimal pass-through in the vertex shader.

    However, this only works if the provider was executed before e.g. if FFP_LIGHTING cannot query for FFP_TEXTURING as the latter is only executed afterwards.

    Also, TEXCOORD0 may mean different things between SRS. E.g. TEXTURING may apply a texture matrix to TEXCOORD0 for the albedo layer. However, the LIGHTING would use TEXCOORD0 to read a specular map. Should we enforce that both are the same? Should we add more SPC to make them unique?

    • [ ] swap LIGHTING and TEXTURING order?
    • [ ] add a matching phase, where SRS may advertise what they provide/ want to consume?
    :file_folder: RTShaderSystem 
    opened by paroj 0
  • GLSLPreprocessor: may enter infinite recursion

    GLSLPreprocessor: may enter infinite recursion

    #define foo bar foo
    #define test foo
    test
    

    will infinitely try to expand test

    foo
    bar foo
    bar bar foo
    ...
    

    we track that test is expanded to avoid recursion into self, but above foo is causing it.

    opened by paroj 0
Releases(v13.5.3)
  • v13.5.3(Nov 24, 2022)

    • Main: range loop refactoring (#2668)
    • RTSS
      • check the result of std::find to prevent erasing 'end' iterator (#2676)
      • Instancing - ensure software skinning is off, when this is enabled
    • Terrain: TerrainTransform - do not crash if Vertex Compression is off
    • CMake
      • do not enable fp:fast by default on MSVC
      • drop checks for MSVC versions that we no longer support
    • D3D9: we must check num requested mips against MIP_UNLIMITED
    • Tests: use preprocessor defines instead of typeid
    Source code(tar.gz)
    Source code(zip)
  • v13.5.2(Nov 15, 2022)

    • Main:
      • don't fail when trying to assign too many array elements in a shader (#2670)
      • fix the build with VIEWPORT_ORIENTATIONMODE (#2665)
      • range loop refactoring (#2630)
      • slightly clean up MeshSerializerImpl
    • CMake: allow using latest SWIG
    • ParticleFX: TextureAnimatorAffector - fix init for recycled particles
    • GLES2: fix access to an iterator after its container has beed destroyed (#2672)
    • GL: relax an assert() to not trigger on legitimate cases (#2666)
    • GLSupport: merge GLSLProgramManagerCommon::validateParam
    • RTSS: fix texturing when CookTorrance is active
    • Terrain: correctly forward visibility and query flags
    Source code(tar.gz)
    Source code(zip)
  • v13.5.1(Nov 6, 2022)

    • Main
      • fix compilation for Real=double
      • RenderSystem - skip FFP texture settings when FFP is not supported
      • range loop refactoring
    • CMake
      • fix incomplete zlib update
      • only install samples.cfg, when installing the the samples
      • only reference sample resources, when we build the samples
    • RTSS
      • FFPTexturing - do not needlessly pass texture matrix
      • FFPTexturing - thoroughly validate tex coord settings
    • BSPSceneManager: Q3Shader - fix TEXGEN_ENVIRONMENT mapping
    • D3D11: improve error message for missing VertexElement
    • GL: match D3D9 on ENV_PLANAR behavior
    • Docs
      • improve cubic texture description in ogre script
      • improve env_map documentation
    Source code(tar.gz)
    Source code(zip)
  • v13.5.0(Oct 29, 2022)

    Highlights

    • Implement Automatic Instancing
    • Add support for GPU bone to world transform
    • Non shadow-casting lights and PSSM integration
    • Use Vulkan Memory Allocator

    What's Changed

    • Main
      • add option to use object space bones
      • AnimationState - use plain vector for BlendMask
      • AnimationTrack - add sanity assert for pose animation
      • DefaultDebugDrawer
        • fix scale being applied twice to axes
        • skip drawing root scene node
      • ETCCodec - fix crash when loading PKM files
      • fix LightAttenuationValue (#2569)
      • Image - make trivial getters inline
      • implement automatic SubMesh batching (SceneManager/ GpuProgram)
      • inject GlobalInstancingDeclaration in SceneManager instead of RS
      • InstanceBatchHW_VTF - range loop refactoring (#2612)
      • Instancing - do not override getNumWorldTransforms if not needed
      • make some error messages more specific
      • Math
        • assert that isNaN is potentially working
        • float is always sufficient to generate a random number
      • move OGRE_MAX_NUM_BONES to OgreConfig.h
      • Pass - hide _getBlendFlags
      • PixelBox - initialise all members
      • PixelFormat - fix wrong PF_ETC2_RGBA8 size calulations
      • PixelUtil - do not widen to size_t on return
      • RenderSystem - provide default dummy video modes
      • RibbonTrail - validate TrailLength
      • SceneManager - inline mWorldGeometryRenderQueue accessors
      • ShadowRenderer - do not create Materials that were never used
      • use diffuse alpha in DERIVED_AMBIENT_LIGHT_COLOUR
      • Zip - correctly forward filename to opened datastream
      • drop unused pieces of InstancedGeometry
      • get rid of internal SPFM_DELETE_T usages
      • correctly handle self-assignment for various classes
      • port compressed format loaders to new Codec API
      • add AbstractNode::getString convenience method
      • annotate code with override
      • range-for loop refactoring (#2545, #2546, #2547, #2549, #2577, #2583, #2594, #2605, #2608, #2617, #2623, #2627, #2572)
      • refactoring and some style fixing (#2580, #2543)
      • use make_shared with StringVector & FileInfoList
      • deprecate Image::getFileExtFromMagic
      • deprecate Math::calculateTangentSpaceVector
      • fully deprecate normalise_normals
      • call createMicrocode statically
      • BillboardChain - deprecate setDynamic in favour of setAutoUpdate
    • RTSS
      • add compatibility with automatic instancing
      • add flag for highp interpolation
      • add RenderState::getSubRenderState helper
      • always match VS to PS interface
      • CookTorrance
        • allow injecting UV coords
        • correct ambient and shadows
        • do not depend on PSSM for shadowFactor handling
        • use linear gamma & add PSSM_DEBUG
      • DualQuaternion - move more code to shader
      • fix transparency when using TVC_EMISSIVE
      • get rid of now trivial FFPRenderStateBuilder
      • GLSLES - force highp to avoid precision mismatch between VP/ FP
      • GLSLProgramWriter - fix UniformBlock indentation
      • HW Skinning
        • avoid passing ViewProjMatrix
        • take advantage of object space bone setting in main
        • unify implementations
        • improve parameter parsing
      • LayeredBlending - add string based blendMode & sourceModifier API
      • LinearSkinning - move more code to shader
      • make available SRS types more discoverable & unify documentation
      • NormalMap - move more computations to shaderlib
      • NormalMap - we must normalise tangents & normals in VS
      • per-pixel lighting - fix using PSSM3 with non casting lights
      • RenderState - add helper to add template SRS by type
      • replace FFPLib_Common by BuiltinFunctionAtom
      • simplify SGX_ApplyShadowFactor_Diffuse
      • deprecate SGScriptTranslator::getString
      • drop superfluous addError calls when parsing scripts
    • Terrain
      • factor out TerrainSurface.glsl
      • fix flipped eyeDir vector
      • fix precision issues on GLES2
      • make sure lod1RenderState gets params with FFP
      • MaterialGenerator - deprecate layerDecl.elements
      • use updateParams flow for LOD1 technique
      • we must normalise the incoming normal for constructing TBN
    • CI
      • update NDK to latest LTS
      • update to macos-11
      • update windows build to vs19
      • PIP: enable Vulkan on Windows & Linux
    • CMake: Install pkgconfig file with mingw toolchain
    • Java: disable more warnings for SWIG
    • Overlay: BorderPanel - size computations should always be in float
    • GLES2: EAGL - dynamically use GLES3 if possible
    • GL*: factor out applyGlobalInstancingDeclaration
    • GLSupport: allow using pre-GLVND setups again
    • GLSLang
      • fix static linking against the plugin
      • ignore warnings in upstream headers
    • ParticleFX: hide all symbols
    • PCZSceneManager - fix clearScene by using parent impl
    • Vulkan
      • add PF_R5G6B5 support
      • avoid VK_FORMAT_D32_SFLOAT_S8_UINT
      • correctly handle PF_DEPTH24_STENCIL8
      • do not pull vulkan headers into plugin
      • port to Vulkan Memory Allocator
      • use float for depth values as others
    • STBICodec - port to new Codec API
    • EXRCodec: port to new Codec API
    • FreeImageCodec: port to new Codec API
    • Docs
      • add DotScene to Manual
      • add rationale for OGRE_MAX_NUM_BONES
      • fix some typos
      • high level programs - refactor to include Vulkan GLSL usage
      • improve AutoConstantType documentation/ formatting
      • improve Instancing documentation
      • Renderable - document new getBonesUseObjectSpace behaviour
      • Tutorials - simplify the boostrap code
      • use the new SRS_ RTSS constants in sample code
    • Samples
      • add automatic HW Instancing
      • Browser - globally enable object space bones for testing
      • Compositor DoF - fix shader for GLES2
      • Context - use initApp on iOS too
      • fix building sample browser on OSX
      • fix too close near plane
      • InstancedViewport - fix vertex attributes to work with Vulkan
      • Instancing - slight cleanup of technique handling
      • RTSS - correct specular for cook torrance & point light tweaks
      • RTSS - replace vertex lighting by cook torrance
      • SegmentedLights - params are already in world space
      • ShaderSystem - fix layered blending demo
      • Terrain - disable anisotropic filtering on Android
      • hardcode CFBundleVersion for iOS in Info.plist
    • Tests
      • add KTX loading test
      • add Light AnimableValue test
      • also test PKM and ASTC loading
      • Context - copy core media on iOS as well
      • move PVR file loading to unit tests and run them on Linux
      • PlayPen - disable anisotropic filtering
      • TestContext - replace ad-hoc parsing of Video-Mode

    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.4.4(Aug 7, 2022)

    • Main
      • some code cleanup (#2540, #2539)
      • clang-tidy to range-based for with some manual naming fixup
      • minor performance improvements
      • use make_shared where possible
    • GLSLang
      • correctly release delegate on destruction
      • fix linking and allow using Vulkan SDK on Ubuntu 22.04
    • Vulkan
      • correctly use getImageAspect everywhere
      • fix texAccessFlags in prepareForDownload
    • Docs: add Bullet component to Notes
    Source code(tar.gz)
    Source code(zip)
  • 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)
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 29 Nov 22, 2022
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 316 Jan 7, 2023
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 783 Jan 1, 2023
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 173 Jan 2, 2023
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.7k Dec 28, 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 48 Dec 29, 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 61 Dec 14, 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 293 Jan 1, 2023
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 693 Dec 29, 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 8 Oct 15, 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 50 Dec 25, 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 11 Nov 20, 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.9k Jan 8, 2023
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 72 Aug 3, 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 65 Jan 6, 2023
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.3k Jan 8, 2023
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 6.1k Jan 9, 2023