The interactive file manager requires Javascript. Please enable it or use sftp or scp.
You may still browse the files here.

Download Latest Version joml-1.10.7-sources.jar (736.2 kB)
Email in envelope

Get an email when there's a new version of JOML

Home / 1.10.6
Name Modified Size InfoDownloads / Week
Parent folder
joml-1.10.6-sources.jar 2024-06-22 736.1 kB
joml-1.10.6.jar 2024-06-22 778.7 kB
1.10.6 source code.tar.gz 2024-06-22 773.0 kB
1.10.6 source code.zip 2024-06-22 898.8 kB
README.md 2024-06-22 9.2 kB
Totals: 5 Items   3.2 MB 0

Breaking Changes - Matrix/Quaternion/Vector.get(Buffer) - respect Buffer ByteOrder (https://github.com/JOML-CI/JOML/commit/ff3a0f54ad1823337136670f17cabb4692fcd4f9)

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 (https://github.com/JOML-CI/JOML/pull/323) (https://github.com/JOML-CI/JOML/commit/03cbd5e3bb23771b3c1f76630b7a4a847da94444) - Math.toDegrees(float) overload - (https://github.com/JOML-CI/JOML/commit/9f67120a6c4f47408b33ae8298ad33c60eee78e7) - Vector3.xy(Vector2) and Vector4.xy(Vector2) - (https://github.com/JOML-CI/JOML/commit/75d60fdad423942d14b2a5c1ca214f51df79bc7a) - Vector2/3/4L and Vector2/3/4Lc - (https://github.com/JOML-CI/JOML/issues/340) (https://github.com/JOML-CI/JOML/commit/de9186c00b3e10b6d99425669fdc26d6bba7bab1, https://github.com/JOML-CI/JOML/commit/5799e75558c34d2c562da260dd213f52871acaa9) - Vector4d/f multiply methods not taking dest argument - (https://github.com/JOML-CI/JOML/commit/18d6790e761f3747f9f25695356c2c5ac0fbf385) - Vector4f.set(Vector3dc) - (https://github.com/JOML-CI/JOML/commit/158c926320bf2cfbc5777fecea13d2d45547ce24) - Matrix.set(array)/.set(array, offset) - (https://github.com/JOML-CI/JOML/issues/321) (https://github.com/JOML-CI/JOML/commit/39476574772cbc97c130bae473ccebcbd8db5371) - Matrix3/4/4x3.getEulerAnglesYXZ() - (https://github.com/JOML-CI/JOML/issues/325) (https://github.com/JOML-CI/JOML/commit/d93db9b0035a48d70ed442f5785a5a6a23e4652a) - Matrix.getTransposedToAddress()/.setTransposedFromAddress(long) - (https://github.com/JOML-CI/JOML/issues/329) (https://github.com/JOML-CI/JOML/commit/4072dff14b1b632023bb194236e686981957829b) - Make all org.joml.Math constants public - (https://github.com/JOML-CI/JOML/pull/331) (https://github.com/JOML-CI/JOML/commit/4b55bac7c187a0b3372a000478c9bf1d103ad7db) - Vector4f.set(Vector3dc) - (https://github.com/JOML-CI/JOML/commit/158c926320bf2cfbc5777fecea13d2d45547ce24) - Vector4.xyz(Vector3), Vector4.xy(Vector2), Vector3.xy(Vector2) - (https://github.com/JOML-CI/JOML/issues/336) (https://github.com/JOML-CI/JOML/commit/d475251596b3204f7c616c71e7ca68b1e89dd3d0, https://github.com/JOML-CI/JOML/commit/75d60fdad423942d14b2a5c1ca214f51df79bc7a, https://github.com/JOML-CI/JOML/commit/bbc988e65c96829caa49926a6932948c84dfa49e) - Vector2d(Vector3) constructors and Vector2d.set(Vector3) setters - (https://github.com/JOML-CI/JOML/commit/7dc71568d6f59861366bc1a6ccecd878cdf8b472)

Fixes - Matrix3f.get3x4(Buffer) - (https://github.com/JOML-CI/JOML/issues/345) (https://github.com/JOML-CI/JOML/commit/933eb412bb19ce7b6f98062e1c94449c50d92dca) - Matrix/Quaternion/Vector.get(Buffer) - respect Buffer ByteOrder (https://github.com/JOML-CI/JOML/commit/ff3a0f54ad1823337136670f17cabb4692fcd4f9) - Quaternion.getEulerAnglesZYX() - Thanks to @56738 (https://github.com/JOML-CI/JOML/pull/326) (https://github.com/JOML-CI/JOML/commit/cc58108495af8bde176dad38042655cb04d037aa) - Resetting matrix properties in Matrix4.set(col, row, v) and setRowColumn() - (https://github.com/JOML-CI/JOML/issues/335) (https://github.com/JOML-CI/JOML/commit/8773210868b66e8e0fdb96284bd2124df3d77d59) - Matrix4.rotateXYZ/YXZ/ZYX() erroneously using dest matrix properties when this was affine - (https://github.com/JOML-CI/JOML/commit/eab54cb6118c3a8c326b9aea3ee4ee47efc46abf) - Vector4i(Vector3fc, float, int) constructor not setting 'w' component - (https://github.com/JOML-CI/JOML/commit/be7efd4db4e7272754761b4083e4b5987d690e70)

Miscellaneous - Optimize various things - Thanks to @0x000006 (https://github.com/JOML-CI/JOML/pull/334) (https://github.com/JOML-CI/JOML/commit/b36a5cc3fac2d9d58a3241ad6d6fc21bfdf299e3) - Change Matrix4f.set3x3(Matrix4f) to Matrix4f.set3x3(Matrix4fc) - Thanks to @NicBOMB (https://github.com/JOML-CI/JOML/pull/344) (https://github.com/JOML-CI/JOML/commit/0f66b420d9e3a27a6308605a0347a6e8f81563d9) - Fix Quaternion.fromAxisAngleDeg() angle parameter JavaDocs - (https://github.com/JOML-CI/JOML/issues/342) (https://github.com/JOML-CI/JOML/commit/52c7d151bd1fc13bdd5a0ecb9b97e97bbb41af82) - Refactor mentions of specific vector classes in JavaDocs - (https://github.com/JOML-CI/JOML/commit/422242d4b39479020f47831f0516aa916ed69cc6, https://github.com/JOML-CI/JOML/commit/11734ad6e754d6bffcec2d6369a092737cab74f1) - Optimize Matrix4f.rotateGeneric(Quaternionf) using fma when -Djoml.useFma is used - (https://github.com/JOML-CI/JOML/commit/f830b0c9c3d7817106751eac1387cd9cd5dff72d) - Avoid copying object fields in Matrix/Vector.set(Matrix/Vector other) if this == other - (https://github.com/JOML-CI/JOML/commit/ebe6de96dfe2696ddfb4e10c7d029977093a5fcb) - Implement all equals() methods consistently - (https://github.com/JOML-CI/JOML/commit/da75414e894c6772e73b6e2e8eca97259ab9dde1) - Document better which matrix properties imply which other properties - (https://github.com/JOML-CI/JOML/commit/afb0e79078ae7f52eae38fea0eaf050b59083902) - Optimize Vector matrix multiply methods taking into account matrix properties - (https://github.com/JOML-CI/JOML/issues/337) (https://github.com/JOML-CI/JOML/commit/22d6fc18a60d4d5adab4eddf04db58e6bb9cf2a9, https://github.com/JOML-CI/JOML/commit/534d472e7e3fdaf71f052e68fcc74fb4ad371af5, https://github.com/JOML-CI/JOML/commit/d3912cf1bc46d0f08b430ba53716f5ce1a0aa2ee, https://github.com/JOML-CI/JOML/commit/72c45e42b68dc520b9746269666f115c29089836) - Mention order of M * v multiplication in all Vector.mul(Matrix) methods - (https://github.com/JOML-CI/JOML/commit/5b4d4c2f7830eaee8834fad20e1bf24ea1965c50) - Mark Matrix4/4x3.assume()/properties() with @MagicConstant - (https://github.com/JOML-CI/JOML/commit/b2d3c672fa5cd17d5dc61f8eaf9eb34411aeef88) - Optimize Math.fastAtan2() - thanks to @0x000006 (https://github.com/JOML-CI/JOML/pull/333) (https://github.com/JOML-CI/JOML/commit/9672295b8f7ccfa916734e6419247cc60c04520c) - Rearrange Matrix4f fields - (https://github.com/JOML-CI/JOML/commit/ec0a6ed0915af7dbe06415c91b6628b83acad073) - Migrate from Maven to Gradle for build/release - (https://github.com/JOML-CI/JOML/commit/cf78987aed712fe5cc5ac66271f39895be5d7662, https://github.com/JOML-CI/JOML/commit/f477e8a073052549358575b89d990b47c766eff0, https://github.com/JOML-CI/JOML/commit/b75674db1aff7746195d07f1e781c7e5975a3d7f, https://github.com/JOML-CI/JOML/commit/3539950b98a2ceaa0c96683884c3a60714f348d2) - Make Kotlin extensions usable/compilable - (https://github.com/JOML-CI/JOML/issues/320) (https://github.com/JOML-CI/JOML/commit/1288c5d68240822cdf222cedb7c8cf179a0e1c4a) - Switch to GitHub Actions (from Travis) for publishing - (https://github.com/JOML-CI/JOML/commit/4dcb53f6a754e705799db7572594de5f401f970c) - Add experimental support for accelerated Matrix4f.mul(Matrix4f), Matrix4f.invert(), Matrix4f.transpose(), Matrix4f.set(Matrix4f), Quaternionf.mul(Quaternionf) via JVMCI - (https://github.com/JOML-CI/JOML/commit/4fe6e9db0a1a09de11229dca65cfba16cc74bffe, https://github.com/JOML-CI/JOML/commit/8e477944b52e61f98395c15d4544964e70b2d391, https://github.com/JOML-CI/JOML/commit/e903fadf1b201a4b4c3deff976ffbb777992c22a, https://github.com/JOML-CI/JOML/commit/a8c326e543a5350226339b5932874d426625743d, https://github.com/JOML-CI/JOML/commit/bbcd6980796f02ee3a20e766c375065538e62bbb, https://github.com/JOML-CI/JOML/commit/ebd13a3cd76d08507e1f425accf3b50c7bcea1e6, https://github.com/JOML-CI/JOML/commit/8bcc1b26d768fd8e78b8df32c0f431654f065fe7, https://github.com/JOML-CI/JOML/commit/09be17189482500f1592cf0cfff82ea471d5ab9e, https://github.com/JOML-CI/JOML/commit/4fdf196ae17362078fda2774660862886a1acfef, https://github.com/JOML-CI/JOML/commit/9a172b16babaa109ff183526b0b4c27d2f44e44e)

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.

Source: README.md, updated 2024-06-22