应用抗锯齿功能

您可以对整个 Kanzi 应用程序应用抗锯齿,或仅对选定的节点应用:

  • 如果应用程序中的大部分内容需要抗锯齿,请对整个应用程序应用抗锯齿功能。请参阅 对整个应用程序应用抗锯齿。

  • 如果应用程序只有某些部分需要抗锯齿,请只对需要抗锯齿的那些部分使用采样功能:

    • 多重采样需要的计算更少,但并非所有硬件都支持功能。请参阅 使用多重采样。

    • 超级采样需要消耗更多的资源,但更多的硬件支持功能。请参阅 使用超级采样。

默认情况下,Windows 上的 Kanzi Studio Preview 和 Kanzi Application Player 使用 4 个样本应用抗锯齿。对于这两者,您可以配置要使用的抗锯齿数量。

请参阅 在 Preview 和 Application Player 中设置抗锯齿。。

对整个应用程序应用抗锯齿

当您为整个应用程序应用抗锯齿时,您需要设置要使用的抗锯齿表面样本数量。因为此值取决于您要运行 Kanzi 应用程序的设备,请查看该设备的文档以获取支持的值。如果您将抗锯齿表面样本的数量设置为设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

要对整个应用程序应用抗锯齿:

  • 在 application.cfg 配置文件中,将 SurfaceSamplesAntialiasing 参数设置为您要使用的抗锯齿表面采样数。请参阅 应用程序配置参考。

    例如,要使用四个抗锯齿样本,则将以下设置添加至 application.cfg。

    SurfaceSamplesAntialiasing = 4
    

或

  • 在 C++ 应用程序中的 Application::onConfigure 函数中,将 configuration.defaultSurfaceProperties.antiAliasing 参数设置为您要使用的抗锯齿表面样本数。

    例如,要使用四个抗锯齿样本,则将以下设置添加至 Application::onConfigure。

    configuration.defaultSurfaceProperties.antiAliasing = 4;
    

请参阅 SurfaceSamplesAntialiasing。

在 Preview 和 Application Player 中设置抗锯齿。

默认情况下,Windows 上的 Kanzi Studio Preview 和 Kanzi Application Player 使用 4 个样本应用抗锯齿。对于这两者,您可以配置要使用的抗锯齿数量。

如果您有一个 Kanzi 应用程序和一个 C++ 应用程序,要在 Kanzi Studio Preview 和 Kanzi Application Player 中以与在目标设备上运行 Kanzi 应用程序相同的方式查看您的内容,可以在 application.cfg 文件中设置抗锯齿。请参阅 对整个应用程序应用抗锯齿。

要在没有 C++ 应用程序的 Kanzi 应用程序中设置 Kanzi Studio Preview 的抗锯齿:

  1. 在 Kanzi Studio 主菜单中,选择 Project > Properties。在 Preview 部分的 Properties 中,将 Preview Working Directory 属性的值设置为您要存储 application.cfg 的目录,以配置 Preview。

    例如,将 Preview Working Directory 属性设置为 Application Player。这样,您可以将相同的抗锯齿设置应用于 Windows 上的 Preview 和 Kanzi Application Player。如果 <ProjectName>/Application Player 目录尚不存在,请选择 File > Export > Export as KZB Player for Windows。请参阅 从 Kanzi Studio 构建和部署 Kanzi 应用程序到 Windows。。

    ../../_images/project-properties-myproject.png ../../_images/preview-working-dir-application-player.png
  2. 在您在上一步中设置的目录中,创建或打开 application.cfg 文件。添加并将 SurfaceSamplesAntialiasing 参数设置为您希望 Preview 使用的抗锯齿采样数。

    例如,要在 Preview 中禁用抗锯齿,在 application.cfg 中添加:

    SurfaceSamplesAntialiasing = 0
    
  3. 在 Kanzi Studio 中,重启 Preview。

    ../../_images/preview-restart-button-gray.png

