All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
5-r.5-beta.1.1 - 2026-02-19
- Fix clipping mask pre-processing by consolidating functions.
- Fix a bug where offscreen rendering results were not as expected when premultiplied alpha was disabled.
- Fix a bug where rendering results were not as expected when using Blend mode on semi-transparent objects.
5-r.5-beta.1 - 2026-01-29
- Add the
ICubismLoadFileFunctioninterface to allow users to implement custom file loading logic. - Add support for Blend mode and Offscreen drawing.
- Add
getMocVersionFromBuffer()function.- Support for retrieving MOC version from unsupported new MOC3 files.
- Change shader code to be used separately.
- Rename
CubismOffscreenSurfaceAndroidclass toCubismRenderTargetAndroid. - Change the API called to retrieve the drawable render order from
getDrawableRenderOrder()togetRenderOrder()in CubismCore.
- Remove unused
CubismShaderProgramsclass following the shader separation refactor.
5-r.4.1 - 2025-07-17
- Implement support for Android 16KB page size.
- See
CHANGELOG.mdin Core.
- See
5-r.4 - 2025-05-15
- Add an API to
CubismMotionJsonfor verifying the consistency ofmotion3.json. - Add a flag to the arguments of the following methods to enable the function that verifies the consistency of
motion3.json:CubismUserModel.loadMotion()CubismMotion.create()CubismMotion.parse()
- Add parameter repeat processing that connects the right and left ends of the parameter to create a loop, allowing the motion to repeat.
- Add the variable
isOverriddenParameterRepeatto theCubismModelclass for managing parameter repeat flags at the model level. - Add the variable
userParameterRepeatDataListto theCubismModelclass for managing parameter repeat flags for each parameter.
- Add the variable
- Add a
getPartParentPartIndices()function.
- Change the access level of the private members in the
CubismModelSettingJsonclass to protected. - Change the default JDK version for compilation to 17 using Gradle's Java toolchain.
- Fix an issue in the
CubismPoseclass where the opacity calculation for non-displayed parts differed from the implementation in the other Cubism SDK.
5-r.3 - 2025-02-18
- Add new motion loop processing that seamlessly connects the start and end points of the loop.
- The
isLoopedvariable has been moved from theCubismMotionclass to theACubismMotionclass asisLoop. - Add the setter for
isLoop,setLoop(boolean loop), to classACubismMotion. - Add the getter for
isLoop,getLoop(), to classACubismMotion. - The
isLoopFadeInvariable was moved from classCubismMotionto classACubismMotion. - Add the setter for
isLoopFadeIn,setLoopFadeIn(boolean loopFadeIn), to classACubismMotion. - Add the getter for
isLoopFadeIn,getLoopFadeIn(), to classACubismMotion. - Add a variable
motionBehaviorfor version control to theCubismMotionclass.
- The
- Change the compile and target SDK version of Android OS to 15.0 (API 35).
- Upgrade the version of Android Gradle Plugin from 8.1.1 to 8.6.1.
- Upgrade the version of Gradle from 8.2 to 8.7.
- Change the minimum version of Android Studio to Ladybug(2024.2.1).
- Change the arguments of
CsmMotionSegmentEvaluationFunction.evaluatefrom(float time, int basePointIndex)to(final List<CubismMotionPoint> points, final float time)to align with the Cubism SDK for Native codebase.- Accordingly, change the implementation of the following methods.
- CubismMotion.LinearEvaluator.evaluate()
- CubismMotion.BezierEvaluator.evaluate()
- CubismMotion.BezierEvaluatorCardanoInterpretation.evaluate()
- CubismMotion.SteppedEvaluator.evaluate()
- CubismMotion.InverseSteppedEvaluator.evaluate()
- CubismMotion.bezierEvaluateBinarySearch()
- Accordingly, change the implementation of the following methods.
- Change the access level of
CubismMotionQueueEntryclass to public.
- Deprecate the following elements due to the change in the variable declaration location.
CubismMotion.isLoop(boolean loop)CubismMotion.isLoop()CubismMotion.isLoopFadeIn(boolean loopFadeIn)CubismMotion.isLoopFadeIn()
5-r.2 - 2024-11-07
- Add function to get
CombinedParameterslisted incdi3.json. - Add the functionality to call a function when motion playback starts.
- Change an expression "overwrite" to "override" for multiply color, screen color, and culling to adapt the actual behavior.
- Change the access level of
CubismMotionJsonclass to public. - Change the threshold for enabling anisotropic filtering.
- Fix a bug in which a method to acquire events fired during motion playback returned incorrect values when called multiple times.
- Fix a potential problem with division by 0 when a pose fade time is set to 0 seconds.
- Fix a bug that thrown an exception when playing CubismExpresionMotion with CubismMotionQueueManager.startMotion().
5-r.1 - 2024-03-26
- Add type constraint to the generics type of
getRendererfunction inCubismUserModel. - Add function
modF()to compute floating-point remainder inCubismMathclass.
- Change the default value of the flag for debugging from
truetofalse. - Change to output log if the argument
motionQueueEntryisnullin theupdateFadeWeight()function of theACubismMotionclass.
- Deprecate the
fadeWeightvariable and thegetFadeWeight()function of theCubismExpressionMotionclass.- The
fadeWeightvariable of theCubismExpressionMotionclass can cause problems. - Please use the
getFadeWeight()function of theCubismExpressionMotionManagerclass with one argument from now on.
- The
- The
startMotion()function of theCubismMotionQueueManagerclass with the unnecessary second argumentuserTimeSecondsis deprecated.- Please use the
startMotion()function with one argument from now on.
- Please use the
- Fix a bug that caused incorrect weight values when expression motions were shared by multiple models.
- Change the way fadeWeight is managed for expression motions.
5-r.1-beta.3 - 2024-01-18
- Add exception catching and error logging handling when an exception is thrown while loading a JSON file.
- Change the compile and target SDK version of Android OS to 14.0 (API 34).
- Upgrade the version of Android Gradle Plugin from 8.0.2 to 8.1.1.
- Upgrade the version of Gradle from 8.1.1 to 8.2.
- Change the minimum version of Android Studio to Hedgehog(2023.1.1).
- Change the visibility of the
CubismPhysicsInternalandCubismPhysicsJsonclasses topublic.
- Fix an issue where models with a specific number of masks could not be drawn correctly.
- Replace deprecated notation in
build.gradle.
5-r.1-beta.2 - 2023-09-28
- Add final modifier to some private fields in
CubismModel.
- Change getter functions to get some data without
getIdManagerinCubismModel. - Change some private fields in
CubismModeltofinalvariable.
5-r.1-beta.1 - 2023-08-17
- Add the function to get the ID of a given parameter.(
CubismModel.getParameterId) - Add the
CubismExpressionMotionManagerclass.
- Change the minimum support version of Android OS to 5.0 (API 21).
- Unify Offscreen drawing-related terminology with
OffscreenSurface. - Change the visibility of the
CubismIdconstructor to package-private.
- Fix the structure of the class in renderer.
- Separate the high precision mask process from the clipping mask setup process.
- Fix a bug that the value applied by multiply was not appropriate during expression transitions.
- Fix a issue that
CubismIdManagerwas not used when retrievingCubismId.- Please use
CubismFramework.getIdManager().getIdto getCubismId.
- Please use
- Remove an unnecessary dependency from
build.gradle. - Remove several arguments of
drawMeshfunction.
4-r.1 - 2023-05-25
- Add some functions for checking consistency of MOC3 files.
- Add the function of checking consistency in
CubismMoc.create(). - Add the function of checking consistency before loading a model. (
CubismUserModel.loadModel())
- Add the function of checking consistency in
- Add some functions to change Multiply and Screen colors on a per part basis.
- Change access modifiers for methods in
CubismExpressionMotion. And also chenge it to non-final class, allowing it to be extended by inheritance. - Change to get opacity according to the current time of the motion.
- Refactor codes of cacheing vertex information in renderer.
- This change does not affect the behavior of this SDK.
- Fix a crash when specifying the number of mask buffers as an integer less than or equal to 0 in the second argument of
setupRendererfunction inCubismUserModel. - Fix the redundant process regarding the renderer to make the code more concise.
- Optimize a drawing process of clipping masks.
CubismClippingManagerAndroidclass has a flag to indicate whether mask textures have been cleared or not, and the texture clearing process is only called if they have not been cleared.
4-r.1-beta.4 - 2023-03-16
- Fix some problems related to Cubism Core.
- See
CHANGELOG.mdin Core.
- See
4-r.1-beta.3 - 2023-03-10
- Add function to validate MOC3 files.
4-r.1-beta.2 - 2023-01-26
- Add a description of type package to
README.md.
- Change Android SDK API level from 31 (Android 12) to 33 (Android 13).
- Change the name and package of the
CubismRectangleclass totype/csmRectto match SDK for Native. - Move constants related to debugging from
CubismFrameworkclass to the newly createdCubismFrameworkConfigclass. - Change implementation to hide
CubismJsonStringfrom shallow layers. The following functions are affcted by this change.getLayoutMapfunction inICubismModelSettingclassgetLayoutMapfunction inCubismModelSettingJsonclasssetupFromLayoutfunction inCubismModelMatrixclass
- Change the name and arguments of
createRendererfunction inCubismUserModel.- The
RendererTypeenumurator is abolished. Please generate a renderer you want to use by yourself and put it in the function as an argument.
- The
- Fix JSON data parsing process to improve performance.
- Fix a problem where
setClippingMaskBufferSizeinCubismRendererAndroidwould be thrown aNullPointerExceptionif there are no clipping masks in the model.
- Remove dependencies not to be used.
- Remove the unused method
getMotionMapinICubismModelSettingandCubismModelSettingJsonclass.
4-r.1-beta.1 - 2022-12-08
- Add support for high-precision masks.
- Implement to throw an exception when a user attempt to give null value to a setter method.
- Add API to allow users to configure culling.
- The number of render textures used can now be increased arbitrarily.
- The maximum number of masks when using multiple render textures has been increased to "number of render textures * 32".
- Change the visibility of field variables in CubismClippingContext class from private to public and remove the getter and setter methods.
- Change the specification of the logging functions in
CubismDebugso that they can take a format string as an argument.
- Change
radianToDirectionfunction inCubismMathso that an instance of CubismVector2 created by an API user is given as second argument, and the calculation result is stored in that instance and returned. - Change the type of cache variables for vertex information used in
doDrawModelfunction inCubismRendererAndroidandsetupClippingContextfunction inCubismClippingManagerAndroidfromMapto array.- The cost of converting
inttype toIntegertype (auto-boxing) that was incurred every frame was removed by this change.
- The cost of converting
- Fix
updateParticlesandupdateParticlesForStabilizationfunction inCubismPhysicsnot to create an instance of CubismVector2.
- New released!