Kanzi 3.9.9 release notes

Kanzi Engine Lua API

Kanzi Engine Lua API is a platform-independent interface to the Kanzi Engine using the Lua programming language. It allows you to create application and user interface logic in Kanzi Studio.

To learn how to use Kanzi Engine Lua API:

Animations

  • To set a Bezier interpolation in the Animation Clip Editor, you can now enter exact values for one or more Bezier handles. See Editing Bezier interpolation values.

    ../../_images/animation-clip-editor-edit-bezier-handles.png
  • In the Kanzi Studio user preferences, you can now choose whether you want to snap keyframe Bezier handles relative to a keyframe or the Animation Editor grid.

    ../../_images/animation-clip-editor-relative-snap.png

Bindings

You can now use Boolean, integer, floating-point, vector, color, and matrix types as any of the parameters of:

Kanzi Studio Preview

  • In the Preview Analyze mode, introduced:

    • Wireframe visualizations

      ../../_images/preview-analyze-wireframe.png
    • Visualizations of mesh vertex normals

      ../../_images/preview-vertex-normals.png
    • Improved visualizations of the Spot Light and Directional Light nodes

      ../../_images/preview-light-debug-visualizations.png

    See Analyzing your application in the Preview.

  • When using the Camera tool in the Preview, to select or deselect a 3D node, hold down Ctrl and click the left mouse button.

  • When using the Node tool in the Preview, to access the Camera tool, hold down Alt.

  • You can now set the Preview background color for each Kanzi Studio project. See Setting the background color of the Preview.

    ../../_images/project-properties2.png ../../_images/properties-project-preview-background-color.png

Kanzi Studio usability

  • Improved tooltips in Kanzi Studio:

    • You can now access feature and Kanzi Engine C++ API reference documentation from tooltips.

      ../../_images/enhanced-tooltips-create.png ../../_images/enhanced-tooltips-property.png
    • Tooltips now show the default and custom Kanzi Studio shortcut keys. For a list of the default shortcut keys and how to set custom shortcut keys, see Default shortcut keys.

      ../../_images/tooltips-shortcut-keys.png
    • You can now copy Kanzi Engine property type name in a tooltip.

      ../../_images/tooltip-copy-property-name.gif
  • Improved shader error reporting in Kanzi Studio:

    • When a shader source file contains errors, Kanzi Studio now:

      • Marks with red type the shader and the items which use that shader.

      • Shows the compilation error message in the tooltip.

      ../../_images/shader-source-file-errors.png
    • When you open in the Shader Source Editor a file that contains an error, Kanzi Studio highlights the line where that error appears.

Kanzi Studio user settings file

Kanzi Studio now creates a kzproj.user file to manage user settings independently from the main project file:

  • The main kzproj file functions independently of the user settings file.

  • By default, the .gitignore file in the project templates ignores the kzproj.user files.

  • Settings stored in a kzproj.user file include selection of items in windows, expansion state of items, and composition tabs.

Project templates

The Kanzi Studio project templates now include .gitignore files that make the Git version control system ignore the temporary and work files that do not belong in a Git repository.

Rendering

You can now use the Box and Sphere nodes as skyboxes. See Using an environment cubemap texture.

Trigger templates

In the Kanzi Engine C++ API, added interface to the TriggerTemplate that enables you to add Actions and conditions to a Trigger template.

Windowing

  • For Wayland backends, added the option to ignore the frame() events sent by the compositor, and process input immediately. This is useful, if compositor does not send frame() events properly. See Wayland input mode.

  • You can now programmatically set usage flags for the QNX Screen property. See QnxUsageFlags.

Kanzi Engine C++ API

Introduced the generateCone function for creating cone meshes.

Kanzi Java API

Kanzi Android framework (droidfw)

Kanzi Android framework (droidfw) now translates input events from the Android Automotive rotary controller to Kanzi navigation key events by default. This allows users to navigate the focusable nodes with a rotary controller. See Handling input from the Android Automotive rotary controller.

Boolean to string conversions

All conversions from Boolean to string values now result in lower case “true” or “false”. See Changes in Boolean to string conversions.

