Ogre 3D v1.12.0 Release Notes

Release Date: 2019-04-30 // almost 2 years ago

    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