Skip to content


Choose a tag to compare
@httpdigest httpdigest released this 03 Jun 19:08
· 969 commits to main since this release

Changes compared to 1.7.1:

Breaking changes:

  • renamed Matrix.*4x3() methods to Matrix.*Affine()
  • removed Matrix4.unproject() overload taking explicit 'view' and 'projection' matrices
  • changed Matrix4.origin() to not require 'this' to be affine
  • changed Matrix4.set3x3() to only modify the upper left 3x3 submatrix, unlike Matrix4.set(Matrix3f)


  • Performance improvement for all Matrix3/4.invert*() and .mul*() and other methods (See 0e29266 and 1d46507)
  • Performance improvement for transferring a matrix from/to a NIO buffer via new MemUtil class


  • FrustumIntersection now implements a version of the "temporal coherency" frustum culling algorithm layed out in section 2.5 of Efficient View Frustum Culling in addition to "plane masking"
  • added Matrix4.perspectiveLH(), .frustumLH(), .orthoLH(), .lookAtLH() - for left-handed coordinate systems, for example for people coming from Direct3D
  • added Intersection.intersectLineSegmentPlane() and .intersectLineLine()
  • added TrapezoidOrthoCrop - for implementing Trapezoidal Shadow Maps
  • added Matrix4.orthoCrop() and .trapezoidCrop() - to support Trapezoidal Shadow Maps
  • added Matrix4.projectedGridRange() - to support "Projected Grid" rendering
  • added Matrix4.perspectiveFrustumSlice() - to support Cascaded Shadow Maps
  • added Matrix4.frustumAabb() - to support Cascaded Shadow Maps
  • added Matrix4.arcball() overload with 'dest' matrix parameter
  • added Matrix4.invertAffineUnitScale()/invertLookAt() - for faster special-case matrix inversion
  • added Matrix4.invertFrustum(), .invertOtho() and .invertPerspective() - for faster special-case matrix inversion
  • added Matrix4.invertPerspectiveView() - for faster special-case matrix inversion
  • added Matrix4.mulOrthoAffine() and .mulPerspectiveAffine() - for faster special-case matrix multiplication
  • added Matrix4.translationRotateScaleMulAffine() - for faster special-case matrix composition/multiplication
  • added Vulkan compatibility to all applicable Matrix4 methods, such as ortho() and perspective()
  • added Matrix4.perspectiveFar(), .perspectiveNear()
  • added Matrix4.transformAab() - to support fast AABB/frustum culling
  • added Matrix4.originAffine() - was previously .origin()
  • added MemUtil - for faster copying between Matrix and NIO Buffers using sun.misc.Unsafe when available
  • added Vector.mul(), .add() with object and primitive overloads, where missing
  • added Matrix4.translateLocal(), .rotateLocal(), .scaleLocal() - for pre-multiplication
  • added Matrix3.rotateLocal(), .scaleLocal() - for pre-multiplication
  • added Matrix4.rotateAffine()
  • added Matrix4.unprojectRay(), .unprojectInvRay() - for ray picking
  • added getter methods for matrix elements for future Matrix subclasses not using primitive fields