kzb version

Changed the version of the kzb file format to 27.1.

Documentation

Notable fixes

Kanzi Engine

  • Fixed the issue that caused Kanzi Engine to terminate or behave incorrectly when an activating Activity in a Parallel Activity Host or Exclusive Activity Host tried to deactivate itself with an On Attached trigger. (SDK-9148)

  • Fixed the issue where the getCameraNormalMatrix shader uniform binding function returned an incorrect matrix when the kzCameraNormalMatrix uniform has a translation component. (RENDERING-570)

  • In a 2D node, before the first layout pass, the Actual Width and Actual Height properties are now correctly set to 0.0 instead of inf. (RENDERING-589)

  • Fixed the issue that caused Kanzi to use wrong blend mode in a 2D node when the Blend Mode property value was updated at runtime. (RENDERING-597)

  • Fixed the issue that caused Kanzi to fail to reload a render target Texture after GPU resource had been invalidated. (RENDERING-669)

  • Fixed the issue that caused Kanzi Engine to terminate when using a simple Data Source binding in a Data Trigger condition expression. (SDK-8984)

  • Fixed the issue that prevented Kanzi from rendering the content texture of a Texture Brush that was previously rendered without a content texture. (RENDERING-683)

  • Fixed the issue in Texture Brush rendering that caused Kanzi to ignore changes in the Brush Vertical Tiling and Brush Horizontal Tiling property values. (RENDERING-675)

  • Fixed the issue that caused the kzWindowSize uniform to not equal the size of the screen node when it has an absolute size smaller than the frame buffer size. (RENDERING-415)

  • Fixed the issue that caused Kanzi to erroneously disable the shader binary cache for a target platform that does not support any binary shader formats. The shader binary cache only requires shader binary programs. (RENDERING-693)

  • Fixed the issue that caused the debug builds of Kanzi application to terminate abruptly when C++ exception occurs during execution, without displaying an error message. (SDK-9259)

  • Fixed the issue that caused Kanzi Android framework (droidfw)-based application to terminate when the user interacts with a KanziView without content. This issue occurred during the application startup. (ANDROID-516)

  • Fixed the issue that caused unhandled multitouch gestures to terminate a Kanzi Android framework (droidfw)-based application. For example, this happened when an Android view behind a partially transparent KanziView handled the gesture. (ANDROID-467)

  • The kzb Player now tries to terminate gracefully by handling the POSIX termination signals SIGINT and SIGTERM, instead of getting terminated by the operating system. (RENDERING-720)

  • In previous versions of Kanzi, in some cases, setting brush properties in a 2D node did not work. Kanzi determined the need to render a brush during the layouting phase, which caused only the property value set in the brush to affect the rendering result.

    For example, Kanzi failed to render:

    • A transparent or fully opaque color brush in a node that set the Brush Color property value to a non-transparent color.

    • A texture brush whose Brush Texture property was set to < No Texture >, or Modulate Color property was set to a transparent color.

    Now, Kanzi does the brush rendering decisions in the rendering phase and takes into account all sources of property values. See Changes to brush rendering.

    (RENDERING-402, RENDERING-596, RENDERING-677)

  • In previous versions of Kanzi, activating multiple morph targets sometimes caused the morph normals to degrade. To improve the normals, you can now use the KANZI_SHADER_USE_MORPH_NORMAL_LIMIT preprocessor define. See Using morph target normals. (RENDERING-322)

  • Fixed the issue that caused Kanzi Engine to reset morph weights to the default values for the morph mesh when you set the Model3D::MeshProperty. See Changes to morph weights. (RENDERING-748)

  • Fixed the issue that caused Kanzi to ignore changes in the value of the TimerTrigger::IntervalProperty after the trigger is attached. (FOUNDATION-504)

  • Fixed issues in graphics format configuration:

    • Kanzi no longer terminates when you attempt to set data for a texture using the GraphicsFormatD24_UNORM format.

    • Kanzi no longer reports ARGB formats as supported for use as a color attachment.

    • Kanzi no longer reports R16G16B16_UNORM as a supported format for use as a color attachment.

    (RENDERING-807)

  • Fixed the issue that caused Kanzi to terminate after returning from suspension when BlurEffect2D or ShadowEffect2D was used. (RENDERING-835)

  • Fixed the issue that caused Kanzi file protocol file:// to fail loading files with paths starting with ./ on Android. (ANDROID-611)

