Skip to content

v13.5.0

Compare
Choose a tag to compare
@paroj paroj released this 29 Oct 14:49
· 918 commits to master since this release

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: