Kanzi 3.9.6 release notes¶
New features¶
You can now add geometry and tessellation shaders to a material type. See Using geometry shaders and Using tessellation shaders.
Feature improvements¶
Introduced advanced color blending modes. See Advanced color blending modes.
Source
Destination
Result
Introduced these ARGB graphics formats:
GraphicsFormatA8R8G8B8_SNORMGraphicsFormatA8R8G8B8_UINTGraphicsFormatA8R8G8B8_SINTGraphicsFormatA16R16G16B16_UINTGraphicsFormatA16R16G16B16_SINTGraphicsFormatA16R16G16B16_UNORMGraphicsFormatA16R16G16B16_SNORMGraphicsFormatA16R16G16B16_SFLOATGraphicsFormatA32R32G32B32_UINTGraphicsFormatA32R32G32B32_SINTGraphicsFormatA32R32G32B32_SFLOAT
You can now define the surface format, filtering, and clear color for the render targets generated by
NodeEffectRenderer2D.Kanzi Java API improvements:
Added to the
KanziObjectclass thetryCreateObjectRef(Class<>)function that attempts to create an owningObjectReffor anyKanziObject. You can use it to avoid throwing aStaleObjectExceptionwhen an object is stale. See Managing instance lifetime.Added to the
TextResourceclass functioncreate(Domain domain, String name, String value)thevalueparameter that enables you to create aTextResourcewith a value.Added the
ColorWorkflowenum withLegacyandLinearvalues to represent the color workflow in use. Added to theDomainclass thegetColorWorkflow()function that returns the currentColorWokflow.Added to the
BitmapImageclass thepremultiplyAlpha()function that premultiplies the color and luminance channels with the alpha channel.Modified the
ResourceManager.LoadTaskandResourceManager.ProtocolHandler.Resulttypes to use strongObjectRefinstances for tracking resources. See Changes to Kanzi Java API Custom Resource Manager Protocol.Added to the
ResourceManagerclass thesetDefaultMemoryStrategy(MemoryStrategy)andgetDefaultMemoryStrategy()functions that can control the Resource Manager memory strategy.Added to the
Node2Dclass thegetWorldTransform()andtransform()functions.Added the
TaskDispatcherclass that enables you to dispatch tasks to the Kanzi UI thread from other threads.You can now access the
ResourceDictionaryclass from Java.Added to the
Nodeclass these methods to access the Resource Dictionary of a Node:Node.getResourceDictionary()Node.acquireResourceDictionary()Node.setResourceDictionary(ResourceDictionary)Node.setResourceDictionary(ResourceDictionary)Node.notifyResourceDictionaryModified()
Kanzi Android framework (droidfw) improvements:
Kanzi views now use independent input and focus management. This means that:
Input in one view does not have a direct effect on another view.
Focus overlays, such as modals, are restricted to their owning view.
This improvement changed the structure of the node tree in a Kanzi view. See Changes to accessing Kanzi Java API from Kanzi Android framework (droidfw) and Accessing the Kanzi Java and Kotlin API.
Improved startup performance by:
Changing the default
DeploymentQueueBudgetfor Kanzi Android framework (droidfw) applications to 5 milliseconds per frame. See DeploymentQueueBudget.
Improving the utilization of
DeploymentQueueBudgetper frame for loading of dependencies.
When its reference count drops to zero,
KanziRuntime.Referencenow automatically releases its payload, if you do not close it manually.
Kanzi Studio now shows more details, including callstack, for runtime errors in Java plugins.
Introduced to the
ActivityCodeBehindclass callback methods for Activity status changes. These methods make it easier to define the behavior of Code Behind when the state of the Activity changes.The updated Activity Code Behind template replaces the use of
registerStatusChangeOverridewith the new methods.Added the Data Context property as a frequently used property of the Data-Driven Exclusive Activity Host.
In the Activity Browser, you can now:
Add Activity Hosts directly under other Activity Hosts.
Add more than one Activity Host under an Activity.
Delete a manually added Activity of a Data-Driven Exclusive Activity Host.
Toggle automatic layout of items by clicking
.Change the order and parent of Activity or Activity Host, by dragging that item in the Activity Browser. See Changing the order of nodes and Changing the parent of nodes.
You can now use the Viewport 3D node in Kanzi Studio. The Viewport 3D node enables you to render 2D nodes in a 3D scene. See Using the Viewport 3D node.
You can now use the Write Log Action to print property and message argument values. See Using Write Log action.
In the Shadow Effect 2D effect, introduced the Override Shadow Offset property that enables you to set the offset of the shadow from the object along the x and y axes. See Using the Shadow Effect 2D effect.
Introduced in the
ShaderProgram::CreateInfoclass these functions that make it easier to use uniforms with shaders that you create in application code:void addUniformAndBinding(AbstractPropertyType propertyType)adds a uniform and the default render value binding for that uniform.void addUniformAndBinding(AbstractPropertyType propertyType, ShaderProgram::UniformTransformation transformation)adds a uniform and the default render value binding for that uniform with the transform function that you specify.void addFixedUniform(string_view name)adds a uniform and the default binding to a fixed uniform function with pass through transform.void addFixedUniform(string_view name, ShaderProgram::UniformTransformation transformation)adds a uniform and the default binding to a fixed uniform function with the transform function that you specify.
You can now use SPIR-V binary shaders on OpenGL targets. See Using binary shaders.
Introduced the
getCameraNormalMatrix()uniform binding function that gets the matrix to transform object normals to view space. See getCameraNormalMatrix.You can now use the Kanzi Engine API to create a
Meshfrom existing OpenGL buffer handles and query those handles from an existingMesh. See Creating a mesh from native handles.In the
Meshclass, introduced support for instancing:In
Mesh::CreateInfo, you can now define the instance buffer.In
MeshVertexAttribute, you can now set whether an attribute is per vertex or per instance.
The Kanzi FreeType and iType font engines now support word wrapping for Lao, Khmer, Myanmar, and Thai. Kanzi no longer requires Thai dictionary for the iType font engine to support word wrapping, but still supports it. See Customizing word wrapping in Thai text with iType font engine and Font engine dictionaries.
Added options for truncating text that does not fit in the available space of Text Block and Text Box nodes. You can now set whether you want to truncate text:
At beginning, middle, or end
Character by character or by entire words
See Wrapping and truncating text and Setting truncation in a Text Box.
In a multi-project setup you can now share between referenced projects Kanzi resource IDs that you create in the Screen nodes.
Added to the On Property Change trigger the Ignore Initial Value property. Use this property to set off a trigger only when the value of the monitored property changes after the trigger is already attached.
In the Factory Content Slider you can now set the style and size of the knob and rail. See Using the slider from the Factory Content.
You can now use multiline parameters when you run Kanzi Studio from the command line. See Setting property values using a script.
Changes¶
Kanzi now handles
SYN_DROPPEDevent according to the evdev specification.To improve build time and runtime performance, changed
kanzi::variantfromboost::varianttoboost::variant2. To migrate your Kanzi application, see Changes to kanzi::variant.To improve build time, removed unnecessary includes and now use more forward declarations. To migrate your Kanzi application, see Changes to header files.
Removed the Cotire CMake module from the Kanzi workspace. To migrate your application, see Changes to CMake configuration files.
Added support for Python 3 for building Kanzi applications with SCons.
In the Kanzi application framework (appfw) on Android:
Changed the
KanziView.isActiveView()method to make it available to the extending classes.Renamed input related values in
KanziNativeLibraryto match their native counterparts. See Changes to Kanzi application framework (appfw) input related values.
Kanzi Engine on Android platform is now using
std::strtof,std::snprintf, andstd::to_stringinstead ofKZ_USE_C99_SNPRINTF,KZ_EMULATE_STRTOF, andKZ_EMULATE_TO_STRING.Updated glslang to version 12.0.0.
Updated Android, Linux, QNX, and Windows platform packages to use:
Zlib 1.2.13
FreeType 2.12.1
This version of the library introduces an improvement in smooth rasterizer performance by more than 10%. In some cases, these changes introduce subtle differences to text rendering.
HarfBuzz 5.3.1
This version of the library introduces changes to text shaping, which in some cases can cause small differences in text layout.
Updated Integrity platform packages to use:
Zlib 1.2.13
FreeType 2.12.1
Deprecated the
KzsResourceFileclass for non-Android platforms. Use the functionality provided by theReadOnlyDiskFileclass.A
Nodenow knows theScreennode to which it is attached and can get theFocusManagerandInputManagerinstances from thatScreen. See Changes to focus and input management.Deprecated the
kzuEnginestructure and moved its functionality to theApplication,Node,ResourceManager, andScreenclasses. See Changes to KzuEngine.Changed the version of the kzb file format to 23.0.
Documentation¶
Added an example that shows how you can import Android resources with Kanzi Android framework (droidfw). See Android resources in Kanzi.
Added an example that shows how you can mix Android and Kanzi UIs in a Kanzi application. See Mixing Kanzi and Android UI.
Added instructions on how to use the Scroll View triggers. See Reacting to Scroll View scrolling.
Improved the instructions on different ways of activating Activities that a Data-Driven Exclusive Activity Host creates. See Data-Driven Exclusive Activity Host.
Added a topic that covers how to use the Activity Browser. See Using the Activity Browser.
Added instructions on how to enable memory mapping for loading kzb files on INTEGRITY. See Memory mapping files on INTEGRITY.
Modified these tutorials so that you can interact with the completed tutorial projects on your target device:
Notable fixes¶
ID |
Description |
Area |
|---|---|---|
300598 |
Fixed the issue that caused incorrect registration of click events in 3D nodes when using camera with orthographic projection and absolute coordinates. |
Kanzi Engine |
324230 |
Fixed the issue that caused a discrepancy in multiline bidirectional text rendering between iType and FreeType font engines in Kanzi. |
Kanzi Engine |
334589 |
Fixed the issue that prevented the data context bindings from functioning properly when you target a sub-object of a root data context. For example, |
Kanzi Engine |
395640 |
Kanzi no longer avoids clearing framebuffers when compositing 2D nodes. This improves performance on tiled rendering GPUs and fixes the issue that caused Kanzi to cut out part of a character in the text of a Text Block 2D node when you enable caching for that node. See Changes to brush rendering. |
Kanzi Engine |
428214 |
Fixed performance issues in bindings that use range property types. |
Kanzi Engine |
428303 |
Fixed the issue that caused the Preview to terminate when a Text Box node shows only overflow characters. |
Kanzi Engine |
431183 |
Fixed the issue where unapplying an Apply Property Action did not correctly restore the value of the Active Activity Index property. |
Kanzi Engine |
433346 |
Fixed the issue that caused a small offset in the rendering of 3D content when you apply a 2D effect to an ancestor of a Viewport 2D node. |
Kanzi Engine |
433605 |
Fixed the issue that caused the Click trigger to not contain any message arguments when the recognition of the click is triggered by the cancellation of a higher-priority input manipulator. |
Kanzi Engine |
436687 |
In a binding expression, casting to string a text resource that you get using the |
Kanzi Engine |
437894 |
Fixed the issues in touch input handling that caused Kanzi to:
|
Kanzi Engine |
438534 |
When handling resources with dependencies, Kanzi now handles |
Kanzi Engine |
441268 |
The Performance HUD now reports correct GPU memory usage when using 32-bit mesh index buffer. |
Kanzi Engine |
442127 |
Fixed the issue that caused Kanzi Android application that consists of an overlay scope to terminate. |
Kanzi Engine |
442298 |
Fixed the issue that caused incorrect rendering of the Shadow Effect 2D effect when you set the value of the Shadow Color property to a non-black translucent color. |
Kanzi Engine |
442592 |
Fixed the issue where changes to a data source were not immediately reflected in the active Activity under a Data-Driven Exclusive Activity Host. |
Kanzi Engine |
444596 |
Fixed the issue that caused |
Kanzi Java API |
416869 |
Fixed the issue that caused the Delete Unreferenced Items window to show auto-generated cubemap texture images even though they are used by your project. |
Kanzi Studio |
420138 |
Fixed the issue that prevented deletion of root node in the Activity Browser when you open a 3D Activity or Activity Host prefab in composition. |
Kanzi Studio |
420151 |
Fixed the issue that displayed |
Kanzi Studio |
440396 |
Fixed the issue that prevented styles from working with node components other than triggers. |
Kanzi Studio |
441717 |
Fixed the issue that prevented the Activity Browser from adding a root Activity Host after you rename the Screen node. |
Kanzi Studio |
442274 |
Fixed the issue that prevented renaming of Activity Hosts in the Activity Browser. |
Kanzi Studio |
444700 |
Fixed the issue that corrupted the |
Kanzi Studio |
445492 |
The Kanzi Studio Preview now uses JAR Kanzi Engine plugins with same build configuration as that which you set for the Preview. |
Kanzi Studio |
420292 |
Fixed the issue in the Factory Content Slider that caused a one-frame delay in the rendering of the slider rail. |
Kanzi framework SDK |
421869 |
Fixed the issue that prevented the Node2D plugin example from working on Android. |
Kanzi framework SDK |