Skip to content

Releases: JOML-CI/JOML

1.10.8

28 Jul 21:03
Compare
Choose a tag to compare

Fixes

  • Bring back dropped OSGi support - (#351)

1.10.7

12 Jul 18:11
Compare
Choose a tag to compare

Miscellaneous

  • Remove compile-time dependency on Kotlin Stdlib in published pom.xml - (#349) (9c6fcd4)

1.10.6

22 Jun 09:22
Compare
Choose a tag to compare

Breaking Changes

  • Matrix/Quaternion/Vector.get(Buffer) - respect Buffer ByteOrder (ff3a0f5)

The above is potentially a breaking change for you whenever you use JOML without disabling sun.misc.Unsafe support to get a matrix's, quaternion's or vector's components into a NIO Buffer whose byte order is not nativeOrder() (the default for NIO Buffers created via methods in the JDK's class library is always BIG_ENDIAN). If you use other means, like LWJGL, to create NIO Buffers, there will be no problem.

Additions

  • Many more Kotlin extension classes/methods - Thanks to @Peanuuutz (#323) (03cbd5e)
  • Math.toDegrees(float) overload - (9f67120)
  • Vector3.xy(Vector2) and Vector4.xy(Vector2) - (75d60fd)
  • Vector2/3/4L and Vector2/3/4Lc - (#340) (de9186c, 5799e75)
  • Vector4d/f multiply methods not taking dest argument - (18d6790)
  • Vector4f.set(Vector3dc) - (158c926)
  • Matrix.set(array)/.set(array, offset) - (#321) (3947657)
  • Matrix3/4/4x3.getEulerAnglesYXZ() - (#325) (d93db9b)
  • Matrix.getTransposedToAddress()/.setTransposedFromAddress(long) - (#329) (4072dff)
  • Make all org.joml.Math constants public - (#331) (4b55bac)
  • Vector4f.set(Vector3dc) - (158c926)
  • Vector4.xyz(Vector3), Vector4.xy(Vector2), Vector3.xy(Vector2) - (#336) (d475251, 75d60fd, bbc988e)
  • Vector2d(Vector3) constructors and Vector2d.set(Vector3) setters - (7dc7156)

Fixes

  • Matrix3f.get3x4(Buffer) - (#345) (933eb41)
  • Matrix/Quaternion/Vector.get(Buffer) - respect Buffer ByteOrder (ff3a0f5)
  • Quaternion.getEulerAnglesZYX() - Thanks to @56738 (#326) (cc58108)
  • Resetting matrix properties in Matrix4.set(col, row, v) and setRowColumn() - (#335) (8773210)
  • Matrix4.rotateXYZ/YXZ/ZYX() erroneously using dest matrix properties when this was affine - (eab54cb)
  • Vector4i(Vector3fc, float, int) constructor not setting 'w' component - (be7efd4)

Miscellaneous

  • Optimize various things - Thanks to @0x000006 (#334) (b36a5cc)
  • Change Matrix4f.set3x3(Matrix4f) to Matrix4f.set3x3(Matrix4fc) - Thanks to @NicBOMB (#344) (0f66b42)
  • Fix Quaternion.fromAxisAngleDeg() angle parameter JavaDocs - (#342) (52c7d15)
  • Refactor mentions of specific vector classes in JavaDocs - (422242d, 11734ad)
  • Optimize Matrix4f.rotateGeneric(Quaternionf) using fma
    when -Djoml.useFma is used - (f830b0c)
  • Avoid copying object fields in Matrix/Vector.set(Matrix/Vector other) if this == other - (ebe6de9)
  • Implement all equals() methods consistently - (da75414)
  • Document better which matrix properties imply which other properties - (afb0e79)
  • Optimize Vector matrix multiply methods taking into account matrix properties - (#337) (22d6fc1, 534d472, d3912cf, 72c45e4)
  • Mention order of M * v multiplication in all Vector.mul(Matrix) methods - (5b4d4c2)
  • Mark Matrix4/4x3.assume()/properties() with @MagicConstant - (b2d3c67)
  • Optimize Math.fastAtan2() - thanks to @0x000006 (#333) (9672295)
  • Rearrange Matrix4f fields - (ec0a6ed)
  • Migrate from Maven to Gradle for build/release - (cf78987, f477e8a, b75674d, 3539950)
  • Make Kotlin extensions usable/compilable - (#320) (1288c5d)
  • Switch to GitHub Actions (from Travis) for publishing - (4dcb53f)
  • Add experimental support for accelerated Matrix4f.mul(Matrix4f), Matrix4f.invert(), Matrix4f.transpose(), Matrix4f.set(Matrix4f), Quaternionf.mul(Quaternionf) via JVMCI - (4fe6e9d, 8e47794, e903fad, a8c326e, bbcd698, ebd13a3, 8bcc1b2, 09be171, 4fdf196, 9a172b1)

The above is currently only available in the org.joml:joml-experimental Maven artifact and has a few restrictions:

  1. The JVMCI code paths will only be enabled for the x64 architecture
  2. The following VM arguments must be passed at runtime to enable JVMCI:
-XX:+UnlockExperimentalVMOptions
-XX:+EnableJVMCI
--enable-preview
--add-modules jdk.internal.vm.ci
--add-exports jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED
--add-exports jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED
--add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED
--add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED
--add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED
--add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED
  1. It will not work when running the JVM with a debugger attached (JVMCI will not be enabled under an attached debugger - but the native methods are still registered in JOML and will then fail/crash at runtime)

However, the performance benefits are quite dramatic. E.g. Matrix4f inversion is almost three times as fast and Matrix4f multiplication almost 4.5 times as fast.

1.10.5

31 Aug 12:30
Compare
Choose a tag to compare

Breaking Changes

  • Rename Matrix4.projViewFromRectangle() to perspectiveOffCenterViewFromRectangle() - (8cc09c2)

Additions

  • Quaternion.mul(scalar) - (#316) (313e839)
  • Matrix2d.getTransposed([int, ]FloatBuffer)/getTransposedFloats() - (d99f4f0)
  • Matrix3d.getTransposed()/getTransposedFloats() - (d99f4f0)
  • Matrix3x2d.getTransposed()/getTransposedFloats() - (d99f4f0)
  • Matrix4d.getTransposed([int, ]FloatBuffer)/getTransposedFloats() - (d99f4f0)

Fixes

1.10.4

11 Feb 10:21
Compare
Choose a tag to compare

Breaking Changes

  • Remove non-const methods from Matrix4f/dc interfaces - those were in there by mistake (4d3a4f3)

Additions

  • Quaternion.getEulerAnglesZXY() - (1c1922f)
  • Quaternion.getEulerAnglesYXZ() - (f5ede55)
  • Matrix4.[set]perspectiveOffCenterFov() - (21db7f0, 82539ae)
  • Matrix4/4x3.translationRotateInvert() - (aad9dfc)
  • Matrix4.[set]perspectiveOffCenterFovLH() - (c88d4da)

Fixes

  • Intersection.intersect/testSphereSphere() - (#304) (1ba8c57)
  • Setting matrix properties in Matrix4.negateX/Y/Z() - (280d561)
  • Matrix4x3f.invert(Matrix4f) - m33 element was set to 0.0 instead of 1.0 (01ae4f0)

Miscellaneous

  • Remove unnecessary local variables and set all matrix fields in Matrix4/4x3.rotateTranslationInternal() - (#305) (489f439)
  • Enable FAST_MATH path for sin(float) - (#307) (984fae3)
  • Refactor Matrix4f element accesses to always use getter/accessor method - (2ef7a70)

1.10.3

08 Dec 18:07
Compare
Choose a tag to compare

Additions

  • Matrix4.tile(x, y, w, h) - to map a sub-cuboid of a ortho or perspective view (676c543)
  • Matrix4x3.mul3x3(elements...) - multiply by specifying individual matrix elements (21c14ae)
  • Matrix3/4x3/4.mapXYZ/...() - doing 90°/180°/270° rotations (and -1 scaling) without using sin/cos (c2beed4, f37e8d5, 3ced0b4, 1948aa9, 15b6c17, dea2ddb)
  • Matrix3/4x3/4.negateX/Y/Z() - (b6edd37, 3ced0b4, dea2ddb)
  • Matrix3/4x3/4.getEulerAnglesXYZ() - (1587fbc)
  • Quaternion.getEulerAnglesZYX() - (6fe925b)

Fixes

1.10.2

02 Sep 11:37
Compare
Choose a tag to compare

Breaking Changes

  • Matrix3dc.getRowColumn() parameter order - (#285) (71addb8)

Additions

  • FrustumIntersection.testLineSegment() - (#292) (3ca7519)

Fixes

  • Matrix.toString() not respecting joml.format.decimals option - (b559f05)
  • Matrix3dc.getRowColumn() parameter order - Thanks to @leacoleaco (#285) (71addb8)
  • Matrix4x3d.setFloats(index, ByteBuffer) not respecting provided index - Thanks to @leacoleaco (#286) (5f59006)

Miscellaneous

1.10.1

08 Mar 19:40
Compare
Choose a tag to compare

Additions

  • Reintroduce Intersectionf/d classes - temporarily moved to joml-primitives in the 1.10.0 release (51fd2fe)
  • Matrix4x3.scaleAround() - (0b464dc)
  • Matrix.set(int, Buffer) - (#281) (7fd5da7)

Fixes

Miscellaneous

  • Implement java.lang.Cloneable for all classes - (#279) (2236936)
  • Use Math.fma() in Matrix4.project() - (23fd272)
  • Fix JavaDocs of Matrix4(x3).arcball(..., dest) - (ffc5962)
  • Use Math.fma() in more Matrix4f.rotate*() methods - (b6f3bf9)

1.10.0

28 Dec 17:16
Compare
Choose a tag to compare

Breaking Changes

  • Geometry primitives classes and the Intersectionf/d classes have been moved to org.joml:joml-primitives under package org.joml.primitives. The change of package org.joml to org.joml.primitives for these classes was necessary because multiple modules in the Java 9+ module system (Jigsaw) cannot export the same package when one module also depends on the other for that same package. - (#274) (8211a8a)

Development (including release notes for the changes between 1.9.25 and 1.10.0) of those primitives are continued in the JOML-CI/joml-primitives repository. For this 1.10.0 release, see: https://github.com/JOML-CI/joml-primitives/releases/tag/1.10.0

Additions

Fixes

Miscellaneous

1.9.25

31 May 11:43
Compare
Choose a tag to compare

Breaking Changes

  • Unify AABB/Rectangle intersection test method names - Thanks to @pollend (#239) (#240) (582daa1)
    • rename AABB.test*() to intersects*()
    • rename Rectangle.intersects() to intersectsRectangle()
    • rename Rectangle.contains() to containsPoint()

Additions

Fixes

Miscellaneous

  • Make Matrix4f.rotateXYZ() take a Vector3fc - Thanks to @cry0genic (#226) (b2d980c)
  • Improve performance of Matrix4.set/get(column, row) using Unsafe - (3e016d3)
  • Add -Djoml.forceUnsafe option to force the use of Unsafe in MemUtil - (53c0245)
  • Improve performance of Matrix3.set/get(column, row) using Unsafe - (d024b83)
  • Do not include sources and gwt xml in Graal build - (7fdd55a)
  • Fix JavaDocs of methods returning this - (be76b05)