使用多重采样

使用多重采样 (MSAA) 来减少 Kanzi 应用程序中选定部分的锯齿。多重采样比超采样需要更少的资源。在光栅化多边形时,多重采样仅为多边形边缘的片段生成额外的样本,而超采样会为多边形中的所有片段生成额外的样本。

当使用基于磁贴的多重采样时,通常在移动平台上,GPU 一次仅为一个 GPU 磁贴生成多个样本。GPU 在将该磁贴写回纹理内存时隐式地解析样本,从而节省内存和 GPU 带宽。

在第一张图像中,未应用抗锯齿。在第二张图像中,应用了具有 8 个样本的多重采样。

../../_images/anti-aliasing-off.png ../../_images/multisampling-8-samples.png

多重采样 3D 内容

要对 Kanzi 渲染到合成目标的 3D 内容应用多重采样抗锯齿,请在用于渲染内容的 Composition Target 渲染通道中,将 Multisample Level 属性设置为您要使用的抗锯齿样本数量。

请参阅您要在其上运行 Kanzi 应用程序的设备文档以获取支持的值,因为抗锯齿样本的数量取决于设备。如果将 Multisample Level 属性设置为设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

例如:

  1. 在 Library 中,按 Alt 并右键单击 Rendering,并选择 Compose and Blit Pass。

    Compose and Blit Pass 包含一个渲染通道结构,使您能够使用特定材质将 Composition Target 渲染通道或纹理位块传送到屏幕。

    Compose and Blit Pass 渲染通道预设包含以下渲染通道:

    • Composition Target 渲染通道将自身及其后代渲染通道渲染到一个或多个合成目标。

      • Clear 渲染通道清除当前渲染上下文的部分或全部缓冲区。

        默认情况下,Compose and Blit Pass 中的 Clear 渲染通道使用透明黑色清除第一个颜色缓冲区,并使用值 1 清除深度缓冲区。

        例如,要使用其他颜色清除第一个颜色缓冲区,请将 Clear Color 0 属性设置为您要用作 Kanzi 渲染到 Composition Target 渲染通道的内容的背景颜色。

      • Gather Lights 渲染通道收集您设置为使用 Compose and Blit Pass 的 Viewport 2D 节点中的 Light 节点,并将它们传递给其子 Draw Objects 渲染通道。

        • 名为 Draw Objects 的 Draw Objects 渲染通道使您能够设置 Camera 节点来渲染特定的节点列表、过滤这些节点并控制视锥体剔除。默认情况下,Draw Objects 渲染通道使用其最近的祖先 Gather Lights 渲染通道提供的灯光来渲染节点。默认情况下,Draw Objects 渲染通道使用默认的 Camera 节点渲染 Viewport 2D 节点中的所有节点。

    • Blit 渲染通道使用特定材质将一个或多个单一纹理或立方体贴图纹理位块传送到屏幕。

      默认情况下,此 Blit 渲染通道将 Composition Target 渲染通道渲染其内容所用的第一个颜色纹理绘制到屏幕上。

      ../../_images/compose-and-blit-pass-create.png ../../_images/compose-and-blit-pass-library.png
  2. 在 Node Tree 或 Prefabs 中,选择要减少其内容锯齿的 Viewport 2D 节点。在 Properties 中,将 Render Pass Prefab 属性设置为 Compose and Blit Pass 渲染通道预设。

    Kanzi 现在在 Viewport 2D 节点中使用 Compose and Blit Pass 渲染通道预设渲染场景。

    ../../_images/viewport-2d-in-the-project.png ../../_images/render-pass-prefab-set-to-compose-and-blit-pass.png ../../_images/anti-aliasing-off.png
  3. 在 Library 中,选择 Compose and Blit Pass > Composition Target 渲染通道。在 Properties 中,添加 Multisample Level 属性,并将其设置为您要使用的抗锯齿样本数量。

    例如,将 Multisample Level 设为 8。

    请参阅您要在其上运行 Kanzi 应用程序的设备文档以获取支持的值,因为抗锯齿样本的数量取决于设备。如果将 Multisample Level 属性设置为设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

    ../../_images/multisample-level.png

