v14.0.0
Highlights
- switched WorkQueue to a Task-based API
- There is a render queue dedicated to Transparent objects
- RTSS can handle light type changes without shader recompilation
See New and Noteworthy for a detailed explanation
What's Changed
- Main
- add OGRE_DEPRECATED to getAnimationStateIterator
- allow parallel install of multiple versions via versioned OGRE dir
- be slightly more strict regarding HardwareBufferUsage
- AnimationState - make _setBlendMaskData private
- BillboardChain - slightly clean up API
- BillboardSet - drop deprecated getTextureCoords
- clean up internal AnimableObject API
- clean up RenderSystemCapabilities API
- clean up VertexBoneAssignment definition
- CompositorInstance - fix auto-sorting custom render passes
- CompositorInstance - improve render_queue error message
- DefaultDebugDrawer - add setBoneAxesSize()
- DeflateStream can throw in close() > compressFinal()
- devirtualise functions that would bypass virtual dispatch
- factor out SceneMgrQueuedRenderableVisitor::renderTransparents
- Frustum - drop now superfluous getProjectionMatrixRS
- fix element count of ACT_TIME_0_*
- fix ResourceGroupManager shutdown crash (#2859)
- generate compile error when using IsNaN with fast math
- GpuProgramParameters - do not set variability in clearAutoConstant
- GpuProgramParameters - assert correct autoconstant type
- hardcode builtin controller values and functions to float
- HardwareBufferManager - cleanup VertexBufferCopy API
- HardwareBufferManager - use private inheritance
- HardwareVertex/IndexBuffer - use uint32 to store counts
- HardwareBuffer - bring back reduced isSystemMemory
- it is actually safe to default copy IndexData
- introduce MOT_* as a replacement for now hidden FACTORY_TYPE_NAME
- Light - convert spotlight angle animable values to Radian type
- LiSPSMShadowCameraSetup::create - actually forward the params
- make "Stereo Mode" RS Option a boolean & get rid of StereoModeType
- make parameters const ref where applicable
- Math: enable Vector3 -> Vector4 conversion for generic types
- ManualObject - speed up copyTempVertexToBuffer
- MeshManager - use object space bones by default
- Mesh - try to detect improper use instead of crashing
- move custom RSC loading out of Root
- move render queue split configuration to ShadowRenderer
- move RSC compatibility check to useCustomRenderSystemCapabilities
- move SPFM_DELETE_T to OgreDeprecated.h
- MOT_* strings for all MovableObjects (#2842)
- ParticleEmitter - emit a single particle on first update
- ParticleSystemManager - do not inherit from ScriptLoader
- pass camera name as renderQueueStarted "invocation"
- pass entity's transform to DebugDrawer::drawBone()
- Pose - always store data float and int
- Pose and Morph weights are always float
- Profiler - clean up GPUEvent API, that was forwarding to RenderSys
- put transparent objects on a separate render queue
- RenderSystem
- make createRenderSystemCapabilities protected
- mManualBlendColours is only needed for FFP
- use arrays for GPT_ related fields
- clean up global instancing API call typos & naming
- replace AnyNumeric by specialized methods in NumericAnimationTrack
- replace PrefabType enum by the string equivalents
- ResourceBackgroundQueue - port to new WorkQueue API
- ResourceBackgroundQueue - refactor to use std::future
- Resource - call prepareResource() before loading an unprepared manual resource
- RSC_MRT_DIFFERENT_BIT_DEPTHS is D3D9 specific
- SceneManager
- fix docs, all movable objects auto-detach
- make createSceneNode non-virtual
- make more of the internal API private
- _setPass - drop unused evenIfSuppressed
- report derived material in renderdoc
- SceneQueryListener - make consuming WorldFragment optional
- SceneQuery - move most of WorldFragment API to BSP SceneManager
- ScriptCompiler - fix _fireEvent doxygen comment
- ShadowRenderer - factor out deriveTextureShadowPass
- setBonesUseObjectSpace - use the passed value
- simplify scene manager factory registration
- Skeleton - convert _dumpContents to operator<<
- slightly refactor RenderPriorityGroup
- StaticGeometry - convert dump() to operator<<
- SkyManager and ShadowRenderer need dllexport for mingw
- slightly clean up TextureUnitState
- type safety for GpuProgramParameters::getAutoConstantDefinition
- Texture - make parts of the API private
- Technique - avoid deadlock when shadow_*_material refers to self
- use ad-hoc hashing instead of HashedVector
- use identity for *VIEWPROJ_MATRIX if textureProjector is NULL
- VertexElement - use typed enums to reduce storage size
- VertexData - hide advanced reorganiseBuffers
- WorkQueue
- rename response queue to main-thread queue
- replace request/ response by task-based API
- fix race condition
- C++11 updates
- made private
- builtin movableobject factories
- lightsForShadowTextureLess, lightLess, materialLess
- NumericSolver
- OGRE_SERIALIZER_VALIDATE_CHUNKSIZE
- ShadowCasterSceneQueryListener
- TempBlendedBufferInfo
- UnifiedHighLevelGpuProgram
- VertexDeclaration - hide vertexElementLess
- DefaultHardware{Vertex,Index}Buffer
- FrameTimeControllerValue - hide FrameListener
- removed
- Animable::DEGREE type - Degree auto converts to Radian
- deprecated methods with low impact
- deprecated normalise_normals pass property
- deprecated RenderSystem API
- getDisplayMonitorCount API
- obsolete TextureUnitState API
- OrientationMode API
- PreApplyTextureAliasesScriptCompilerEvent
- remains of SubMesh texture aliases
- some hard-deprecated methods
- support for putting tangents into texcoord bindings
- TBB support
- TAM_UNKNOWN and ACT_UNKNOWN
- unused RenderSystemContext
- VectorBase::operator=
- SimpleRenderable - drop mParentSceneManager
- GpuProgram - drop uses_adjacency_information
- CompositorManager - drop empty initialise method
- ImageCodec - drop deprecated ImageData based codepaths
- RenderSystem - drop deprecated DepthBuffer API
- RenderTarget - drop support for "DISPLAYNAME" custom attribute
- Bites: StaticPluginLoader - dont forget to shutdown the codecs
- UnifiedShader: apply USE_OGRE_FROM_FUTURE
- CMake
- SWIG - use CMP0078 NEW
- Use all available processor cores to build dependencies
- Dependencies: update freetype, SDL and Android NDK (#2827)
- Dependencies: fix cross-compiling on apple
- only enable PVRTC on iOS by default
- Delete CTestConfig.cmake
- RTSS
- add default SRS first instead of last
- allow using constants in At operand
- cook torrance - forward surface alpha
- Do not add the gl_PerVertex block when writing the shader.
- do not split the light count by type
- GLSLProgramWriter - use param semantic to determine attribute name
- only require a single parameter for light_count
- simplify FFPFog SRS
- SubRenderState - add Any based setParameter overload
- use dynamic light types for FFP shaders too
- replace trivial FFP_Transform with builtin calls
- drop hard deprecated methods
- drop useless SPC_* enums
- Media - drop FFPLib_Common
- Media - all shaders are unified, drop the GLSL subdir
- clean up Prerequisites.h
- allow blacklisting TUS from FFP texturing
- GLSLES - move default precision definition to GL3Support
- IBL - ensure envmap is used as cubic texture
- NormalMap
- add new texture_unit level script format
- fix shadergen for object space tangents
- parallax texcoord should also affect normalmap lookup
- Parallax fix and steep occlusion mapping (#2873)
- hide
- HardwareSkinning SRS and make factory config methods static
- remaining FFP_LIB_* defines
- as much of FFPTexturing as possible
- FFPTransform
- ProgramProcessor API
- LayeredBlending - internal enums
- Terrain
- make TerrainMaterialGenerator::Profile optional
- port to new WorkQueue API
- reduce metadata verbosity
- Overlay
- update imgui to 1.89.7
- Imgui: python - strip duplicate prefix for ImGuiSomething_FlagName flags
- Bullet
- split out CollisionWorld to allow collision detection only
- wrap dynamics world to expose inheritance
- Assimp
- set emissive to 0 when using an emissive map
- support loading embedded textures
- MeshLodGenerator
- collapse lines
- factor out InputProvider differences
- factor out InputProvider duplication
- factor out OutputProvider differences
- factor out OutputProvider duplication
- get rid of OutputProviderCompressed*
- initialize both options to previous behavior
- input lines
- make helper functions static
- move compression into OutputProvider base class
- output lines
- prevent breaking lines
- prevent punching holes
- retain render operation types for buffered input
- simplify LodIndexBuffer
- use HardwareBuffers
- hide concrete input/ output providers
- hide LodBuffer
- hide LodWorkQueueRequest
- LodIndexBuffer - use a DefaultHardwareBuffer for storage
- replace LodIndexBuffer by IndexData
- LodInputProvider - reduce code duplication
- use typed Vector3, so CONFIG_DOUBLE still works
- port to new WorkQueue API
- RenderSystems
- unify RenderToVertexBuffer implementations
- implement VertexWinding in terms of FrontFace (exception: D3D9)
- GLSupport
- EGL - always derive new config on X11
- EGL - cleanup after currentGLContext fixes
- EGL - fix multi-window operation
- fix requested version of GL context
- early-out if shader source is empty
- GLES2/GL3+: fix HardwareBuffer::copyData when offsets are not 0
- GL3+
- drop texture* and FragColor defines in favor of GL3Support.glsl
- always delete the VAO (#2814)
- GLES2
- fix check in blitFromMemory
- reduce verbosity in debug mode
- GL
- check if mCurrentContext is null
- RenderToVertexBuffer - fix detection of GLSL shaders
- Vulkan
- fix hashing of shader stages
- Remove PVRTC support following ogre-next
- D3D9: fall back to SO_GOURAUD for SO_PHONG
- D3D11: memory leak due to undeleted stereo driver bridge
- Metal: Check for BCn compression on macOS Big Sur
- ImageCodecs: drop unused Plugin API
- EXRCodec: Fix the function override problem under osx (#2831)
- STBICodec: update embedded STB Image
- Paging: port to new WorkQueue API
- Volume: port to new WorkQueue API
- Tools
- MeshUpgrader - avoid assertion in ~Mesh
- MeshUpgrader - do not generate edge lists by default
- MeshUpgrader - drop interactive mode
- XMLConverter: XMLSkeletonSerializer - use correct bone handles for createNodeTrack()
- delete obsolete Tools without CMake build
- Docs
- BuildingOgre - the install step is not really optional
- Update visuals of some old (and current) Tools documentation (#2766)
- improve RTSS and UnifiedShader docs
- add 14-Notes
- RTSS - fix references to SRS_* briefs
- Samples
- DeferredShading - fix assert in detachFromParent
- DeferredShading - fix gbuffer depth on GL
- MeshLod - add compression option
- MeshLod - do not save lodconfig by default
- MeshLod - fix SHOW_MESH_HULL option
- ShaderSystem - update for new normalmap API
- ShaderSystem - fix crash on toggling per pixel fog
- ShaderSystem - use SRS_* constants
- Terrain - add mipmaps to compressed textures
- WBOIT - update to new UnifiedShader
- Tests
- add GTest based tests to CTest
- correctly report skipped tests
- DotSceneTests - fix shutdown
- PlayPen_16Textures - update for new UnifiedShader
- set a longer timeout for CTest (#2816)
- simplify CTest setup for VTests
- test GpuProgramParams.Variability
- fix stencil glow on Mesa GLES
Development is funded by your contributions
If your company uses Ogre, consider supporting its development in return: