バイナリシェーダーを使用すること

デフォルトでは、Kanzi はオンラインシェーダーを使用し、Kanzi Studio はそれをソースコードとして kzb ファイルにエクスポートします。ターゲットデバイスで Kanzi アプリケーションを起動すると、アプリケーションはドライバーを使用してシェーダーをロードし、コンパイルします。このコンパイルにより、アプリケーションのロード時間が長くなります。

キャッシュされたバイナリシェーダーを使うと、Kanzi アプリケーションのロード時間を短縮できます。

注釈

Kanzi 4.0 では、オフラインでコンパイルされたバイナリシェーダーはサポートされなくなりました。

シェーダーバイナリのキャッシュ

パフォーマンスに制約のあるプラットフォームでは、シェーダーのコンパイルによってアプリケーションの起動が大幅に遅くなり、ランタイムのパフォーマンスが低下する可能性があります。アプリケーションが必要とするシェーダーのセットを事前に格納したシェーダーバイナリキャッシュを使用できます。これにより、アプリケーションはランタイムにソースからシェーダーをコンパイルする必要がなくなります。

シェーダーバイナリをキャッシュするには、アプリケーション構成で:

  1. シェーダーバイナリキャッシュを保存するディレクトリを設定します。ShaderBinaryCacheDirectory を参照してください。

  2. キャッシングを有効にします。ShaderBinaryCacheEnabled を参照してください。

  3. (オプション) ハッシュの衝突を防ぐために、開発中にアプリケーションを設定してシェーダーのソースコードを保存し、完全な文字列比較を行ってシェーダーが同一であることを確認できます。2つのシェーダーが同じハッシュ値を生成した場合、アプリケーションは警告をログに記録します。詳細は、ShaderBinaryCacheCollisionCheck を参照してください。

  4. (オプション) アプリケーションが本番環境の準備が整ったら、シェーダーバイナリキャッシュを読み取り専用にすることができます。詳細は、ShaderBinaryCacheReadOnly を参照してください。

たとえば、次のいずれかを行います。

  • application.cfg 設定ファイルに、追加してください。

    # Set the shader binary cache directory to /tmp/shader-cache/.
    ShaderBinaryCacheDirectory = "/tmp/shader-cache/"
    
    # Enable the caching of shader binaries.
    ShaderBinaryCacheEnabled = true
    
  • Application::onConfigure 関数内のC++アプリケーションで、追加

    // Set the shader binary cache directory to /tmp/shader-cache/.
    configuration.shaderBinaryCacheDirectory = "/tmp/shader-cache/";
    
    // Enable the caching of shader binaries.
    configuration.shaderBinaryCacheEnabled = true;
    

シェーダーバイナリのキャッシュには、Kanzi Studio がシェーダーのソースコードを kzb ファイルにエクスポートする必要があります。Kanzi Studio の Project > Properties で、Export Shader Source Code プロパティが有効になっていることを確認してください。これはデフォルトの値です。

../../_images/project-properties.png ../../_images/properties-export-shader-source-code-enabled.png

関連項目

Kanzi アプリケーションのデプロイ

シェーダースイッチの削減

フラグメントシェーダーの最適化

リソースを並列でロードする

アプリケーションのパフォーマンスのトラブルシューティング

アプリケーション開発

アプリケーション構成リファレンス

エクスポートするシェーダーファミリーの設定