Ogre Versions Save

scene-oriented, flexible 3D engine (C++, Python, C#, Java)

v14.0.0

10 months ago

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
      • range loop refactoring (#2790, #2821, #2824, #2834, #2845)
      • add final annotation where applicable
      • improve code readability by using make_unique
    • 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:

v13.6.5

10 months ago
  • Main
    • DeflateStream can throw in close() > compressFinal()
    • fix element count of ACT_TIME_0_*
    • fix ResourceGroupManager shutdown crash (#2859)
    • GpuProgramParameters - assert correct autoconstant type
    • SceneManager - report derived material in renderdoc
    • Technique - avoid deadlock when shadow_*_material refers to self
    • use identity for *VIEWPROJ_MATRIX if textureProjector is NULL
  • CMake
    • Delete CTestConfig.cmake
    • Dependencies: fix cross-compiling on apple
  • RTSS
    • normalmap - parallax texcoord should also affect normalmap lookup
    • IBL - ensure envmap is used as cubic texture
  • GLSupport: early-out if shader source is empty
  • GLES2/GL3+: fix HardwareBuffer::copyData when offsets are not 0
  • GLES2: fix check in blitFromMemory
  • D3D11: memory leak due to undeleted stereo driver bridge
  • Metal: Check for BCn compression on macOS Big Sur
  • EXRCodec: Fix the function override problem under osx (#2831)
  • Assimp: do not crash if embedded texture cannot be loaded
  • Docs
    • improve RTSS and UnifiedShader docs
    • RTSS - fix references to SRS_* briefs
  • Tests: fix stencil glow on Mesa GLES
  • Samples
    • ShaderSystem - fix crash on toggling per pixel fog
    • Terrain - add mipmaps to compressed textures

v13.6.4

1 year ago
  • Main
    • LiSPSMShadowCameraSetup::create - actually forward the params
    • Mesh - actually only trigger assertion in debug mode
    • Resource - call prepareResource() before loading an unprepared manual resource
    • SceneManager - fix docs, all movable objects auto-detach
  • Tools
    • MeshUpgrader - avoid assertion in ~Mesh
    • XMLConverter: XMLSkeletonSerializer - use correct bone handles for createNodeTrack()
  • STBICodec: update embedded STB Image
  • D3D9: fall back to SO_GOURAUD for SO_PHONG
  • GL3Plus: always delete the VAO
  • Vulkan: fix hashing of shader stages
  • Tests: set a longer timeout for CTest

v13.6.3

1 year ago
  • Main
    • CompositorInstance - fix auto-sorting custom render passes
    • CompositorInstance - improve render_queue error message
    • Mesh - try to detect improper use instead of crashing
    • setBonesUseObjectSpace - use the passed value
  • RTSS
    • cook torrance - forward surface alpha
    • Do not add the gl_PerVertex block when writing the shader.
  • CMake: Use all available processor cores to build dependencies
  • GLSupport: EGL - always derive new config on X11
  • Samples: DeferredShading - fix gbuffer depth on GL

v13.6.2

1 year ago
  • Main
    • GpuProgramParameters - do not set variability in clearAutoConstant
    • move RSC compatibility check to useCustomRenderSystemCapabilities
  • Assimp
    • set emissive to 0 when using an emissive map
    • support loading embedded textures
  • GL: RenderToVertexBuffer - fix detection of GLSL shaders
  • GLSupport
    • EGL - fix multi-window operation
    • fix requested version of GL context
  • Docs: BuildingOgre - the install step is not really optional
  • Samples: DeferredShading - fix assert in detachFromParent
  • Tests: correctly report skipped tests
  • Tests: DotSceneTests - fix shutdown

v13.6.1

1 year ago
  • Main: range loop refactoring (#2740)
  • GLES2
    • better handle the case where we dont have texture_border_clamp
    • Emscripten: dynamically switch to WebGL2, if possible
    • Emscripten - add override annotations
  • RTSS: fix parsing triplanarTexturing params
  • Samples
    • Character - use depth shadows
    • remove no longer existing resource location

v13.6.0

1 year ago

Highlights

  • Image Based Lighting provided by the RTSS
  • Terrain shaders generated by the RTSS
  • significantly improved shadowing quality
  • Rust based image codec
  • Compute shader & UAV support for D3D11

What's Changed

  • Main
    • Implement a fallback for Ogre::Font::getGlyphInfo() (#2689)
    • add scripting support for unordered image access
    • assert that object was attached when detaching
    • auto-instancing - improve case when overwriting TEXCOORD1 in mesh
    • ConvexBody - deprecate logInfo()
    • correctly export typeinfo for Vector
    • deprecate TUS::hasViewRelativeTextureCoordinateGeneration
    • ETCCodec - fix handling unsupported formats
    • factor out logMaterialNotFound
    • fix array autoconstant corruption with CONFIG_DOUBLE
    • HardwareBufferManagerBase - drop makeBufferCopy
    • improve error message, when there is no active CompositorChain
    • LiSPSM - drop obsolete workaround
    • make normal textures available to compute shaders
    • MeshSerializer.exportMesh - organize overloads and support MeshPtr
    • NumericAnimationTrack - const correctness and inline accessors
    • PF_R11G11B10_FLOAT is not native endian
    • provide numMipMaps in ACT_TEXTURE_SIZE .w
    • range loop refactoring (#2686, #2697, #2708, #2716, #2727, #2732)
    • remove unused iterator instantiations
    • rename TU_UAV to TU_UNORDERED_ACCESS
    • Script - rename unordered_access > unordered_access_mip
    • ShadowRenderer - cull cam must be updated after pose is set
    • ShadowRenderer - fix shadow culling frustum getting stuck
    • ShadowRenderer - use shadow pancaking, if possible
    • Texture - support alternative cube face naming and recommend it
    • update precompiled header
    • validate TextureUnitState TexCalc settings
    • validate texUnit against caps in _setTextureUnitSettings
    • Revert "Quaternion - always use float storage"
    • Fix compiler errors when OGRE_CONFIG_THREADS is set to 1
  • UnifiedShader: add textureCubeLod
  • Dependencies: update SDL2, Assimp
  • SWIG: wrap DefaultHardwareBufferManager
  • RTSS
    • add 2 argument callBuiltin overload
    • add Image Based Lighting SRS
    • allow creating structs in generated code
    • also redirect writes to globals on HLSL
    • correct handling of isTextureLoadFailing
    • FFPTexturing - move trivial blend functions to cpp
    • FFPTexturing - serialize late_add_blend by default
    • FFPTexturing - simplify env_map reflection
    • FFPTexturing - simplify env_map texcoord generation
    • FFPTexturing - simplify projective texturing
    • fix integer float mul, which GLSLES dislikes
    • IBL - assume hwgamma to correctly handle HDR envmaps
    • IBL - fix DFG LUT lookup
    • merge HLSL and CGProgramWriter
    • move serialization code to SGMaterialSerializerListener
    • normal mapping - apply tangent parity bit
    • refactor PBR lighting stages using a PixelParams struct
    • slightly update CookTorrance shader
  • Terrain
    • use RTSS to generate main & composite techniques
    • blendTerrainLayer - early out, if blending would have no effect
    • correctly blend normalmap layers
    • deprecate ReceiveDynamicShadowsDepth
    • do lighting in view space, matching the RTSS
    • do not cast dynamic shadows by default
  • Tools: AssimpConverter - also export RTSS sections in material
  • Plugins
    • Assimp - prepend mesh name to material
    • add new Rust Image Codec
  • RenderSystems: drop unused OgreMain includes
  • GL*
    • drop unused HardwareBufferManager::getStateCacheManager
    • slightly clean up StateCacheManager
    • unify more of GLSLProgramManagerCommon
  • GL3+
    • fix PF_R11G11B10_FLOAT support
    • StateCache - disable state caching that breaks multi-context use
  • GLES2
    • correctly enable TAM_BORDER, when possible
    • Remove "using namespace Ogre" from a header (#2690)
  • Vulkan
    • implement _setDepthClamp
    • implement HBL_NORMAL for HardwarePixelBuffer
    • implement SRGB support
  • D3D11
    • correctly handle PM_POINTS
    • enable support for PF_R11G11B10_FLOAT
    • follow the common unordered access API
    • implement _dispatchCompute and UAVs
  • D3D9
    • do not clamp texunits to FFP limits
    • Texture - correctly report number of mipmaps with TU_AUTOMIPMAP
  • Docs
    • AnimationTrack - fix duplicated and outdated note
    • update 13-Notes with 13.6 changes
  • Samples
    • disable DragLook for iOS at single place
    • Dot3 - show RTSS materials first
    • drop no longer used SampleLib_ReflectionMap
    • fix LightShafts after shadow camera changes
    • PBR - fix compilation with double precision
    • PBR - fix reflections with glTF2 and Filament
    • remove material export from ShaderSystem sample
    • ShaderSystem - replace ReflectionMap by IBL SRS
    • use new IBL cubemap and clean up IBL sample data
    • use RTSS for Examples/BumpMapping/MultiLightSpecular
  • Tests
    • add test for NumericAnimationTrack
    • Test Quaternion double precision
    • PlayPen - fix IntegratedPSSM test
    • allow taking screenshots, when run in SampleBrowser
    • shut down current test before starting the next

Development is funded by your contributions

If your company uses Ogre, consider supporting its development in return:

v13.5.3

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

v13.5.2

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

v13.5.1

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