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:
Complete the Lua tutorial. See Tutorial: Kanzi Engine Lua API basic use.
Get familiar with the general use of Kanzi Engine Lua API. See Using Lua.
Learn about the Kanzi functions that you can use in a Kanzi Lua script. See Kanzi Lua API reference.
Read the Lua programming language manual. See https://www.lua.org/manual/5.4/.
Animations¶
To set a Bezier interpolation in the Animation Clip Editor, you can now enter exact values for one or more Bezier handles. See Setting the easing function between keyframes.
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.
Bindings¶
You can now use Boolean, integer, floating-point, vector, color, and matrix types as any of the parameters of:
Arithmetic operations +, -, *, and /. See Arithmetic operators.
Math functions clamp, max (maximum), min (minimum), mod (modulo), pow (power), and rem (remainder).
Interpolation functions mix, step, linearStep, smoothStep, and smootherStep.
Kanzi Studio Preview¶
In the Preview Analyze mode, introduced:
Wireframe visualizations
Visualizations of mesh vertex normals
Improved visualizations of the Spot Light and Directional Light nodes
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.
Kanzi Studio usability¶
Improved tooltips in Kanzi Studio:
You can now access feature and Kanzi Engine C++ API reference documentation from tooltips.
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.
You can now copy Kanzi Engine property type name in a tooltip.
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.
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 thekzproj.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 sendframe()
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¶
Java classes now better resemble their C++ counterparts. See Changes to Kanzi Java API.
You can now use
@Factory
to annotate factory methods in custom types. See Creating a custom type.You can now read the Kanzi version number and string using the
KanziVersion
class and theDomain.getVersion
method.
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¶
Added instructions on how to create a debug visualization for a custom 3D node. See Creating a debug visualization for your 3D node type.
Added instructions on how to move Kanzi Engine C++ plugin code to your Kanzi Android framework (droidfw) application project. This allows you to simultaneously edit and build both the Kanzi application and the C++ plugin code in Android Studio. See Moving Kanzi Engine C++ plugin code to your application project.
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 definition. 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
andkzWindowSize
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 definition, 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)