使用二进制着色器

默认情况下,Kanzi 使用在线着色器,Kanzi Studio 会将其作为源代码导出到 kzb 文件中。在目标设备上启动 Kanzi 应用程序时,应用程序会使用驱动程序加载并编译着色器。这一编译过程会增加应用程序的加载时间。

使用缓存的二进制着色器缩短 Kanzi 应用程序的加载时间。

备注

Kanzi 4.0 不再支持离线编译的二进制着色器。

缓存着色器二进制文件

在性能受限的平台上,着色器编译会显著拖慢应用程序的启动速度并降低运行时性能。您可以使用预先填充了应用程序所需着色器集的着色器二进制缓存。这样,应用程序就无需在运行时从源代码编译着色器。

要缓存着色器二进制文件,在应用程序配置中:

  1. 设置要存储着色器二进制缓存的目录。请参阅 ShaderBinaryCacheDirectory。

  2. 启用缓存。请参阅 ShaderBinaryCacheEnabled。

  3. (可选) 为防止哈希冲突,在开发期间,您可以将应用程序设置为存储着色器源代码并执行完整的字符串比较,以确保着色器是相同的。如果两个着色器产生相同的哈希值,应用程序会记录一个警告。请参阅 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
    
  • 在 C++ 应用程序中的 Application::onConfigure 函数中,添加

    // 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 应用程序

减少着色器切换

优化片段着色器

并行加载资源

排除应用程序性能问题

应用程序开发

应用程序配置参考

设置要导出的着色器系列