Kanzi 现在对 Viewport 2D 节点的内容应用抗锯齿。

../../_images/multisampling-8-samples.png

多重采样 2D 内容

您可以对其内容 Kanzi 渲染到合成目标的 2D 节点应用多重采样抗锯齿。使用 Render Target > Multisample Level 属性设置要使用的抗锯齿样本数量。

请参阅您要在其上运行 Kanzi 应用程序的设备文档以获取支持的值,因为抗锯齿样本的数量取决于设备。如果将 Multisample Level 属性设置为设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

例如:

  1. 在 Node Tree 或 Prefabs 中,选择要减少其内容锯齿的 2D 节点。

    例如,创建一个包含 Image 节点的布局控制节点。将每个 Image 节点旋转几个度。

    ../../_images/node-tree-flow-layout.png ../../_images/preview-flow-layout-no-effect.png
  2. 要将 Kanzi 设置为将 2D 节点的内容渲染到合成目标,在 Properties 中,可以:

    • 添加并启用 Node 2D > Force Composition 属性。

      通过这种方式,您强制 Kanzi 将节点渲染到合成目标。

      ../../_images/properties-force-composition.png
    • 设置一个属性值,使 Kanzi 自动将节点渲染到合成目标。

      例如,当您调整不透明度或将效果应用于具有子节点的2D节点时,Kanzi 会将该节点渲染到一个临时合成目标。

      ../../_images/properties-opacity.png ../../_images/properties-effect-prefab.png
    ../../_images/preview-no-msaa.png
  3. 在 Properties 中,添加并设置 Render Target > Multisample Level 属性为您要使用的抗锯齿采样数。

    请参阅您要在其上运行 Kanzi 应用程序的设备文档以获取支持的值,因为抗锯齿样本的数量取决于设备。如果将 Multisample Level 属性设置为设备不支持的值,Kanzi Engine 会将该值限制为设备驱动程序支持的最大值。

    ../../_images/properties-multisample-level.png ../../_images/preview-4x-msaa.png

使用超级采样

如果您的硬件不支持多重采样,使用超采样 (SSAA) 来减少 Kanzi 应用程序中选定部分的锯齿。超采样比多重采样需要更多资源。在光栅化多边形时,超采样会为多边形中的所有片段生成额外的样本,而多重采样仅为多边形边缘的片段生成额外的样本。

对合成目标进行超级采样

使用 Composition Target 渲染通道渲染 3D 内容时,您可以对合成目标纹理进行超采样。要对合成目标纹理进行超采样,您必须使用 Composition Target 渲染通道自动创建的合成目标。