Kanzi Studio

  • Fixed the issue that caused Kanzi Studio to use absolute path of Kanzi Engine Java plugin files when exporting and importing kzb files. (ANDROID-380)

  • Fixed the issue that caused Kanzi Studio to terminate when you enter a high numeric property value. (SDK-9223)

  • Fixed the issue that caused the gl_FragCoord and kzWindowSize uniforms to be incorrect in the Kanzi Studio Preview at 100% zoom. (RENDERING-415)

  • In the Kanzi default physically-based material types, when you enable the KANZI_SHADER_RECEIVE_POINT_SHADOW preprocessor define, Kanzi Studio no longer fails to create a binding for the PointShadowMap custom property type. (RENDERING-626)

  • Fixed the issue that caused Kanzi Studio to duplicate the Enabled properties of 2D effects when you create multiple Default Effect Stack presets. (RENDERING-694)

  • Fixed the functionality to change the Preview zoom level by pressing the Shift and Alt keys, and holding down and dragging the left mouse button. (PRODUCT-293)

  • Fixed the issue that caused Kanzi Studio to terminate when you rename a property type that is used as a message argument. (PRODUCT-278)

  • Fixed several issues in shader handling:

    • Kanzi Studio now logs an error only for the primary shader compilation. This way, you see the most relevant error as the last one.

    • When you add, delete, or edit an included shader, Kanzi Studio now recompiles the primary shader.

    • When you undo the deletion of a shader source file, Kanzi Studio now restores the most recent content of that file.

    • Kanzi Studio no longer terminates when an #include directive uses the angle bracket syntax.

    (RENDERING-688)

  • Fixed the issue that prevented Kanzi Studio from preserving an absolute path that you paste as the Message Source of a Trigger or as the Target Item of an Action. (PRODUCT-234)

  • Fixed the issue that caused Kanzi Studio to log a shader parsing error when you import the Traditional Gauges factory content asset. (RENDERING-757)

  • Fixed the issue that made it possible to close the Project Merge tool accidentally in the middle of a merge. Kanzi Studio now asks you to confirm that you want to cancel the merge. (PRODUCT-232)

  • Fixed the issue that caused Kanzi Studio to show the Factory Content asset packages of a previously installed version of Kanzi Studio. (PRODUCT-287)

  • Fixed the issue that prevented the Preview from indicating with a mouse pointer icon that you can move a node to another cell in a Grid Layout 2D node. See Assigning nodes to cells in a Grid Layout node. (PRODUCT-338)

  • Fixed the issue that prevented Kanzi Studio from showing Render Pass icons in the Asset Packages window. (PRODUCT-341)

  • Fixed the issue in the Properties window that caused an expanded binding to collapse when you close the Operations menu. (PRODUCT-345)

  • Fixed the issue in the Node Components > Input Manipulators that prevented you from using the arrow keys to select values in the dropdown menus. (PRODUCT-317)

  • Fixed the issue that caused the Status Bar to be unresponsive and dimmed while Kanzi Studio is busy. (PRODUCT-365)

  • Fixed the issue that caused Kanzi Studio to terminate when you use a samplerBuffer uniform in a shader. (RENDERING-752)

  • Kanzi Studio installer now installs Visual C++ Redistributable for Visual Studio 2015-2022, instead of only Visual C++ Redistributable for Visual Studio 2017. (SDK-9072)

Kanzi Java API

  • Fixed the issue that caused Kanzi Java API to occasionally return a null Java reference for a valid C++ object, if the same C++ object was previously accessed by a different Java reference, and did not use explicit close or try-with-resource block. (ANDROID-560)

See also

Kanzi 3.9.9 migration guide

Known issues