v13.5.0
Highlights
- Implement Automatic Instancing
- Add support for GPU bone to world transform
- Non shadow-casting lights and PSSM integration
- Use Vulkan Memory Allocator
What's Changed
- Main
- add option to use object space bones
- AnimationState - use plain vector for BlendMask
- AnimationTrack - add sanity assert for pose animation
- DefaultDebugDrawer
- fix scale being applied twice to axes
- skip drawing root scene node
- ETCCodec - fix crash when loading PKM files
- fix LightAttenuationValue (#2569)
- Image - make trivial getters inline
- implement automatic SubMesh batching (SceneManager/ GpuProgram)
- inject GlobalInstancingDeclaration in SceneManager instead of RS
- InstanceBatchHW_VTF - range loop refactoring (#2612)
- Instancing - do not override getNumWorldTransforms if not needed
- make some error messages more specific
- Math
- assert that isNaN is potentially working
- float is always sufficient to generate a random number
- move OGRE_MAX_NUM_BONES to OgreConfig.h
- Pass - hide _getBlendFlags
- PixelBox - initialise all members
- PixelFormat - fix wrong PF_ETC2_RGBA8 size calulations
- PixelUtil - do not widen to size_t on return
- RenderSystem - provide default dummy video modes
- RibbonTrail - validate TrailLength
- SceneManager - inline mWorldGeometryRenderQueue accessors
- ShadowRenderer - do not create Materials that were never used
- use diffuse alpha in DERIVED_AMBIENT_LIGHT_COLOUR
- Zip - correctly forward filename to opened datastream
- drop unused pieces of InstancedGeometry
- get rid of internal SPFM_DELETE_T usages
- correctly handle self-assignment for various classes
- port compressed format loaders to new Codec API
- add AbstractNode::getString convenience method
- annotate code with override
- range-for loop refactoring (#2545, #2546, #2547, #2549, #2577, #2583, #2594, #2605, #2608, #2617, #2623, #2627, #2572)
- refactoring and some style fixing (#2580, #2543)
- use make_shared with StringVector & FileInfoList
- deprecate Image::getFileExtFromMagic
- deprecate Math::calculateTangentSpaceVector
- fully deprecate normalise_normals
- call createMicrocode statically
- BillboardChain - deprecate setDynamic in favour of setAutoUpdate
- RTSS
- add compatibility with automatic instancing
- add flag for highp interpolation
- add RenderState::getSubRenderState helper
- always match VS to PS interface
- CookTorrance
- allow injecting UV coords
- correct ambient and shadows
- do not depend on PSSM for shadowFactor handling
- use linear gamma & add PSSM_DEBUG
- DualQuaternion - move more code to shader
- fix transparency when using TVC_EMISSIVE
- get rid of now trivial FFPRenderStateBuilder
- GLSLES - force highp to avoid precision mismatch between VP/ FP
- GLSLProgramWriter - fix UniformBlock indentation
- HW Skinning
- avoid passing ViewProjMatrix
- take advantage of object space bone setting in main
- unify implementations
- improve parameter parsing
- LayeredBlending - add string based blendMode & sourceModifier API
- LinearSkinning - move more code to shader
- make available SRS types more discoverable & unify documentation
- NormalMap - move more computations to shaderlib
- NormalMap - we must normalise tangents & normals in VS
- per-pixel lighting - fix using PSSM3 with non casting lights
- RenderState - add helper to add template SRS by type
- replace FFPLib_Common by BuiltinFunctionAtom
- simplify SGX_ApplyShadowFactor_Diffuse
- deprecate SGScriptTranslator::getString
- drop superfluous addError calls when parsing scripts
- Terrain
- factor out TerrainSurface.glsl
- fix flipped eyeDir vector
- fix precision issues on GLES2
- make sure lod1RenderState gets params with FFP
- MaterialGenerator - deprecate layerDecl.elements
- use updateParams flow for LOD1 technique
- we must normalise the incoming normal for constructing TBN
- CI
- update NDK to latest LTS
- update to macos-11
- update windows build to vs19
- PIP: enable Vulkan on Windows & Linux
- CMake: Install pkgconfig file with mingw toolchain
- Java: disable more warnings for SWIG
- Overlay: BorderPanel - size computations should always be in float
- GLES2: EAGL - dynamically use GLES3 if possible
- GL*: factor out applyGlobalInstancingDeclaration
- GLSupport: allow using pre-GLVND setups again
- GLSLang
- fix static linking against the plugin
- ignore warnings in upstream headers
- ParticleFX: hide all symbols
- PCZSceneManager - fix clearScene by using parent impl
- Vulkan
- add PF_R5G6B5 support
- avoid VK_FORMAT_D32_SFLOAT_S8_UINT
- correctly handle PF_DEPTH24_STENCIL8
- do not pull vulkan headers into plugin
- port to Vulkan Memory Allocator
- use float for depth values as others
- STBICodec - port to new Codec API
- EXRCodec: port to new Codec API
- FreeImageCodec: port to new Codec API
- Docs
- add DotScene to Manual
- add rationale for OGRE_MAX_NUM_BONES
- fix some typos
- high level programs - refactor to include Vulkan GLSL usage
- improve AutoConstantType documentation/ formatting
- improve Instancing documentation
- Renderable - document new getBonesUseObjectSpace behaviour
- Tutorials - simplify the boostrap code
- use the new SRS_ RTSS constants in sample code
- Samples
- add automatic HW Instancing
- Browser - globally enable object space bones for testing
- Compositor DoF - fix shader for GLES2
- Context - use initApp on iOS too
- fix building sample browser on OSX
- fix too close near plane
- InstancedViewport - fix vertex attributes to work with Vulkan
- Instancing - slight cleanup of technique handling
- RTSS - correct specular for cook torrance & point light tweaks
- RTSS - replace vertex lighting by cook torrance
- SegmentedLights - params are already in world space
- ShaderSystem - fix layered blending demo
- Terrain - disable anisotropic filtering on Android
- hardcode CFBundleVersion for iOS in Info.plist
- Tests
- add KTX loading test
- add Light AnimableValue test
- also test PKM and ASTC loading
- Context - copy core media on iOS as well
- move PVR file loading to unit tests and run them on Linux
- PlayPen - disable anisotropic filtering
- TestContext - replace ad-hoc parsing of Video-Mode
Development is funded by your contributions
If your company uses Ogre, consider supporting its development in return: