Skip to content

Releases: JOML-CI/JOML

1.9.3

27 Apr 18:53
Compare
Choose a tag to compare

Breaking Changes

  • renamed Matrix4.mulAffineR(Matrix4x3) to .mul(Matrix4x3) - (13604ef)

Additions

  • Matrix4.rotateTowardsXY() - rotation around Z axis using X/Y base vectors (44e738b)
  • missing Vector3*c interface methods - (e804ca4, 1b0cab7)
  • Matrix3d.transform(Vector3f) - (1b0cab7)
  • Matrix4d.transformDirection(Vector3f) - (1b0cab7)
  • Quaternionf.transform(Vector3d) - (1b0cab7)
  • Vector3.mul(Matrix3d, Vector3f) - (1b0cab7)
  • Vector3/4.rotateAbout() - (1b0cab7)
  • AxisAngle4d.transform(Vector3f/4d) - (54ae6b7)
  • Matrix3.set()/get() - to set individual matrix elements (498a6ca)
  • Vector3.absolute() - (6d01be7)
  • Matrix4.setFromIntrinsic() - to build projection matrix from intrinsic camera properties (d6d6d9a)
  • -Djoml.format and -Djoml.format.decimals - (#113, 9eb908b)
  • Matrix3x2.shearX/Y() - (b87204e)
  • Matrix3x2.transform() - with vector components (b87204e)
  • Vector4.get(int) - (#116, 9d156aa)
  • Matrix3/4.rotateLocalX/Y/Z() - (7418ab3, 1703d19, 490f06a, 14f8764)
  • Matrix4.affineSpan()/Matrix3x2.span() - (28e132e)
  • Matrix3x2.*Local() methods - (13604ef)
  • Matrix4.mul(Matrix3x2) - (13604ef)

Fixes

1.9.2

24 Jan 15:29
Compare
Choose a tag to compare

Additions

Fixes

Improvements

1.9.1

01 Jan 11:31
Compare
Choose a tag to compare

Changes compared to 1.9.0:

Breaking Changes

  • remove -Djoml.noproxy - proxy instantiation in toImmutable() is now explicitly enabled via -Djoml.debug (e1032ac)
  • rename Vector3.set() to setComponent() - (#99)
  • Quaternion.scale() - now applies uniform scaling instead of spherical interpolation, so has the same geometric interpretation as (and is symmetric to) Matrix.scale() (14e89a5)

Additions

  • Vector2/4.setComponent() - (#99) thanks to @mfg92
  • Quaternion can now represent rotations and uniform scaling - (14e89a5, c74116c)
  • Matrix4x3.translationRotateMul() - (7987a28)

Fixes

Improvements

  • ensure maximum performance under JDK9 - (b551ede)
  • performance of Matrix4.rotateXYZ/YXZ/ZYX - (de40f9a)
  • building on JDK9 to produce 1.4 class files - (72a2b0d, dfc6444)

1.9.0

31 Oct 21:23
Compare
Choose a tag to compare

Changes compared to 1.8.6:

Breaking Changes

  • Intersection.testCircleCircle() now also returns true if one circle contains the other one
  • Removed TrapezoidOrthoCrop due to implementing a patented algorithm

Fixes

  • Quaterniond.fromAxisAngleDeg() was taking radians and not degrees - thanks to @bcdaughe (#98)
  • Maven plugin upgrades to build JOML under JDK9 - (ac5fcea)
  • various JavaDocs

Additions

  • New 'immutable views' on all JOML classes (vectors, matrices, quaternions) - (#52)
  • New sampling package for generating:
    • "Best Candidate" sample patterns on quad, disk and sphere
    • "Poisson" sample patterns on disk
    • "Spiral" sample patterns with equi-angular distribution on disk
    • "Stratified" sample patterns on an N times N strata grid
    • "Uniform"/random sample patterns on disk and sphere
    • Convolution class to generate (separable) Gaussian kernels
  • new system property -Djoml.debug - performs checks that direct NIO Buffers are used when -Djoml.nounsafe is not set and sun.misc.Unsafe is available
  • missing Quaternionf.fromAxisAngle*() - (7ebd0fe)
  • Matrix.getEulerAnglesZYX() - the reverse of Matrix.rotateZYX() (5901ae4)
  • Vector3.mulPosition/Direction(Matrix4x3) - (fc72745)
  • Matrix4x3d.get4x4(Buffer) - (65a08cd)
  • various overloads for Matrix methods taking other compatible classes as parameters - (1d3a2f2)
  • Matrix.setColumn/setRow() - (c8cd17d)

Improvements

  • system property -Djoml.fastmath now uses even faster and more accurate sin/cos approximation - thanks to @roquendm (cb0cb05)
  • performance improvements for copying between Vector and NIO Buffer - (3cbc166)
  • optimize Matrix4f copy constructors - (536143f)
  • optimize Vector2i/Vector3i.get/put() - (cb1fe8a)
  • optimize Matrix3f.scaling() and Matrix4/4x3f.translate() - (f5d2f32)

1.8.6

18 Oct 15:42
Compare
Choose a tag to compare

Changes compared to 1.8.5:

Fixes

  • Matrix3f.get(float[]) - when using Unsafe (b963cb7)

Improvements

  • optimize Matrix4f.getTransposed(Buffer) - (404dc25)
  • Use better sin/cos approximation - enabled when using -Djoml.fastmath (see the Wiki) (dc8c9de)

1.8.5

13 Oct 17:49
Compare
Choose a tag to compare

Changes compared to 1.8.4:

Fixes

Additions

  • Matrix.lerp() - as requested by #91 (7830e7c)
  • Vector2.distance() - with primitive parameters (5163f06)
  • Matrix.rotateTowards() - inverse of lookAt() without translation (7685a87)
  • Matrix4/4x3.translationRotateTowards() - rotateTowards() including translation (53394e7)
  • Quaternionf.getAsMatrix[4/3]f(Buffer) - fast serialization of a quaternion as a 3x3 or 4x4 matrix (79b7158)
  • Quaternionf.get(Matrix4x3)/.getAsMatrix4x3(Buffer) - represent a quaternion as a 4x3 matrix (2956e20)

Improvements

1.8.4

24 Sep 16:31
Compare
Choose a tag to compare

Changes compared to 1.8.3:

Additions

1.8.3

13 Sep 18:29
Compare
Choose a tag to compare

Changes compared to 1.8.2:

Breaking Changes

  • Rename Quaternion.lookRotate() to .lookAlong() (13af0bf)

Fixes

Additions

Improvements

  • various performance optimizations for transferring memory between matrices (especially for Matrix3f) and NIO buffers, and between matrices of different sizes (965deac, d632a65, a37270a, 0963677, 5fc289d)

1.8.2

31 Jul 15:20
Compare
Choose a tag to compare

Changes compared to 1.8.1:

Fixes

  • radius parameter in Intersection.intersectCircleCircle() and .intersectSphereSphere() (thanks to @Physiix) (see #85)
  • Matrix4.setTranslation() did not remove identity property (see c8ecbf7)
  • JavaDocs

Additions

  • Matrix4.rotateAround()/rotateAroundLocal() - applies rotation around a given rotation origin (see 3693f94)
  • Matrix4.scaleAround()/scaleAroundLocal() - applies scaling around a given origin (see ae87fbb)
  • Matrix4.translationRotate() - with uniform scale parameter (see e02b9e3)
  • Matrix4.translationRotateScale() - with uniform scale parameter (see 4a9ae73)
  • Matrix4.translationRotateScaleInvert() - with uniform scale parameter (see ae18a5a)
  • new system property "joml.nounsafe" to opt-out of using sun.misc.Unsafe (see 9be40bd)

Improvements

  • Performance improvements for Matrix4f.get(Buffer)/set(Buffer)/identity()/swap() (see 235aa12, 59bbaba, 23bbc19)

1.8.1

01 Jul 16:40
Compare
Choose a tag to compare

Changes compared to 1.8.0:

Breaking changes:

  • Matrix4.transpose3x3() now only modifies the upper-left submatrix (1968e40) - use-case: Matrix4.get3x3(Matrix3), transpose(), Matrix4.set3x3(Matrix3) for building billboard model transformations
  • renamed Matrix4.rotateAffineLocal() to .rotateLocal() (4875481)
  • disallow direct access to the fields in Matrix4. The existing mNN() accessor methods must be used now

Fixes:

  • Matrix4.set(AxisAngle) and .getColumn() (1da9732)
  • ambiguous rotation in Quaternion.rotateTo()/rotationTo() (0d9848c, be67325) - thanks to @sanjay900 for reporting ( #82)
  • various JavaDoc fixes

Additions:

  • Matrix4x3f/Matrix4x3d class for affine-only transformations
  • Matrix.transform*() overloads taking primitive floats as the input vector (64a94d6)
  • Quaternion.transform() overloads taking primitive floats as input vector (b8f4f41)
  • Matrix4d.getTransposed() and .get4x3Transposed() (af218ac, 14c41be)
  • QuaternionInterpolator classes (28985a3) - interpolation over a series of quaternions using SVD for skeletal animation
  • Quaternion.add() with primitive parameters (3c6f58c)
  • Vector3.rotationTo() (60d7912) - convenience for Quaternion.rotationTo() similar to OGRE3D's Vector3.getRotationTo()
  • Matrix4.lookAtPerspective()/lookAtPerspectiveLH() (4953e3b) - special-case method for applying look-at transformation to a perspective projection
  • Matrix4.set4x3(Matrix4) (fb22d0f)
  • Matrix4.translationRotateScaleInvert() (c8a8de7) - 2x performance improvement over special-case translationRotateScale().invertAffine()
  • Gradle build.gradle (1d77dad)

Improvements:

  • performance improvement for most Matrix4 methods by tracking common properties of a matrix and routing to specialized methods (4953e3b)
  • performance improvements for Matrix3.mul()/invert() (82ed59c)
  • performance optimization for Matrix4.set(Matrix4) (b2dd814) - thanks to @theagentd for reporting