Tags
Creators
Details
2.3.2
Compatibility
Changes
Sparkle Morpher 2.3.2
Release date: 2026-11-01
This release adds a Vulkan bone-storage rendering path for Minecraft 26.2 and 26.3, fixes the animation engine issues found in the October audit, and repairs the first-person HUD and multi-instance native caching across all eight builds.
Highlights
- Vulkan bone-storage skinning (Fabric and NeoForge 26.2, 26.3): pose bone matrices are uploaded once per submit into a Vulkan storage buffer and consumed directly by the vertex shader, with a pooled buffer set and fence-based reuse. Covers world, first-person hand, model preview, outline and transparent passes; 26.3 uses the three-stage RenderPearl OIT path. A hidden-field ABI offset was corrected without changing the 144-byte per-bone layout.
- Animation engine audit fixes (all builds): production parsing now accepts string
loopvalues (true,hold_on_last_frame, case-insensitive);hermite_blendevaluates t²(3−2t) without pre-rounding;random_integeranddie_roll_integersample inclusive bounds, support reversed and full-width ranges, and sum dice in double precision;blend_via_shortest_pathgets a per-axis shortest Euler path for declared controllers; pending tail sounds dispatch before the event cursor resets; animation particle events emit once per sample from locator bones with a bounded queue. - Riding animation plans (all builds): each assembled model compiles its riding capabilities once, choosing the preferred authored clip for seated, straddle, pig and boat vehicles and falling back to compatible clips. Poses are never inferred from bone or rotation names.
- First-person HUD repairs (all builds): the vanilla bow HUD scale cancels only the extra bone amplification instead of normalizing the whole matrix; the HUD restores its own matrix, absolute bone pivot and head-base snapshots when animation sampling is paused; HUD world-pose reuse clears first-person head hiding before applying head tracking; the world pose cache is scoped to the current render frame. With the First-person Model mod, the HUD now invalidates the world pose in first person and evaluates its own due samples after the world consumes the tick. Legacy "Classic" HUD wording was removed from 32 language entries while keys and settings are preserved.
- Tweakeroo freecam compatibility (all builds): freecam camera surrogates share the body's UUID but no longer take over its model state, and spectator gating for rendering follows the real player.
- Multi-instance native cache (all builds): the native library cache is keyed by platform and SHA-256, so parallel instances and differing native builds no longer overwrite a loaded DLL. Concurrent installs of the same build reuse the winner's file, a locked corrupt digest directory falls back to a unique
instance-*subdirectory, and a failed native load now degrades to Java rendering instead of aborting configuration registration. - Held-item outline fix (Fabric and NeoForge 26.3): the held-item render path passed the entity id as an outline colour, adding a spurious outline to ordinary held items and head equipment. It now submits a zero outline colour.
- Action preset resource decoupling (all builds): the twelve general action presets moved to a dedicated
action_presets/ysm/animations/resource location with no fallback to the default model, so changing or deleting the sample model no longer affects general actions. The 1.21.1 TaCZ content is preserved. - Chinese localization review and settings cleanup: 1,360 keys per catalog were reviewed against the English source, producing 240 string corrections across the four Chinese catalogs; the legacy coloured hint bar in the model panel was removed. The GPU/compatibility render toggle and the Native SIMD policy picker were removed from general settings, with the Java Vector switch moved to developer settings.
- Peer and build infrastructure: peer TLS listeners restart correctly on Unix, concurrent peer asset cache accounting is race-free, compiler diagnostics were cleaned up, and CI now runs reproducible warning-fingerprint and full-regression matrices on Node 24.
Supported builds
Fabric and NeoForge are provided for Minecraft 1.21.1, 26.1.2, 26.2, and 26.3 (eight loader/version variants).
Notes
- The Vulkan bone-storage path applies to the four 26.2 and 26.3 builds only; 1.21.1 and 26.1.2 keep their existing OpenGL path.
- On NeoForge 26.2, the Vulkan backend still needs
earlyWindowControl=falseinconfig/fml.tomlplus the--graphicsBackend vulkanlaunch argument (upstream NeoForge limitation, fixed in NeoForge 26.3). - Vulkan rendering was validated on one AMD Radeon RX 5700 system on Windows; NVIDIA, Intel and Linux were not tested.
Verification
All eight variants passed clean native and CurseForge builds from clean working trees with build caching and task up-to-date checks disabled. The native builds ran the full test suite (9,484 tests, 0 failures, 0 errors, 49 skipped). No final in-game smoke test was performed for this release; the HUD repairs were additionally checked on a running Fabric 26.3 client, and the Vulkan path on the AMD system described above.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:jQtfvgHC:eonYUZcE"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:jQtfvgHC:eonYUZcE"
}