要对合成目标进行超级采样:

  1. 在 Library 中,按 Alt 并右键单击 Rendering,并选择 Compose and Blit Pass。

    Compose and Blit Pass 包含一个渲染通道结构,使您能够使用特定材质将 Composition Target 渲染通道或纹理位块传送到屏幕。

    Compose and Blit Pass 渲染通道预设包含以下渲染通道:

    • Composition Target 渲染通道将自身及其后代渲染通道渲染到一个或多个合成目标。

      • Clear 渲染通道清除当前渲染上下文的部分或全部缓冲区。

        默认情况下,Compose and Blit Pass 中的 Clear 渲染通道使用透明黑色清除第一个颜色缓冲区,并使用值 1 清除深度缓冲区。

        例如,要使用其他颜色清除第一个颜色缓冲区,请将 Clear Color 0 属性设置为您要用作 Kanzi 渲染到 Composition Target 渲染通道的内容的背景颜色。

      • Gather Lights 渲染通道收集您设置为使用 Compose and Blit Pass 的 Viewport 2D 节点中的 Light 节点,并将它们传递给其子 Draw Objects 渲染通道。

        • 名为 Draw Objects 的 Draw Objects 渲染通道使您能够设置 Camera 节点来渲染特定的节点列表、过滤这些节点并控制视锥体剔除。默认情况下,Draw Objects 渲染通道使用其最近的祖先 Gather Lights 渲染通道提供的灯光来渲染节点。默认情况下,Draw Objects 渲染通道使用默认的 Camera 节点渲染 Viewport 2D 节点中的所有节点。

    • Blit 渲染通道使用特定材质将一个或多个单一纹理或立方体贴图纹理位块传送到屏幕。

      默认情况下,此 Blit 渲染通道将 Composition Target 渲染通道渲染其内容所用的第一个颜色纹理绘制到屏幕上。

      ../../_images/compose-and-blit-pass-create.png ../../_images/compose-and-blit-pass-library.png
  2. 在 Node Tree 中,选择您想要超级采样其内容的 Viewport 2D 节点,并在 Properties 中将 Render Pass Prefab 属性设置为 Compose and Blit Pass 渲染传递预设。

    Kanzi 现在在 Viewport 2D 节点中使用 Compose and Blit Pass 渲染通道预设渲染场景。

    ../../_images/viewport-2d-in-the-project.png ../../_images/render-pass-prefab-set-to-compose-and-blit-pass.png
  3. 在用于渲染要进行超采样的节点的 Composition Target 渲染通道中,添加 Resolution Multiplier 属性,并将其设置为要乘以合成目标纹理分辨率的值。

    ../../_images/composition-target-render-pass-with-resolution-multiplier.png

对渲染目标纹理进行超级采样

您可以对在 Texture Brush 中使用的渲染目标纹理或在 Image 节点中用作图像的渲染目标纹理进行超采样。

要对渲染目标纹理进行超级采样:

  1. 在 Library 按 Alt 并右键单击 Materials and Textures 中,选择 Render Target Texture。请参阅 使用渲染目标纹理。

    这是您要渲染到节点内容上的纹理,希望减少节点锯齿。

    ../../_images/create-render-target-texture.png
  2. 在 Library 中选择您刚刚创建的 Render Target Texture,并在 Properties 中设置:

    • 将渲染目标纹理的 Height 和 Width 设置为您希望减少锯齿的内容最终大小的两倍。

      当您按比例缩小大纹理时,需要平滑化会导致锯齿的粗糙边缘。

    • Minification Filter 到 Linear

    • Mipmap Mode 到 Base

    • Format 到 RGBA 8-bit

    ../../_images/render-target-texture-properties-supersampling.png
  3. 在 Node Tree 中选择您要应用超采样的节点,并在 Properties 中添加并设置:

    • 将 Off-Screen Rendering 设置为 enabled。

    • 将您在第一步中创建的渲染目标纹理应用到 Render Target。

    ../../_images/render-target-properties.png
  4. 将您在第一步中创建的 Render Target Texture 应用于您希望显示上一步中选择的节点的超采样图像的节点。

    例如:

    1. 在 Node Tree 按 Alt 并右键单击 中选择 Empty Node 2D。

    2. 在 Node Tree 中选择 Empty Node 2D 节点,在 Properties 中添加 Background Brush 属性,并在下拉菜单中选择 + Texture Brush。

      ../../_images/select-create-texture-brush.png
    3. 在 Background Brush 属性旁边,点击 image0,并将 Texture Brush 的 Brush Texture 属性设置为您想在第一步中创建的 Empty Node 2D 中显示的 Render Target Texture。

      ../../_images/image-property-render-target-texture.png
    4. 在 Node Tree 中选择 Empty Node 2D,并在 Properties 中添加并设置 Layout Width 和 Layout Height 属性为您希望显示 Render Target Texture 内容的大小。

另请参阅

应用程序配置参考

使用渲染目标纹理

将内容渲染到合成目标

2D 节点的效果

渲染最佳实践