纹理 (Textures)

使用纹理在 Image 节点中显示内容,设置纹理材料的外观,并在 Texture Brush 画笔中显示内容。您可以从常见的图像文件格式创建纹理。

请参阅 图像 (Images)。

在 Kanzi Studio 项目中,图像文件位于 Library > Resource Files > Images。这些图像文件对应于您硬盘上的文件。当您修改硬盘上的文件时,Kanzi 会自动将修改应用于从该文件生成的纹理。如果您从硬盘中删除该文件,则无法在 Kanzi 项目中使用该文件。

../../_images/resource-files-images-defaulttextureimage.png

图像的加载时间取决于它们的大小和压缩率:

  • 图像大小 定义了将数据加载到 RAM 所需的时间。

  • 图像压缩 可以减小大小,但请记住,在您的应用程序可以使用图像之前,必须对其进行解压缩,这通常比加载原始数据要慢。使用原始图像格式时,通常可以实现最快的启动时间,其中数据被加载到 RAM 并发送到 GPU 内存。请参阅 图像压缩。

  • 纹理压缩 您可以在支持所选压缩算法的 GPU 设备上使用。使用压缩时,从 kzb 文件加载到 RAM 以及从 RAM 加载到 GPU 内存时的数据大小都较小。此外,保留的 GPU 内存也较少。根据目标硬件,使用纹理压缩可以减少加载时间。在使用纹理压缩之前,确保将您的目标平台支持您选择的纹理压缩格式。

    Kanzi 支持 ASTC、ETC 和 BCn 压缩格式。

    如果您的目标硬件不支持所选的纹理压缩算法,当您在目标设备上运行 Kanzi 应用程序时,Kanzi 会在日志中打印一条警告消息。Kanzi 会将您使用目标硬件不支持的压缩纹理格式的表面涂成黑色。

    请参阅 压缩纹理。

纹理类型

在 Kanzi 中可以使用这些纹理:

单一纹理使用单一图像作为纹理。

请参阅 使用单个纹理。

../../_images/single-texture.png

环境纹理贴图可用于将六个正方形的图像合成为一个纹理来表示环境反射。每个图像代表从立方体贴图对象的视点沿 x、y 和 z 轴六个方向之一的景象。

请参阅 使用环境纹理贴图。

../../_images/cubemap-texture.png

体积纹理使用单个 2D 图像来定义 3D 体积纹理,该图像由 3D 形状的许多横截面切片组成。此技术常用于烟雾、火焰或云等效果,在这些情况下,3D 数据会占用过多资源或难以通过程序生成。

请参阅 使用体积纹理。

../../_images/volume-texture.png

使用 Render Target Texture 将内容渲染到纹理或仅对应用程序的一部分应用抗锯齿。您可以像使用其他纹理一样使用渲染目标纹理。例如,您可以在 Texture Brush 中使用它,或在 Image 节点中用作图像。

请参阅 使用渲染目标纹理 和 在 Kanzi 中使用 OpenGL ES 3.0+。

../../_images/render-target-texture.png

使用 Cubemap Render Target Texture 将 Cubemap 渲染通道渲染到立方体贴图纹理。

请参阅 创建立方体贴图反射。

../../_images/cubemap-render-target-texture.png

您可以使用含半浮点和浮点数据的 .exr、.dds 和 .hdr 图像,以将 HDR 图像用于您的 Kanzi 项目。请参阅 设置纹理的颜色格式。

设置图像目标格式

当您将项目导出为 kzb 文件时,Kanzi Studio 使用原始图像的格式读取项目中的图像,并根据您为每个图像设置的 Target Format 属性的格式将图像写入 kzb 文件。

如果原始图像的文件格式与您在 Target Format 属性中选择的格式相同,Kanzi Studio 在将图像写入 kzb 文件时不会修改图像,条件如下:

  • Premultiply Alpha 被禁用,或者不需要对 alpha 通道进行预乘。

    要更改此设置,在 Project > Properties 中使用 Premultiply Alpha 属性。您可以在要使用不同设置的图像文件的属性中覆盖此值。

    ../../_images/premultiply-alpha-project.png ../../_images/premultiply-alpha-image.png
  • Generate Mipmaps 已禁用

    您可以在每个图像文件中设置 Generate Mipmaps 属性的值。

    ../../_images/generate-mipmaps-disabled.png
  • Round up Image Dimensions to Nearest Power of Two 属性已禁用。

    您可以在 Project > Properties 中设置 Round up Image Dimensions to Nearest Power of Two 属性的值。

    当您启用 Round up Image Dimensions to Nearest Power of Two 属性时,Kanzi Studio 会在 kzb 文件导出期间将项目中图像的宽度和高度向上舍入到最接近的二次幂。例如,Kanzi Studio 会将大小为 40 x 30 像素的图像以 64 x 32 像素的大小导出到 kzb 文件中。

    ../../_images/round-images-to-nearest-power-of-2-disabled.png

如果您的图像是 JPEG 或 PNG 格式,并且您不希望 Kanzi Studio 修改其导出到 kzb 文件的图像,请在图像 Properties 中启用 Use Original Image 属性。

../../_images/use-original-image-enabled.png

要设置图像目标格式:

  1. 在 Library > Resource Files > Images 中选择您要设置目标格式的图像。

    ../../_images/resource-files-images-defaulttextureimage.png
  2. 在 Properties 中,将 Target Format 属性设置为您要在 Kanzi 应用程序中使用的图像格式。

    您选择的格式很重要,因为这会影响 kzb 文件的大小以及您的 Kanzi 应用程序加载图像时的加载时间。确保您的目标设备支持您为图像选择的目标格式。请参阅 图像和纹理最佳实践 和 压缩纹理。

    ../../_images/target-format-astc-compression.png
  3. 如果您在上一步中选择的图像格式支持压缩,请配置要使用的压缩方案。请参阅 压缩纹理。

    ../../_images/astc-block-size.png
  4. 对于支持 sRGB 的图像格式:

    • 如果图像包含 sRGB 颜色信息,请将 sRGB Content 属性设置为启用。这是默认设置。

      如果您禁用包含 sRGB 颜色信息的图像的 sRGB Content 属性,Kanzi 渲染使用该图像的纹理时可能会比预期更亮。

    • 如果图像包含非颜色信息,例如法线、粗糙度或遮挡贴图,请将 sRGB Content 属性设置为禁用。

      包含非颜色信息的纹理以线性格式存储。通过禁用 sRGB Content 属性,您将 Kanzi 设置为直接将图像数据传递给着色器,而不执行颜色空间转换。

    ../../_images/srgb-content.png
  5. 如果您希望 Kanzi 在中预乘 alpha 通道:

    • 线性颜色空间,将 Linear Premultiply 属性设置为启用。

      这是默认值,并在 sRGB 图像中产生最少的伪影。

    • 图像的色彩空间,通常为 sRGB,将 Linear Premultiply 属性设置为禁用。

      对于为标准颜色工作流程创建的图像,这样可以获得更好的效果。

    请参阅 在第三方工具中准备图像。

    ../../_images/linear-premultiply.png

在 API 中使用纹理

有关详细信息,请参阅 Texture 类。

另请参阅

使用单个纹理

使用环境纹理贴图

使用体积纹理

使用环境纹理

使用基于图像的照明立方体贴图纹理

使用渲染目标纹理

创建立方体贴图反射

压缩纹理

颜色工作流程

图像和纹理最佳实践

资源管理

图像 (Images)

材质类型和材质

使用网格