Ogre 3D v1.12.0 Release Notes
Release Date: 2019-04-30 // almost 5 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