Kanzi 3.9.8 release notes¶
2D effects¶
Introduced the Effect Stack 2D effect that lets you apply multiple effects to a node. See Using multiple effects.
You can now use bindings in effects and publish properties from effect prefabs. See Customizing instances of a 2D effect prefab.
You can now set the Blend Mode in the Outline Effect 2D and Shadow Effect 2D effects.
For example, use the Multiply (advanced khr) blend mode to create more realistic shadows.
Activities¶
By default, when Kanzi virtualizes an Activity, it serializes the Activity properties of that Activity. When Kanzi unvirtualizes that Activity, it deserializes the Activity properties of that Activity and restores values of its Activity properties. You can now control this preservation of the UI state with these properties:
On deactivation of an Activity, the Preserve History property allows you to control the serialization of the values of Activity properties for that Activity and its child Activities.
On activation of an Activity, the Reset History argument of the Activate Activity message allows you to control the deserialization of the values of Activity properties for that Activity and its child Activities. You can use the same message argument with the Deactivate Activity message to control whether to serialize values of a deactivated Activity.
See Controlling virtualization.
For migration instructions, see Changes to the ActivityHostConcept API.
In the Kanzi Engine C++ API, improved the customization of Activity Host behavior. In your custom implementation, you can now override these functions:
Data-Driven Exclusive Activity Host:
DataDrivenExclusiveActivityHostImpl::onActivateActivityOverride
Parallel Activity Host:
ParallelActivityHostImpl::onActivateActivityOverride
andParallelActivityHostImpl::onNodePropertyChanged
Improvements to the Code Behind workflow in Kanzi Studio:
The Activity Browser now shows progress while Code Behind is being built.
Kanzi Studio now provides more details when building of Code Behind fails.
Android¶
Reduced the amount of auxiliary debugging information in debug libraries. This lowers the size of APK files, which enables you to deploy your application to target devices faster.
Updated the Android platform package and templates to support JDK 11 and 17. To migrate your Kanzi application, see Changes to the Android application templates.
Rendering¶
You can now control the rate at which a render pass updates its composition target. See Distributing the rendering of composition targets and Distributing the rendering of cubemap reflections.
Introduced the Cubemap Render Target Texture resource. You can now render a Cubemap Render Pass to a Cubemap Render Target Texture and set that texture as the cubemap texture of materials. See Creating cubemap reflections.
Shaders¶
You can now configure your application to cache shader binaries. Use the shader binary cache to improve Kanzi application performance on platforms where offline shader compilation tools are not available. See Caching shader binaries.
Windowing¶
Converted the X11 EGL graphics output API from C to C++ and improved the API.
Converted the Android Window Surface EGL graphics output API from C to C++ and improved the API.
For migration instructions, see Changes to the EGL API.
You can now use EGL graphics format ID to select EGL configuration. See EGLGraphicsFormatID.
Converted the Wayland EGL graphics output API from C to C++ and made these improvements to the API:
You can now set the Wayland shell that Kanzi uses. See Wayland shell.
Added support for the XDG shell and set it as the default.
For the IVI shell, you can set which IVI surface ID Kanzi uses. See Wayland IVI surface ID.
In the Kanzi Engine C++ API reference, see
wayland::DefaultWaylandEGLGraphicsOutput
.Introduced the Wayland IVI EGL graphics output API. By using this API, a Kanzi application makes use of IVI extensions to position its window on the screen.
Added several application configurations for the IVI extension. See Wayland IVI extension configuration.
You can use the API with the XDG and IVI shells.
In the Kanzi Engine C++ API reference, see
wayland::DefaultWaylandIVIEGLGraphicsOutput
.Changed the default values of the surface properties that set the sizes of the color channels and depth buffer, and the number of anti-aliasing samples. See Surface properties.
For migration instructions, see Changes to the default surface properties.
You can now set a priority hint for the EGL IMG context in the
application.cfg
file and on the command line. See EGLIMGContextPriority.You can now set the surface color space on the command line. See SurfaceColorSpace.
Input handling¶
Key event translation now preserves the operating system-specific raw key code:
KeyEvent
preserves the raw key code of a translated key event.KeyMapEventFilter
stores the raw key code of the translated key event.KeyRepeatGenerator
repeats both translated and raw key events.
Meshes¶
Introduced these functions that you can use to inspect an instanced
Mesh
at runtime:
Kanzi Studio usability¶
You can now remove a property and its associated To Source binding from a node by right-clicking the property in the Properties window and selecting Remove Property And Binding.
If you created a project using the Kanzi Studio project template, when you right-click Library > Build Configuration > <Build Configuration> and select Create Kanzi Application Directory Hierarchy, Kanzi Studio now copies to the project the application template from
<KanziWorkspace>/Templates/Basic_application
.When a Kanzi Studio project does not have a valid Android build configuration and you select File > Export > Build Android Package, Kanzi Studio now creates an Android build configuration in the Library > Build Configurations.
Kanzi Java API¶
Added to the
FontFamily
class theFontFamily.addFontFile
andFontFamily.getFontFile
functions.
kzb version¶
Changed the version of the kzb file format to 27.0.
Documentation¶
Added a tutorial that helps you learn how to create animated transitions between Activities. See Tutorial: Animate transitions between Activities.
Added a tutorial that helps you learn how to create UI navigation for your Kanzi application. See Tutorial: Create UI navigation for an application.
Added visual content to support the instructions for working with Trajectory Layout nodes. See Using the Trajectory Layout nodes.
Updated the Android Jetpack Compose example. Now, it also shows how to use Kotlin DSL for the Gradle files. See Jetpack Compose example.
Notable fixes¶
Kanzi Engine¶
Fixed the issue that caused Kanzi to clean up a GPU resource after destroying the graphics context. (RENDERING-185)
Fixed the issue that caused Kanzi to log
GL_INVALID_OPERATION
warnings when the GPU driver supports only GLES 2.0 and the GL_EXT_draw_instanced extension. (RENDERING-264)Fixed the issue that caused Kanzi to throw an exception when the GPU driver does not support multisample anti-aliasing. (RENDERING-271)
Fixed the issue where modifying the materials of a 3D node during runtime caused Kanzi to run needless notification handlers. (RENDERING-281)
Fixed the issue that in rare cases caused Kanzi to terminate when you import a 3D asset. (458240)
Fixed the issue that caused a Kanzi application that displays Thai text to terminate on Android. (INTE-164)
Fixed the main loop scheduler timers to use the system time for their start timestamp, instead of using the start timestamp of the Kanzi main loop. Timers that you create outside the Kanzi main loop frame now get a valid start timestamp. For example, timers that you create from the Android UI thread with Kanzi Android framework (droidfw). (ANDROID-383)
Kanzi Studio¶
Fixed the issue that caused Kanzi Studio to create duplicate log entries when importing invalid Kanzi Engine files. (ANDROID-266)
Fixed the issue that limited the number of new project templates. (SDK-8979)
Kanzi Android framework (droidfw)¶
Fixed the issue that caused Kanzi to trigger a long-press event prematurely when the application was suspended. (ANDROID-383)