All Versions
10
Latest Version
Avg Release Cycle
57 days
Latest Release
1313 days ago

Changelog History

  • v1.12.9 Changes

    September 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

  • v1.12.8 Changes

    July 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

  • v1.12.7 Changes

    June 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

  • v1.12.6 Changes

    April 25, 2020
    • Main

      • allow overriding PluginFolder with OGRE_PLUGIN_DIR env variable
      • make ResourceHandle size_t to avoid using 64bit atomics on 32bit
      • deinline non performance-critical methods to improve compile speed
      • EmbeddedZipArchiveFactory - prevent leaking Archives
      • GpuSharedParameters - Fixed param offset calculation
      • Fix build on FreeBSD.
      • add riscv64 as 64bit architecture
      • Skeleton - do import in prepare() to allow background loading
      • Texture - allow different PixelFormat for different cubemap faces
      • Texture - allow generally reinterpreting luminance as alpha
      • provide default implementations for ResourceLoadingListener
      • RenderSystem - fix FunctionInvocation leak
      • RenderSystem - require implementation of setColourBlendState
      • RenderSystem - use Ogre::Rect to represent scissor & viewport rect
      • ScriptTranslator - flag invalid pixelformats
      • ShadowRenderer - forward visibility flags (#1511)
      • Android: APKFileSystemArchive - properly set stream name to filename
      • Fixes compilation error C2338 when building with double precision (#1505)
      • improve wording of old mesh format warning
      • MeshManager - silence warnings in MeshBuildParams initialization
      • RenderSystem - hard-deprecate non-atomic _setDepthBufferParams
      • Texture - deprecate treatLuminanceAsAlpha
      • deprecate ParticleIterator
      • deprecate Skeleton::LinkedSkeletonAnimSourceIterator
      • ResourceGroupManager - deprecate getResourceManagerIterator
      • factor out Math::lookRotation
      • factor out StencilState struct & use it to simplify code
      • move findShadowCastersForLight to ShadowRenderer
      • move RenderSystemCapabilies logging to Root
      • Node & SceneNode - define private & use protected API
      • Resource - define private & use protected API
      • SceneManager - factor out resolveShadowTexture
      • refactor Codec API
      • unify RenderSystem::reinitialise
      • Zip - replace deprecated std::bind2nd with a lambda
    • RTSS

      • log source material name if shader compilation fails
      • PSSM - fix ambient passes receiving shadows
      • Transform - disable instancing on GLES2 devices
    • Bites

      • add Qt implementation of ApplicationContext
      • fix discarded mouse motion events on OSX
      • OSXConfigDialog - use dynamic config options list
      • OSX - scale input according to content scaling factor
    • CMake

      • Fix definition of OGRE_PLUGIN_DIR in OGREConfig.cmake on Windows
      • Dependencies - switch to stable zzip release
      • Replace FindSDL2.cmake by sdl2-config.cmake (#1530)
      • drop extra win libs with SDL2 linking
      • drop remains of OGRE_SDK_BUILD
      • iOS - fix warnings, resources, instructions
      • OSX - clean up framework linking
      • OSX - fix linking against the Ogre Frameworks
      • silence SWIG warnings with recent cmake
      • slightly clean up build option handling
    • 📄 Docs:

      • clarify Image::getSize and HardwarePixelBuffer::lock
      • doxygen - fixed remaining issues or added workarounds
      • move config file description to setup tutorial
      • update links on mainpage and use local licensebutton copy
      • Add vcpkg installation instructions
      • FileSystemLayer - fix locations in documentation
    • 📜 DotSceneLoader - fix compilation w/o Terrain, fix crash on parse error

    • SWIG

      • enable ResourceLoadingListener
      • Overlay - make createOverlayElement actually useful
      • extend Matrix3, Matrix4 and Affine3 by non member operator overloads
    • Terrain

      • ShaderHelper - simplify generateVertexProgramSource
      • TerrainMaterialGenerator - deprecate getDescription
    • D3D*: use common _beginFrame

    • GL*

      • HardwarePixelBuffer - drop unused mFace member
      • simplify scissor test handling
    • GL3Plus:

      • improve OSX shader hot-patching
      • fix "WARNING: Could not find vertex shader attribute ..."
    • GL

      • add ConfigOption to disable FFP
    • GLES2

      • iOS - suppress attribute warnings
    • 👍 GLSupport

      • EGL - fix currentGLContext support
      • OSX - correctly set Window visible to receive updates
      • added macro recursion feature to GLSLPreprocessor
    • Samples

      • simplify directory structure and build
      • simplify Sample info handling
      • unify SdkSample and VisualTest API in Sample
      • Browser - add OGREDEPS to RPATH on OSX
      • Browser - disentangle main and android_main
      • Browser - fix superficial link on OSX
      • Browser - move iOS specific parts to SampleBrowser_iOS
      • BSP - fix accessing CameraMan before it is created
      • correctly mark GLSL300ES shaders as such
      • drop unused Cocoa NIB files
      • LightShafts - multiply out alpha, as we use additive blending
      • LightShafts - use standard depth texture & spotlight params
      • OSX - correctly set rpath for browser
      • Terrain - replace proprietary nvidia textures by cc0textures
    • XMLConverter

      • correctly warn about dropped flags
      • fix unitialised colourElementType
      • handle meshes with bad material references
    • 🏗 CI: enable Qt in SDK build and switch to relwithdebinfo

    Note: imgui is not included - workaround

  • v1.12.5 Changes

    February 16, 2020

    Note: imgui is not included - workaround

    • Main

      • Box - introduce getSize & getOrigin convenience functions
      • deprecate Codec::dataType()
      • deprecate HardwareUniformBuffer methods
      • deprecate multiple map iterator wrapper accessors
      • deprecate Renderable::RenderSystemData
      • deprecate shadow_caster_*_program_ref for shadow_caster_material
      • deprecate texture_alias in favor of script variables
      • deprecate RSC_VERTEX_PROGRAM & RSC_FRAGMENT_PROGRAM
      • make RSC_ATOMIC_COUNTERS an alias for RSC_READ_WRITE_BUFFERS
      • StringConverter - deprecate converting ColourBufferType
      • Entity - replace @copydoc comments by explicit override annotation
      • Frustum - introduce Corners typedef for Vector3[8]
      • GpuProgram - correctly do parameter creation in postLoadImpl
      • GpuProgramParameters - parse index instead of using dummy entries
      • GpuProgramParams - avoid dirty flag on download & unify error msgs
      • GpuProgram - skip loadImpl and postLoadImpl on compile error
      • HardwarePixelBuffer::blit - rewrite with blitToMemory
      • HighLevelGpuProgram - fix line numbers when handling #include
      • HW BufferManager - provide default impl for non essential buffers
      • InstanceBatchShader - make performance warning actually a warning
      • merge HW Uniform and Counter Buffers
      • refactor RenderSystemCapabilities logging
      • ScriptTranslator - flag invalid properties inside shared_params
      • ScriptTranslator - universally use Error::getDescription
      • ShadowCaster - deprecate getShadowVolumeRenderableIterator
      • ShadowRenderer - make sure render system specific sampler is used
      • StaticGeometry - deprecate Iterator based API
      • Texture - assert that we are not loading an empty image
      • Fixed possible crash in the addImpl() method of the ResourceManager class
      • compatibility with musl libc
    • CMake

      • request legacy GL discovery mode
      • samples should be only installed when they are also built
      • deprecate the HLMS component
      • Android - only derive activity label if EXTRA_ACTIVITIES exist
      • use standard (cmake 3.16+) PCH paths if possible
    • Bindings:

      • Added overloaded addition, subtraction, multiplication and division.
      • Added template for ConfigOptionMap
      • Changed Swig SharedPtr to Ogre SharedPtr.
      • CSharp: compile C# dll instead of installing source files
      • Fixed memory management for SceneManager::createRayQuery, added RayTestResult as a SWIG type.
      • Void Pointer and casting of MovableObject (#1413)
      • SWIG: allow building Overlay bindings without imgui
      • Java: suppress new warnings in build
    • RTSS

      • allow InTexcoord parameters of arbitrary type
      • correctly reset default shadow receiver material
      • DualQuaternionSkinning - fix interplay with projective texturing
      • fix bug with single pass parallax mapping & adapt sample
      • fix vertex output compacting
      • GBuffer - change TL_DEPTH_NORMAL to TL_NORMAL_VIEWDEPTH
      • GL - implement SPC_POSITION_PROJECTIVE_SPACE FS input
      • GLSL - legacy GLSL should be only use when targeting <= GLSL120
      • GLSL - use #include instead of shader attachment
      • GLSL Writer - get rid of wrong and unneeded cast
      • implement GBuffer output SubRenderState
      • implement hardware instancing support
      • implement parallax mapping and use it in respective sample
      • NormalMapLighting - do not transform normal if there are no lights
      • Program - create entry point in constructor
      • PSSM3 - fix scalar on GLSL swizzling which requires GLSL420
      • ScriptTranslator - log error when encountering unknown parameter
      • TextureAtlas - drop #extension as it does not work with #include
    • Terrain: fix wrong light direction of composite map

    • 👍 GLSupport

      • drop unused GLSLProgramCommon::isSkeletalAnimationIncluded
      • GLSLProgramManagerCommon - drop needless GL type indirection
      • GLSLProgramManagerCommon - drop unused shared param parsing
    • GL*

      • further unify GLSLProgramManagerCommon
      • further unify GLSLShaderCommon
      • allow matrix types in texcoord semantic
      • GLSLProgram - store member shaders as array in GLSLProgramCommon
      • GLSLShaderCommon - drop the loadFromSource -> compile indirection
    • 0️⃣ D3D11/ D3D9/ Cg: set entry point to "main" by default

    • D3D11

      • prevent DefaultHardwareVertex/Index/UniformBuffer creation
      • VertexDeclaration - be specific which semantic index is missing
    • GL3Plus/ GLES2

      • fix loading monolithic programs from microcode cache
      • attach uniform blocks to shared params for CPU <> GPU sync
      • factor out new linkSeparable() API for SSO
    • GL3Plus

      • clean up blitFromTexture
      • clean up GLSLProgramManager::extractUniformsFromProgram
      • fix linking of spirv SSOs
      • fix RenderToVertexBuffer with monolithic shaders
      • HardwareBuffer::lock - use more appropriate error message
      • merge UBO and SSBO classes
      • SSO - expose uniform locations through param_indexed
      • TextureBuffer::download - fix crash when dest type differs
      • unify microcode read/ write like in GLES2
    • GL/GL3+:

      • deprecate the "attach" mechanism in favor of #include
      • enable hardware texture blit, verified working
    • GLES2: implement limited hardware texture blit w/o scaling

    • 👍 D3D9: do not spam unsupported HLSL targets & correct VTF format check

    • BSPSceneManager

      • fire RenderSingleObject, so RTSS passes are updated
      • make BspLevel Renderable to use standard rendering path
    • ⬆️ Tools: MeshUpgrader - allow two SubMeshes reference the same Material

    • 📄 Docs

      • Compositor - document quad_normals pass attribute
      • fixed several doxygen errors
      • Manual - improve formatting of "Parameter specification"
      • Material - document the interplay of TUS and Sampler
      • Resource Management - include data retrieval in diagram
      • Tutorials - update deferred shading resource links
      • update regarding shadow_caster_material
    • Samples

      • Compositor - HDR merge GLSL and GLSLES shaders
      • Deferred Shading - merge GLSL and GLSLES shaders
      • Deferred Shading - use HLSL instead of Cg for D3D11 compat
      • Deferred - SSAO use standard instead of custom data sources
      • drop white.bmp that was only used as a placeholder
      • fixup for wrong matrix construction in last commit
      • GLSL - fix several errors discovered by strict SSO checking
      • Instancing - fix shadow casting and matrix types with GLSL
      • Instancing - user better lighting setup
      • Instancing - use RNG from std and make output consistent
      • Instancing - use RTSS for accurate shader based technique
      • ParticleGS - use point sprites with GLSL
      • port DeferredShading to RTSS
      • Shadows - convert to the "standard" PSSM/shadow_caster material
      • Shadows - simplify setup by properly using integrated shadows
      • SkeletalAnimation - set hardware skinning parameters via script
      • SSAO - fix RTSS material initialisation
      • SSAO - port to gbuffer RTSS stage
      • BSP - replace chiopteraDM by OpenArena oa_rpg3dm2
      • BSP - drop quakemap.cfg indirection for Android compatibility
      • AtomicCounters - finish the sample and drop obsolete code
    • ✅ Tests

      • convert ImageCombine PlayPen to Unit test
      • fix additive offset mapping test
      • test resource loading listener discarding only element in group
      • VTests: PlayPen_BlitSubTextures - use hardware blit path
  • v1.12.4 Changes

    December 23, 2019

    Note: imgui is not included - workaround

    • Main

      • Compile Remotery.c as cpp-file
      • Fixed wrong material name in ManualObjectSection
      • InstanceBatch: Initialize frame number in constructor.
      • Revert "OgreResourceBackgroundQueue: disable when OGRE_THREAD_SUPPORT == 3"
      • remaining fixes for OGRE_CONFIG_DOUBLE
      • add converting constructors to Matrix4 and Affine3 + Test
      • AutoParamDataSource - use Vector4f, when float precision is enough
      • Camera - add #ifdef NODELESS_POSITIONING
      • Camera - simplify with nodeless positioning enabled
      • deprecate AtomicScalar
      • deprecate OgreVector2.h, OgreVector3.h and OgreVector4.h
      • fixed inability to properly parse 'import "longQuotedFilename"'
      • further reorder fields to reduce padding
      • GpuProgram - add safePrepare to account for throwing overloads
      • GpuProgram - move reading from file to prepare
      • GpuProgramParams - use typed overloads for Vector4 float & double
      • Lexer - do not repeat the filename in each ScriptToken
      • Light - add #ifdef NODELESS_POSITIONING
      • make sure directional lights are always sorted in front
      • make TransfromBase compatible when T is not Real
      • merge HighLevelGpuProgram::loadHighLevel with GpuProgram::loadImpl
      • move CmdPreprocessorDefines to HighLevelGpuProgram
      • replace in memory spot_shadow_fade.png by on disk .dds file
      • Resource::calculateSize - use sizeof(*this)
      • SceneManager - move destroyShadowTextures to clearScene
      • ScriptCompiler - avoid vector of SharedPtr
      • ScriptCompiler - deprecate unused internal API
      • ScriptCompiler - throw error on invalid import statements
      • ScriptLexer - get rid of Ptr to vector antipattern
      • ScriptLexer - only record lexeme when type is not sufficient
      • ScriptParser - factor out unquoted function
      • ScriptTranslator - unify GpuProgram translation
      • ShadowRenderer - bind shadow texture to correct Pass with RTSS
      • ShadowRenderer - fix spot shadow fade with the RTSS
      • slightly refactor shadowrenderer
      • switch internal HighLevelGpuProgramFactory API to GpuProgram*
      • TextureManager - assert that total texture size is not zero
      • UnifiedHighLevelProgram - allow delegating to low-level programs
      • Node - make getLocalAxes more numerically stable
      • Matrix3 - make several functions inline for re-use and refactor
    • Bites

      • add keypad key support for Dear ImGui.
      • map Dear ImGui to SDL_TEXTINPUT for correct text character processing.
      • Move check for Xaw to Bites.
    • CMake

      • expose OGRE_NODELESS_POSITIONING
      • disable imgui, if it is not found out and add nodeless to summary
      • Make OGRE_BUILD_TESTS depend on Ogre Bites.
      • RTTS - drop separation between core and ext shaders
    • Overlays

      • imgui - correctly handle RGB > BGR conversion for D3D9
      • restore script loading hack to allow re-loading groups
    • RTSS

      • FFPLib - add missing FFP_Transform variant
      • fix linear skinning shaders and replace existing sample by them
      • HarwareSkinning - only include light calculations when needed
      • LinearSkinning - add missing normal transformation
      • make hardware skinning work with GLES3+
      • properly handle uniform arrays of non square matrices
      • Texturing - switch back to inspecting srcPass
      • Texturing - use ACT_TEXTURE_VIEWPROJ_MATRIX for projection matrix
      • use the RTSS to generate Hardware Skinning shadow caster shaders
      • use uint4 for BLENDINDICES for HLSL4 compatibility
    • D3D9/ D3D11: allow background shader compilation in prepare()

    • D3D11

      • HLSL - drop shared_ptr juggling and remove according hack in Main
      • make sure PF_RGB correctly falls back to PF_XRGB instead of RGBA
      • Switched ID3D11DeviceContext::ClearState and ID3D11DeviceContext::Flush as recommend by Microsoft.
    • D3D9: retain monitorIndex of the "Rendering Device" config option

    • GL*

      • delete background contexts before destroying the HBM
      • fix uploading sampler array uniforms
      • Non-square matrices are always row-major in Ogre with no
        conversion, so force off transposition.
    • GL

      • explicitly convert matrices to float for OGRE_CONFIG_DOUBLE
      • fix crash & error due to type mismatch
      • get rid of GLSLGpuProgram and consolidate GLSL code in GLSupport
    • 👍 GLSupport

      • add the 'externalGLControl' option to Cocoa render windows
      • factor out common GLWindow class
      • move background context registration to GLRenderSystemCommon
    • 📄 Docs: add background resource loading tutorial

      • Basic Tutorial 2 - use additive lighting
      • improve VTF section
      • manual - improve GPU Program documentation
      • Manual - slightly improve Shadows section
      • Manual: document GLSL non-square matrix translation behavior
      • RTSS - add hardware_skinning section
      • update License.md - added pugixml, dropped nedmalloc
    • Samples

      • add clarifying comment when using the ImGuiOverlay() in custom apps (#1333)
      • Do not build demo installer when SampleBrowser is disabled
      • BumpMapping - use HLSL instead of Cg
      • clean up Shadows sample
      • do not build imgui sample, if it is disabled
      • drop obsolete HadwareSkinning materials & shaders
      • enable Fresnel Sample for D3D11 by using HLSL instead of Cg
      • fix depth shadow caster for HLSL4
      • OffsetMapping - finalize cleanup and fix multilight setting
      • OffsetMapping - use HLSL instead of Cg and simplify material
      • Browser - improve UI layout on Mobile
    • ✅ Tests

      • PlayPen - port to nodeless positioning by using helper class
      • unify glow shaders
  • v1.12.3 Changes

    November 06, 2019

    • Main
      • allow reading zip archives from unicode paths
      • Compositor - allow setting auto clear colour from script
      • deprecate QuadMaterialMap typedef
      • deprecate TEX_TYPE_2D_RECT
      • deprecate _writeRawConstant(size_t, Real, size_t count)
      • fix GpuParameters not being updated if preRender returns false
      • make reverse-Z a ConfigOption and check compatibility in GL3Plus
      • Pass - setPointSpritesEnabled. Check for RSC_POINT_SPRITES
      • properly handle MRT depth attachments
      • removed extra unlock, which caused assert failure. (#1273)
      • SkyRenderer - correctly apply orientation to SkyBox
      • TextureUnitState::setTextureName - do not reset the TextureType
      • Added support for 32 bit floating point depth buffer (#1290)
      • Provide copy and assign ctors where needed.
      • Fixed exit from Matrix3::SingularValueDecomposition when reaching max iteration count
    • CMake

      • add dotscene plugin and imgui support to feature summary
      • enable unicode path support on MSVC by default
    • Bites

      • ApplicationContext - implement destroying windows
      • Input - specify return value and add InputListenerChain
    • Overlay

      • allow injecting derived Overlay classes
      • merge ogre-imgui into Overlay & Bites
      • Implemented pixel ratio for HiDPI
    • RTSS

      • HLSL use SM4 sampling functions if available
      • PSSM3 - fix shader generation for depth textures with HLSL
      • PSSM3 - fix depth texture, no split with reversed depth with GLSL
    • Terrain

      • generate SM4 compatible shaders
      • fix shadows with reversed-z & depth textures
    • 📄 Docs

      • improve Compositor script documentation
      • fix a bunch of doxygen warnings
      • Install Linux docs in /usr/share/doc/OGRE
      • add reversed depth tutorial
    • GL*

      • drop unneeded calls to glReadBuffer
      • Texture - keep driver default parameters for initial upload to avoid stalls
    • GL3+

      • allow FBOs with depth and non-depth texture attachments
      • Reverse depth buffer implementation for OpenGL3+
      • fix leak when a program object is created but one already exists
    • ✅ GL3+/ GLES2: fix handling of PF_A8 textures & add test

    • D3D11 & GL3+: consider reversed-Z for texture compare & texture border

    • 🚚 GL: remove some version checks - we globally require GL 1.5

    • 👍 GLSupport:

      • EGL - fix emscripten build
      • EGL - use the standard FSAA name on Emscripten & Android
      • GLSLPreprocessor: fixup #elif support + test
      • GLSLPreprocessor: use std::forward_list instead of ad-hoc solution
      • Android: export viewport scale through getViewPointToPixelScale
      • Android - query ANativeWindow instead of EGL for window size
    • D3D11

      • drop RSC_POINT_SPRITES, which is not supported
      • use precise depth format mappings that we have now
      • add reversed-Z support
    • D3D9 & D3D11: ps_2_x & vs_2_x are not HLSL profiles

    • Samples

      • add Imgui demo
      • introduce HLSL_SM4Support.hlsl to unify Cg/ HLSL4 shaders
      • clean up Example_Basic.{cg, hlsl} mess
      • Browser - make sure Trays are not tiny on Android
      • Context - use isCurrentSamplePaused to make code more readable
      • drop Sample::getRequiredRenderSystem
      • ShowUV - fix varying matching in GLSL shaders
      • SkyBox materials must not use normals - D3D11 is picky here
      • SSAO - merge Cg & HLSL post processing shaders
      • fix depth shadow caster for HLSL4
    • ✅ Tests:

      • make PlayPen_VertexTexture compatible with D3D11
      • fix MinGW build
      • PlayPen_DepthShadowMap - add normals to satisfy D3D11
  • v1.12.2 Changes

    September 15, 2019

    • Main:

      • DefaultHardwareBufferManager - fix order of destruction
      • deprecate getMovableObjectFactoryIterator
      • deprecate RenderSystem::bindGpuProgramPassIterationParameters
      • deprecate SceneManager::getMovableObjectIterator
      • factor out internal _openFileStream method
      • Frustum - correct extent computation for customProjMatrix
      • remove logging from Exception constructor altogether
      • TRect - add operator==
      • use the idiomatic addElement().getSize() chaining for VertexDeclarations
    • CMake

      • disable precompiled headers on MinGW
      • export unicode paths option on MSVC
    • 🏗 Csharp: install source files for easier consumption and fix build

    • D3D9: implement bindGpuProgramPassIterationParameters by general means

    • 👍 GLSupport

      • EGL - add HWgamma support
      • EGL - correctly handle windowMovedOrResized with parent win
      • implement the 'currentGLContext' parameter for cocoa windows on macOS
      • unify EGL/ GLX debug output
    • GL3+

      • support loading SPIRV shaders
      • update glcorearb.h to OpenGL 4.6
    • GL*

      • GLSL - some code simplification
      • GpuProgram - implement pass iteration params binding using mask
      • unify uniform block handling in GLSupport
    • 🔌 Plugins

      • add DotSceneLoader plugin
      • STB image - update to latest upstream
    • XMLConverter

      • replace tinyxml by pugixml
      • simplify code
    • Samples

      • add volumetric light shafts sample
      • avoid SampleBrowser swallowing sample input events
      • Tutorials - Added CXX 11 as it does not build without it
    • ✅ Tests

      • fix gtest discovery when built locally
      • test Camera::setCustomProjectionMatrix
      • update gtest and build it like the rest of the deps
    • 📄 Docs

      • update dependencies and document cmake options
      • use aliases to annotate shader specific pass parameters
      • update "Binding vertex attributes" section
  • v1.12.1 Changes

    June 25, 2019

    • Main
      • add optimized PF_R8 scaling & conversion
      • add overloads for MaterialPtr ManualObject
      • improve Singleton documentation
      • properly export RenderOperation
      • Texture - also unset TU_AUTOMIPMAP when mNumMipmaps == 0
      • update SSE2NEON to fix softwareVertexSkinning
      • use general softwareVertexSkinning implementation instead of NEON
      • Add missing nullptr_t constructor for SharedPtr
      • Do not replace existing entries in ResourceGroup index
      • use std::map::emplace instead of std::map::insert to simplify code
      • OgreETCCodec: KTX container: add support for a subset of ASTC textures
      • OgrePixelFormat: fix obvious typo in computing astc_slice_size()
    • XMLConverter
      • do not attempt to create "" named materials
      • use Listener to keep material references for mesh2xml
    • CMake
      • Android - fix installation of core resources
      • Android - port build to gradle
    • 🗄 SWIG: export VertexElementList and ignore some deprecated stuff
    • Overlay
      • fix TextArea Font and material change
      • Add _setMaterial method to Font
    • Bites: Trays - allow interacting with widgets using the system cursor
    • Terrain: use material group for composite map
    • D3D11: Replaced the use of getCustomAttribute() methods by new D3D11RenderTarget interface (#1212)
    • D3D9: fix uninitialised memory in lighting
    • 🚀 GLSupport: [OSX] Avoid leaking and over releasing of mGLContext and mGLPixelFormat - always store retained, always release. Initialize mGLPixelFormat in externalGLContext case too. Cleanup.
    • GL3+
      • correct building shader programs when compute shader is present
      • Make GLSL part of GL3Plus private implementation (#1188)
    • GLES2: fix PixelFormat assert and compilation with GLStateCache
    • GLES2/ GL3+: use compile time assert in PixelFormat
    • RTSS: add missing forward declare
    • Samples

      • AndroidJNI - properly request Camera permissions
      • correct path for AndroidJNI samples
    • ✅ Test correct resource location priority

    • 📄 Docs:

      • clarify light-related SceneManager comments
      • improve documentation of ManualResourceLoader
      • improve RTSS documentation
      • update building instructions for android
  • v1.12.0 Changes

    April 30, 2019

    Main

    • add ACT camera world position for camera relative rendering

    • add DefaultTextureManager and NullTexture for software fallbacks

    • add PF_DEPTH32 and map it in GL3+

    • add proper deprecation notes for legacy HardwareBufferLockGuard

    • add SSE2NEON for NEON SIMD support

    • Any - throw std::bad_cast instead of InvalidParametersException

    • append "_d" in DynLib instead of getConfigFilePath

    • assert instead of segfaulting if volume materials are unavailable

    • CompositionTechnique - except if texture name is not unique

    • Compositor - factor out resolveTexReference

    • CompositorManager - stop using ptr to std::vector antipattern

    • Compositor - reuse common methods of CompositorInstance & use uint

    • correctly handle the case of identityView && cameraRelative

    • correctly mark DebugRenderable for export

    • define a common OGRE_TOKEN_PASTE macro for LINE concat

    • DepthBuffer - make FSAA API consistent with RTT API

    • _destroySceneNode - fix destroying last item in mSceneNodes

    • disambiguate ResourceManager overloads

    • drop deprecated RenderSystem API

    • drop deprecations with low impact

    • drop DIRECTXMATH support now that we have NEON everywhere

    • drop RSC_CUBEMAPPING by bumping required D3D9 feature level to 9.1

    • drop support for separateUV

    • drop useless RSC_COMPLETE_TEXTURE_BINDING

    • DynLib - fix WinRT build

    • Entity - use vector based storage for child objects

    • factor out OGRE_BUILD_* settings to OgreComponents.h

    • factor out ShadowVolumeExtrudePrograms to filesystem

    • FileSystemLayer - do not force the Ogre subdir upon consumers

    • fix android build without Zip

    • fix building without ZIP

    • fix combinedUVW for separate images & deprecate separateUV setting

    • fix default texture filtering value set to the value other than FO_NONE for TE_EXTERNAL_OES and TEX_TYPE_2D_RECT

    • fix integer overflow when num threads and use a sane limit of 2

    • fix segfault when set_texture_alias arguments are missing

    • GpuProgramManager - provide default noop loadImpl

    • HardwareBufferLockGuard - assert that buffer is not null

    • hide OgreParticleEmitterCommands.h

    • hide OgrePrefabFactory

    • hide ShadowTextureManager

    • HighLevelGpuProgram - fix #line directive filename refrencing

    • HighLevelGpuProgram - unify preprocessor define parsing

    • implement ACT_NORMAL_MATRIX

    • install new OgreComponents.h

    • introduce Vector4f and use it to store attenuation

    • ManualObjectSection - factor out convertToSubMesh

    • MaterialManager - fix leak of mDefaultSettings passes

    • MaterialSerializer - fix writing texture_unit section + tests

    • Math - factor out common makePerspectiveMatrix

    • Matrix4 - make converting constructors explicit

    • Mesh - make default constructor match createOrRetrieve

    • MeshManager - load prefabs only on demand

    • MeshManager - move ManualResourceLoader API into separate class

    • move auto window creation logic from RenderSystem to Root

    • move DisplayMode from Profiler to Overlays

    • move more code from SceneManager to ShadowRenderer

    • Node - deprecate getChildIterator

    • Node - use PrefabFactory to create DebugRenderable

    • OptimisedUtil - log ticks instead of requiring a breakpoint

    • OptimizedUtil - fix compilation with DO_PROFILE

    • parametrize TransformBase to make it universally usable

    • ParticleEmitter - add asserts to catch invalid velocity values

    • Pass - fix wrong assignment of attenuation parameters

    • PixelFormat - move byte aliases to end to fix big endian build

    • PlatformInformation - NEON does not depend on a specific CPU arch

    • Profile - add remotery support

    • Profile - avoid allocations for event names, fill swapBuffers hole

    • Profiler - clear the whole hierarchy when enabled mid-frame

    • Profiler - ignore mEnabled with Remotery

    • Profiler - make Profile RAII helper inline

    • Quaternion - inline several trivial member functions

    • reduce private SceneManager API usage in ShadowRender

    • RenderSystem - add back some deprecated internal API

    • RenderSystem - drop advanced TextureUnit settings

    • RenderSystem - drop obsolete hasAnisotropicMipMapFilter

    • RenderSystem - fix _setProjectionMatrix fallback code

    • RenderSystem - pass FFP params through GpuProgramParameters

    • RenderTarget::writeContentsToTimestampedFile - use ISO 8601 order

    • replace some useless comments by "override" keyword

    • ResourceGroupManager - allow disabling throwing in openResource

    • Root - fix auto creation of Window

    • SceneManager - allow to disable throwing in getSceneNode

    • SceneManager - also use fog_override values for auto fog_params

    • SceneManager - convert _TYPE_MASK members to enum

    • SceneManager - deprecate SceneType & fix some deprecation warnings

    • SceneManager - deprecate shadow config iterator access

    • SceneManager - fix finite and infinite extrusion params pointers

    • ScriptCompiler - drop useless CE_UNSUPPORTEDBYRENDERSYSTEM

    • ScriptCompiler - hide abstract bases from OverlayTranslator

    • Script - fully deprecate single argument cubic_texture

    • ScriptTranslator::getConstantType - catch unsupported types

    • ShadowCameraSetup - add static create() to accommodate bindings

    • ShadowRenderer - do not pool depth for PF_DEPTH

    • simplify AxisAlignedBox

    • slightly speed up TextureUnitState::recalcTextureMatrix

    • String - fix doxygen inline comment

    • SubEntity - move trivial getters to header to allow inlining

    • SubMesh - store MaterialPtr instead of material name

    • Texture - add native layer array support

    • Texture - fix fallout from layer array refactor

    • Texture::getBuffer - return by const ref

    • Texture - slightly refactor code and avoid errors on corner cases

    • TextureUnitState - deprecate isCubic() & is3D()

    • TextureUnitState - drop useless binding types

    • TextureUnitState - fix fallout after using NULL frame for blank

    • TextureUnitState - refactor setAnimatedTextureName

    • Timer - use fixed width uint64_t for time duration

    • turn some #if OGRE_PROFILING into runtime options

    • TUS - fix one more instance of NULL for blank & add tests

    • use Matrix3x4f TransformBase typedef in InstancedEntity

    • Vector3 - return IDENTITY in getRotationTo for zero-sized vectors (#1045)

    • ZipArchive - improve zzip error messages

    • Unify enum TextureUsage between v1.11 and v2.1 (TU_NOTSHADERRESOURCE => TU_NOT_SRV, +TU_UAV, +TU_UAV_NOT_SRV)

    • use exception safe buffer unlocking everywhere

    • move OgreUTFString to Overlay component, get rid of no longer needed OGRE_UNICODE_SUPPORT

    • spare the Quaternion coversion when we only need a Matrix3

    • stop using deprecated setCubicTexture internally

    • Support PixelBox::getSubVolume with slice granularity for compressed textures - no need for relaxed checks

    • Math: Matrix3 - Increase precision of SVD decomposition

    • SceneManager: O(1) complexity for destroySceneNode()

    • SceneManager: restore log(N) complexity for named node lookup

    • SIMDHelper: drop unused __mm_rsqrt_nr_ps

    • Ensure that requesting partial copy of compressed texture will lead to exception rather than silent data corruption. Partial copy is implemented in Ogre v2.1

    • Fixed for Emscripten/Webassembly port to work again

    • Fixed Matrix3::SingularValueDecomposition for bidiagonal matrices

    • fix negative particle size when scale affector decrease size

    • parse #include directive in GLSL shaders

    • VTF instancing with HLSL (#1167)

    - remove superficial OgreExport to fix MinGW build

    Bites

    • add workaround for swig crashing on ApplicationContext

    • ApplicationContext - add fallback locations for RTSS media

    • ApplicationContext - default to "Ogre3D" as appName

    • ApplicationContext - update fallback internal media locations

    • ApplicationContext - windows must be destroyed in reverse order

    • correctly update director flags after ApplicationContext rename

    • disable ConfigDialog on MinGW until we have resolved #1064

    • extract ApplicationContextBase to allow multiple implementations

    • generate Shaders for all registered RTSS schemes

    • put RTShaderLib paths in resources.cfg instead of guessing them

    • SWIG - correctly handle OgreComponents.h

    • Trays - ensure window update on first call

    • Trays - fix jumping Slider handle

    - TraysManager - limit progress bar update rate to 4fps

    SWIG

    • add repr to Affine3

    • fix MSVC builds of Python, Csharp and Java

    • fix MSVC CI build

    • fix wrapping of Billboard{Set, Chain} that also derive from MO

    • make VectorBase* available for wrapepd Vector* classes

    • Python: organize all modules in parent Ogre package

    - Java: add install targets

    CMake

    • Bites - issue a warning if SDL2 was not found

    • drop obsolete Android Toochain - we use the one shipped with NDK

    • set CMP0068 and default CMAKE_OSX_ARCHITECTURES to x86_64

    • silence warning about deprecated swig_add_module

    • WinRT - drop support for WindowsPhone and old MSVC

    • -Wno-inconsistent-missing-override, so we can incrementally add them

    • Fix the CMAKE_MAKE_PROGRAM variable is not set in 3rd party libraries#

    - FreeImageCodec: fix error message when FreeImage_LIBRARIES is empty

    RTSS

    • add FFPLib_AlphaTest.cg, accidentally dropped in refactoring

    • add material serializer test

    • add templated createSubRenderState overload

    • allow manually triggering shader generation & add test for this

    • allow using PSSM3 SRS for normal depth shadow mapping too

    • Colour - drop useless stage flags to simplify code

    • const correctness for updateGpuProgramsParams

    • correct and simplify FunctionInvocation Operand comparison + test

    • correctly apply specular normalisation before addition

    • disable hardware PCF for now as it has issues on e.g. Intel

    • drop deprecated functions

    • drop deprecated functions

    • drop SGX_TransformPosition and one SGX_TransformNormal overload

    • drop specular mapping support in normalmapping SRS

    • FFPRenderStateBuilder - just use constructor & destructor

    • FFPTexturing - simplify setTextureUnit preconditions

    • fix PSSM shader for GLSLES

    • fix resolving params with autoConstantIntData != 0

    • fix SGX_ModulateScalar fallout

    • GLSL - factor out getGL3CompatDefines

    • hide SGMaterialSerializerListener implementation

    • Lighting - clean up internal API

    • Lighting - drop unused uniform surface parameters

    • Lighting - simplify code by using ACT_NORMAL_MATRIX

    • Lighting - simplify shaders by using inout semantics

    • Lighting - there will never be specular input for per pixel lights

    • lighting - use the autoparam data source to feed data

    • make code testable and add basic shadergen test

    • make resolve* funcs never return NULL and drop respective checks

    • merge per-pixel and normal-map lighting

    • merge remaining parts of glsl & glsles RTShaderLib

    • move acquirePrograms/ releasePrograms to TargetRenderState

    • move bindUniformParameters to TargetRenderState

    • move CPU program creation to TargetRenderState

    • move example SRS shaders into Samples/Media

    • move getCustomFFPSubState to FFPRenderStateBuilder

    • move UserObjectBinding management to TargetRenderState

    • Operand - delay null check until FunctionInvocation

    • PerPixel - directional lights must not unset viewpos request

    • properly use FunctionAtom base class

    • PSSM3 - fix fallout in parameter resolve check

    • PSSM3 - fix hardware PCF and auto enable it for PF_DEPTH

    • PSSM3 - speed up shader code & use hardware PCF if available

    • refactor NormalMapLighting

    • RenderState - use std::unique_ptr for aggregation & slight cleanup

    • replace FFP_FUNC_ADD/MODULATE/SUBTRACT by BinaryOpAtom

    • ~SGTechnique - fix use after free

    • ShaderGenerator - hide listener adapters

    • ShaderGenerator - manage aggregated classes using std::unique_ptr

    • simplify FFPRenderStateBuilder and default to per-pixel lighting

    • simplify Operand::OpMask enum and use strict typing for it

    • slightly simplify Lighting parameter resolution

    • Texturing - mPSOutDiffuse always contains the "current" value

    • Texturing - remove superficial assignment to temporary

    • update PSSM3 split point documentation

    • use dynamic_cast instead of getType() String comparison

    - use Vector3i for lightCount

    MeshLOD

    • Let Lod0Stripifier use Mesh::getHardwareBufferManager() for buffer creation

    - MeshLodGenerator: wrong assertions removed

    Media

    • drop the unused old instancing shaders

    • factor out top level "core" Media folder

    • fix mrttestfp_quad.glsl after stdquad refactoring

    • inherit border attributes in SdkTrays.overlay

    • merge GLSL / GLSL150 StdQuad_vp and dependent compositors

    • merge some HLSL and Cg programs in HLSL_Cg

    • unify DepthShadowmap* programs as GLSL120

    • unify GLSLES and GLSL120 shaders as GLSL where possible

    • unify SwizzleGP.glsl, fixing the GL2 version

    - PSSM: unify shaders and assume window depth instead of NDC depth on GL

    Overlay

    • do not call _notifyViewport on adding elements

    • fix crash when tasking out of full screen

    • fix fallout introduced by the new ScriptTranslator

    • hide OgreOverlayElementCommands.h

    • Overlays - use "new" Script Compiler introduced in OGRE 1.6

    - use shadowbuffer to avoid stall caused by VBO mapping (#1162)

    Terrain

    • force checkQuadIntersection inline and make it private

    • MaterialGenerator - actually disable normal maps if requested

    • move helper shader code to filesystem

    • slightly clean up TerrainMaterialGeneratorA

    • speed up calculateHeightDeltas

    • TerrainGroup - add loadLegacyTerrain for 1.7 style terrain.cfg

    • use #include directive to append TerrainHelpers

    - use non-linear depth for depth shadows

    👍 GLSupport

    • add "contentScalingFactor" option to scale Android 3D buffer (#1033)

    • drop unused ErrorHandlerFunc abstraction

    • GLX - drop broken window icon loading code

    • move getPass*States override to GL

    • move legacy EXT_geometry_shader4 functionality to GL

    • OSX - eliminate confusing variable name

    • unify implementations as GLDepthBufferCommon

    - CPreprocessor: skip duplicate strlen call

    D3D11:

    • allow D3D11DeviceResource to create and destroy self or other D3D11DeviceResources in notifyDeviceLost/Restored handlers

    • D3D11HardwarePixelBuffer: Create staging buffer with only single subresource

    • D3D11VertexDeclaration - add useful information to exception

    • Dead code removed (offset was always zero - the only reason why there were no cr

    • Rename D3D11Texture::getTexture() => getSrvView()

    • Restored the ability to differentiate between identically named adapters

    • Reuse field declared in the base class (mLockBox => mLockedBox)

    - We need to clean only one texture slot as there is only one depth texture (stored in mDSTResView) even for D3D11MultiRenderTarget

    GL*

    • simplify createMultiRenderTarget - only supported with FBOs

    • Revert "GL*: do not needlessly bind zero texture"

    • allow MRT with different formats if supported

    • DepthBuffer - drop unused mMultiSampleQuality field

    • fix FBO format logging

    • GL3+/ GLES2: simplify RTT Manager as only FBOs are supported

    - GLES2/ GL3+: disable separable programs by default

    GLES2:

    • EAGL2Window: derive from GLRenderTarget as required
    • Fix crash when opening GLES2 Mali emulator

    - auto insert precision qualifier into fragment shaders

    GL3+

    • bump minimal required OpenGL context to 3.3

    - do not implicitly dispatch compute during _render

    🚚 D3D9: Texture - remove unused mCubeFaceNames

    GL

    • actually throw on invalid outputOperationType

    • do not cache programs containing geometry shaders

    • fix GLArbGpuProgram::loadFromSource exception code & message

    - fix warning flood with Copy & PBuffer RTT

    FreeImageCodec/ STBICodec: make methods public (#1047)

    📄 Docs

    • differentiate between the profiler instance and instrumentation

    • fix ogre 1.12 refactoring warnings

    • fix several doxygen warnings

    • fix wrong auto param type in samples

    • improve preprocessor_defines documentation

    • improve "setup" Tutorial

    • manual - improve shadows section

    • port basictutorial3 to doxygen & adapt Terrain sample accordingly

    • reorganize GLSL legacy feature documentation

    • several fixes for 1.11 refactoring

    • slight corrections for Compositor Scripts

    • specify what "compatibility with older cards" exactly means

    • update Entity documentation formatting and references

    • update profiler documentation for remotery support

    • update RTSS sequence diagrams and description

    • use new Ogre logo

    - Tip for install via MSVC without Visual Studio

    Samples

    • drop DualQuaternion_Common.hlsl

    • Instancing - fix remaining HLSL techniques and merge with Cg

    • Instancing - use RTSS instead of custom shader for ground plane

    • NewInstancing - fix depth shadows on all RenderSystems

    • Python - drop deprecated ApplicationContext parameter

    • Terrain - use RTSS for depth shadows

    - TexturedFog - fix errors with strict mode

    ✅ Tests

    • add Matrix3SVD test

    • add SplitBaseFilename tests

    • add TransformBaseArrayLoading test

    • fix PlayPen_DepthShadowMap and port it to RTSS

    • drop superficial calls to buildTangentVectors on knot.mesh

    • fix PlayPen_ManualObject2D

    - reset RTSS after each test to avoid state leaking

    ⚡️ Tools: update MeshUpgrader and XMLSerializer for SubMesh changes