Kanzi 4.1.1 リリースノート

レンダリング

  • OpenGL および Vulkan バックエンドが内部のリソース管理に使用するメモリを削減しました。

  • OpenGL レンダースレッドがオペレーティングシステムのスレッド名を設定するようになり、デバッガー、プロファイラー、スレッド一覧で OpenGL Thread として表示されるようになりました。これは Vulkan レンダースレッドの既存の動作と同じです。

  • バインドレスレンダリングで、ノードに設定したマテリアルプロパティの値を Kanzi が適用するようになりました。ノードがマテリアルのプロパティをオーバーライドすると、Kanzi はそのノード用に個別の GPU 側マテリアルエントリを作成します。このオーバーライドは、同じマテリアルを使用する他のノードには影響しません。アプリケーションコードでこれらのエントリを管理するには、マテリアルをオーバーライドするノードを受け取る GPUScene::registerMaterial、GPUScene::unregisterMaterial、GPUScene::getMaterialIndex のオーバーロードを使用してください。

Kanzi Studio

  • Kanzi Studio は、別のプロジェクトに属するディレクトリ内に参照先プロジェクトを置いたままにしなくなりました。別のプロジェクトのディレクトリ内に保存されたプロジェクトを参照するプロジェクトを開くと、Kanzi Studio は Move nested referenced projects ダイアログで、そのプロジェクトを兄弟ディレクトリへ移動するかどうかを確認し、その内部を指していたすべてのパスを更新します。拒否すると、Kanzi Studio はプロジェクトを開きません。また、別のプロジェクトのディレクトリ内に保存されているプロジェクトをリファレンスとして追加することもできなくなりました。

    リファレンスとして追加するプロジェクトが自身のディレクトリ内に別のプロジェクトを含んでいる場合、Kanzi Studio はその別のプロジェクトについても同じ確認を行います。そこで拒否すると、Kanzi Studio は開いているプロジェクトはそのまま保持し、追加したプロジェクトだけを読み込まない状態にします。

    この移動はディスク上のディレクトリを変更するもので、元に戻すことはできません。また、ビルドスクリプト内のパスなど、Kanzi Studio の外部から移動したディレクトリ内を指すパスは更新されません。

    参照先プロジェクトの保存場所 および Kanzi 4.1.1 移行ガイド を参照してください。

  • Kanzi Studio は、開くプロジェクトのディレクトリ配下に複数のプロジェクトファイルが見つかった場合に、続行するかどうかを確認しなくなりました。この確認は別のプロジェクトのディレクトリ内に保存されたプロジェクトのためのものでしたが、Kanzi Studio は確認する代わりに、そのようなプロジェクトを兄弟ディレクトリへ移動するようになりました。開くプロジェクトのディレクトリに複数のルートプロジェクトファイルがある場合は、引き続き Kanzi Studio はそのプロジェクトを開けず、読み込みに失敗した時点でその旨を報告します。プロジェクトディレクトリ および 参照先プロジェクトの保存場所 を参照してください。

プラットフォーム

  • プラグインを動的に読み込むプラットフォームで、アプリケーションが動的 Kanzi Engine ライブラリを使用する場合、Kanzi のビルドは Lua プラグインを他の Kanzi ライブラリと一緒にアプリケーションの出力ディレクトリにコピーするようになりました。デプロイされたアプリケーションは、Lua を使用するkzbファイルを読み込むために、ライブラリ検索パスに Kanzi のインストールディレクトリを含める必要がなくなりました。

    Lua プラグインのデプロイ を参照してください。

  • QNX で、同じタッチポイントが同じフレーム内に複数のタッチイベントを受け取ると、Kanzi がタッチ入力を取りこぼす問題を修正しました。(INTE-1288)

Android

  • プロジェクトテンプレートは、他のオプションの Kanzi Engine プラグインと同様に、Lua プラグインを KANZI_LINK_KZLUA CMake オプションで制御するようになりました。Android では、Kanzi Engine プラグインはアプリケーションがリンクした場合にのみ APK に含まれるため、Lua を使用する Android プロジェクトでは、プロジェクトの kanzinative/build.gradle でこのオプションを有効にする必要があります。プロジェクトテンプレートの Android 構成では、デフォルトで有効になっています。

    Lua プラグインのデプロイ を参照してください。

注目すべき修正点

