バイナリシェーダーを使用すること¶
デフォルトでは、Kanzi はオンラインシェーダーを使用し、Kanzi Studio はそれをソースコードとして kzb ファイルにエクスポートします。ターゲットデバイスで Kanzi アプリケーションを起動すると、アプリケーションはドライバーを使用してシェーダーをロードし、コンパイルします。このコンパイルにより、アプリケーションのロード時間が長くなります。
キャッシュされたバイナリシェーダーを使うと、Kanzi アプリケーションのロード時間を短縮できます。
注釈
Kanzi 4.0 では、オフラインでコンパイルされたバイナリシェーダーはサポートされなくなりました。
シェーダーバイナリのキャッシュ¶
パフォーマンスに制約のあるプラットフォームでは、シェーダーのコンパイルによってアプリケーションの起動が大幅に遅くなり、ランタイムのパフォーマンスが低下する可能性があります。アプリケーションが必要とするシェーダーのセットを事前に格納したシェーダーバイナリキャッシュを使用できます。これにより、アプリケーションはランタイムにソースからシェーダーをコンパイルする必要がなくなります。
シェーダーバイナリをキャッシュするには、アプリケーション構成で:
シェーダーバイナリキャッシュを保存するディレクトリを設定します。ShaderBinaryCacheDirectory を参照してください。
キャッシングを有効にします。ShaderBinaryCacheEnabled を参照してください。
(オプション) ハッシュの衝突を防ぐために、開発中にアプリケーションを設定してシェーダーのソースコードを保存し、完全な文字列比較を行ってシェーダーが同一であることを確認できます。2つのシェーダーが同じハッシュ値を生成した場合、アプリケーションは警告をログに記録します。詳細は、ShaderBinaryCacheCollisionCheck を参照してください。
(オプション) アプリケーションが本番環境の準備が整ったら、シェーダーバイナリキャッシュを読み取り専用にすることができます。詳細は、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 プロパティが有効になっていることを確認してください。これはデフォルトの値です。