Kanzi 3.9 alpha 1 release notes

New features

  • Main loop scheduler

    The MainLoopScheduler subsystem is responsible for the application main loop control flow, with support for extension through Stages and Tasks.

  • Prerelease of Kanzi Java API

    Introduced the first version of Kanzi Java API that provides access to the Kanzi native classes from Java. It uses patterns and conventions that are familiar to Java developers. This version exposes a subset of these subsystems:

    • Metadata

    • Property

    • Message metadata

    • Message

    • Object

    • Node tree

    • Resource management

    Some functionality, workflow, and the API is going to change in the future releases of Kanzi. Your feedback is very important to us and it helps us improve Kanzi. To send your questions, findings, and comments use the Kanzi Support Portal at support.rightware.com.

  • Data Driven Exclusive Activity Host

    Introduced the Data Driven Exclusive Activity Host node. Use a Data Driven Exclusive Activity Host node to create Activity nodes using a data source. For example, you can define the content of menus in a data source and use a Data Driven Exclusive Activity Host node to create the menus in your application.

    See Data Driven Exclusive Activity Host nodes.

  • Introduced new render passes

    • Use the Gather Lights Render Pass and Gather Nearest Lights Render Pass to collect Light nodes for lighting 3D nodes in a scene.

      ../../_images/gather-lights-render-pass.svg../../_images/gather-nearest-lights-render-pass.svg
    • Use the Node List Render Pass to filter and hold a list of nodes that you want to render using other render passes.

      ../../_images/node-list-render-pass.svg

    See Rendering.

  • Uniform bindings

    Uniform bindings in material types enable you to modify the values of shader uniforms without making changes to the shader code.

    See Uniform bindings.

    ../../_images/vertexphong-pointlightcolor-binding.png ../../_images/point-lights-in-preview-binding.png

Feature improvements

  • Redesigned the workflow and relationship between Activity Host nodes and their Activity nodes:

    • An Activity node is now a prefab and not a node under an Activity Host node that loads a prefab. As a result, you set in the Activity node itself the State Manager that defines the transition animations and registration of Activity nodes is no longer necessary.

    • An Activity Host node is now responsible for loading the resources used by its Activity nodes, instead of an Activity node itself.

    • An Activity node is alive only when it is active and during the animations to and from the active state.

    • An Activity Host node is aware of all its Activity nodes during its entire lifetime.

    • All properties that are required to make the decision about the activation of an Activity are now in the Activity Host node of that Activity node.

  • In the On Property Change trigger (OnPropertyChangedTrigger) added a boolean property IgnoreIdenticalValue. When enabled, that trigger Kanzi invokes that trigger only when the value of the property whose value the trigger observes changes. Disabled by default.

  • Messages sent by all types Animation Player components now contain the name of the Animation Player that sent that message.

  • When you use the file:// protocol to load a resource, you can now load that resource asynchronously using the acquireResourcesAsync method.

  • Improved the ForwardingAction class:

    • Introduced getArgument that enables you to retrieve the value of an argument of given property type from the forwarded message of the associated trigger.

    • Introduced applyResourceBindings that applies all resource bindings to their respective target items.

    In the migration guide, see Changes to the ForwardingAction class.

  • Improved the accuracy of the frame-rate limiter. If your device uses vsync, it is still recommended to disable the frame-rate limiter.

  • Added the Mirror and Mirror once texture addressing modes and changed the default value of the Addressing Mode property to Repeat. See Rendering content to composition targets.

  • Added the LinearTosRGB and sRGBToLinear binding functions that enable you to convert between linear and sRGB color spaces.

  • Introduced the Compose and Blit Pass render pass template. Use this template to blit a Composition Target Render Pass using a specific material. See Rendering content to composition targets.

    ../../_images/compose-and-blit-pass-create1.png ../../_images/compose-and-blit-pass-library2.png
  • The Kanzi material types FragmentPhongSkinned, FragmentPhongTexturedSkinned, VertexPhongSkinned, and VertexPhongTexturedSkinned now by default support skinning of meshes with up to 100 bones. See Setting the number of bones for a skinned mesh.

    ../../_images/vertexphongskinned-100.png
  • In Kanzi Studio you can now open a project in Windows Explorer from the context menu of a project tab. To learn more about working with multiple projects in Kanzi Studio, see Combining Kanzi Studio projects into a Kanzi application and Tutorial: Combine Kanzi Studio projects into a single Kanzi application.

    ../../_images/open-project-in-windows-explorer.png

Changes

  • Removed

    • KzcHashMap

    • KzcHashSet

    • KzcDynamicArray

    • KzcMemoryManager

    • kzs_time functions

    • KzuBoundingVolume

    • Legacy Render Pass (deprecated)

    • Fixed uniforms

    See Kanzi 3.9 alpha 1 migration guide.

  • Updated these third-party libraries:

Documentation

  • Added a tutorial that helps you learn how to set which UI elements in your application receive focus and how to move the focus between those elements using keyboard keys. See Tutorial: Move focus in an application.

  • Added a procedure that shows how to use a tile atlas. By using a tile atlas you can improve the performance of your application. See Using a tile atlas.

    ../../_images/telltalestextureatlas1.png ../../_images/preview-seatbelt1.png
  • Added a section that describes the different options for wrapping and truncating text in Text Block nodes. See Wrapping and truncating text in a Text Block node.

  • Updated the bindings reference to include instructions on how to use the matrix and vector constants in bindings. See Constants.

See also

Kanzi 3.9 alpha 1 migration guide

Known issues