Kanzi Engine

  • 非有限値 (NaN または無限大) を持つ浮動小数点のトレースサンプルがトレースファイルに無効な JSON トークンを書き込み、ファイルが破損して Chrome tracing や Perfetto などのトレースビューアーで読み込めなくなる問題を修正しました。Kanzi は、トレースファイルの書き込み時に非有限の浮動小数点サンプルを省略するようになりました。(RENDERING-3096)

  • Kanzi が Kanzi Engine プラグインを読み込めない場合、エラーには、開こうとしたライブラリファイルの名前と、動的ローダーが報告したエラー (Windows では数値のエラーコード) が含まれ、プラグインライブラリをアプリケーションと一緒にデプロイする必要があることが示されるようになりました。以前のエラーはプラグイン名しか示さず、ライブラリがアプリケーションパッケージに含まれていないことはわかりませんでした。(ANDROID-2131)

  • Property Target Interpolator または Property Target Easing Interpolator が原因で、アプリケーションが無期限のサスペンド状態に移行できなかった問題を修正しました。Kanzi は、補間対象のプロパティがターゲット値に達して変化しなくなった後も、インターポレーターがアタッチされている間は、その補間を進行中のアニメーションとして報告していました。このため、ノードツリー内のどこかにインターポレーターが 1 つあるだけで、アプリケーションがフレームレートで起動し続け、CPU 負荷が増加していました。現在の Kanzi は、ターゲットに達した補間を進行中ではないと報告し、補間対象のプロパティに新しい値を設定すると、再び進行中として報告します。(FMW-1394)

    アプリケーションアイドル状態 を参照してください。

  • Kanzi がマテリアルタイプの Keep Alive Behavior プロパティを無視していた問題を修正しました。Kanzi が kzb ファイルから読み込むマテリアルタイプは、再びこのプロパティに従うようになりました。この問題は Kanzi 4.1.0 で発生しました。新しく読み込まれたマテリアルタイプは、プロジェクトの設定にかかわらず常に「キープアライブしない」になっていました。そのため Kanzi は、マテリアルタイプの最後のユーザーがそのマテリアルタイプを解放した時点でそのシェーダープログラムを解放し、次にそのマテリアルタイプを使用するときにシェーダーのコンパイルが発生していました。これは、アプリケーションがリソースをパージしたとき、およびアプリケーションが Optimize Memory ストラテジーを使用したときに発生していました。Kanzi がグラフィックスリソースを再作成するとき(たとえばグラフィックスコンテキストが失われた後)は、誤った位置からプロパティを読み取り、代わりに常に「キープアライブする」になっていました。したがって、マテリアルタイプが 2 つの値のどちらになるかは、Kanzi がそのマテリアルタイプを読み込んだ後にグラフィックスコンテキストが失われたかどうかに依存していました。この修正により kzb ファイルフォーマットのバージョンが 45.0 から 45.1 に変わるため、このバージョンの Kanzi Studio でプロジェクトを再度エクスポートしてください。Kanzi は想定しているフォーマットバージョンのみを読み込みます。(KANZIUX-841)

    Kanzi 4.1.1 移行ガイド を参照してください。

  • 1 つのクライアントアプリケーションのウィンドウがサーフェスを失った後に、Kanzi Android Service がサービスホストプロセスを終了させ、それに伴いすべてのクライアントアプリケーションも終了していた問題を修正しました。これは、たとえば 1 つのクライアントアプリケーションをバックグラウンドに移動してから、別のクライアントアプリケーションを操作したときに発生していました。Kanzi Android Service は、サーフェスが失われたクライアントアプリケーションの Kanzi ビューを使用中のままにしており、そのウィンドウのサーフェスを使用するとプロセスが終了していました。サービスホストのクライアントアプリケーションは、ホストと同じバージョンの Kanzi を使用して再ビルドしてください。(ANDROID-2130)

Kanzi Studio

  • メインプロジェクトのディレクトリ内にサブプロジェクトが保存されているマルチプロジェクトソリューションで、Save All の実行時に Kanzi Studio がフリーズしたように見え、Project modified ダイアログが表示されたり、サブプロジェクトの保存時にクラッシュしたりすることがあった問題を修正しました。(FMW-1319)

  • Kanzi インストーラーに Android Service application プロジェクトテンプレートが含まれていなかったため、Kanzi Studio にこのテンプレートが表示されず、Kanzi Android Service プロジェクトを作成できなかった問題を修正しました。インストーラーには、ホストサービスとクライアントアプリケーションの両方を備えたテンプレートが含まれるようになりました。(ANDROID-2113)

  • Kanzi Studio がエラー [NullGuard] applicationConfiguration is null でプロジェクトを開けなかった問題を修正しました。この問題は Kanzi Studio 4.1.0 で発生しました。この問題は、イメージベースドライティングのキューブマップテクスチャの生成された面またはラフネスミップマップがディスク上に存在しない場合に発生していました。Kanzi Studio はこの生成コンテンツを、デフォルトの .gitignore が除外するディレクトリに保存します。そのため、影響を受けるプロジェクトを新しくクローンすると必ず開けなくなる一方、そのプロジェクトを作成したコンピューターでは引き続き開くことができていました。現在の Kanzi Studio は、欠落しているコンテンツをソースイメージから再生成します。Kanzi Studio がコンテンツを再生成できない場合は、その理由を Log ウィンドウに報告し、プロジェクトを開きます。これは、たとえばソースイメージがプロジェクト内に存在しなくなった場合に発生します。(FMW-1355)

    Kanzi Studio は、プロジェクト内のすべてのイメージベースドライティングのキューブマップテクスチャのコンテンツを 1 回のパスで再生成するようになったため、このようなテクスチャを複数含むプロジェクトをより速く開けるようになりました。

    Kanzi でバージョン管理システムを使用する と イメージベースのライティングキューブマップテクスチャを使用する を参照してください。

レンダリング

ドキュメント

  • Kanzi Engine C++ API リファレンスで、loadShaderProgramCreateInfo が Kanzi でビルドされないシグネチャで記載されていた問題を修正しました。Kanzi 4.1.0 の API リファレンスでは、この関数が ReadOnlyMemoryFile と KzbMemoryParser の両方を受け取るように記載されていましたが、これは Kanzi がコンパイル時に除外するコードパスのシグネチャであるため、そのページに従って記述した呼び出しはリンクできませんでした。API リファレンスには、Kanzi がエクスポートするシグネチャが記載されるようになりました。(DOC-1065)

関連項目

Kanzi 4.1.1 移行ガイド

既知の問題