动态线光栅化

此示例的源代码可以在 Khronos Vulkan 示例 github 仓库中找到。
screenshot

概述

此示例演示了与动态线光栅化相关的各种扩展中的函数。这些函数对于开发 CAD 应用程序非常有用。

  • 来自 VK_EXT_line_rasterization 扩展

    • vkCmdSetLineStippleEXT - 设置虚线模式。

  • 来自 VK_EXT_extended_dynamic_state3 扩展

    • vkCmdSetPolygonModeEXT - 设置如何光栅化定义的图元。

    • vkCmdSetLineRasterizationModeEXT - 设置线光栅化的算法。

    • vkCmdSetLineStippleEnableEXT - 切换线的虚线效果。

  • 以及来自核心 Vulkan

    • vkCmdSetLineWidth - 设置线宽。

    • vkCmdSetPrimitiveTopologyEXT - 定义正在绘制的图元类型。

示例

动态线光栅化包含一个线框立方体,其外观可以由用户修改。立方体边缘和填充在单个管线中渲染,使用不同的索引集。vkCmdSetPrimitiveTopologyEXTvkCmdSetPolygonModeEXT 函数用于更改它们的渲染方式。

用户可以修改线宽 (vkCmdSetLineWidth) 并选择线的绘制方式 (vkCmdSetLineRasterizationModeEXT)。该示例还演示了虚线化线的能力。虚线由两个变量定义

  • lineStipplePattern - 一个 uint16_t,其中每个位表示线上某点是否着色 (1) 或透明 (0)。

  • lineStippleFactor - 一个用于确定单个模式位影响多少个连续点的因子。

该示例还包含一个使用不同管线在立方体下方渲染的网格。此网格表示基于片段着色器的另一种线光栅化方法。因此,网格线的外观无法由用户修改。

致谢

无限网格着色器基于 asliceofrendering.com 博客中的代码。