除了 OpenGL 和 Direct3D 之外,SilverLining Sky、3D 云和天气 SDK 6.38 版本现在还包括 Vulkan 支持测试版! Vulkan 是 OpenGL 的更低级别、更高性能的继承者,作为实时 3D 图形的基础技术,在模拟和培训行业中越来越受欢迎。
基于 Vulkan 的应用程序往往非常复杂,因为这种较低级别的 API 将过去隐藏在图形驱动程序中的大部分代码移至应用程序中。 大多数开发人员将使用简化 Vulkan 开发的框架,例如 VulkanSceneGraph 或跨平台 Diligent Engine。 我们为每个项目都提供了 SDK 示例; 请参阅我们有关 VulkanSceneGraph 集成和 Diligent Engine 集成的相关文章,了解更多详细信息。
勤奋的引擎集成
VulkanSceneGraph 集成
对于那些直接针对 Vulkan 进行开发的人,我们还在 SDK 中包含了一个 Vulkan 示例,它是一个功能齐全的独立 Vulkan 应用程序。 这是我们自己的测试平台,说明了 SilverLining 的所有功能在 Vulkan 下的使用情况。 这包括多个视口的多线程渲染、我们对云层类型的完整选择、一天中的时间效果、自动生成环境贴图(如上所示)以及来自天空和云、黄昏光线、降水等的阴影贴图。 有关更多详细信息,请参阅 Vulkan 示例中包含的自述文件。
对于那些已经熟悉 SilverLining 的 API 的人来说,使用 Vulkan 时需要注意一些差异:
调用 SilverLining::Atmosphere::Initialize() 时,您必须将指向 SilverLining::Vulkan::VulkanInitInfo 结构的指针传递给“environment”参数。 此结构在我们的 VulkanInitInfo.h 标头中定义,您必须显式包含该标头(这是为了避免使用 OpenGL 或 DirectX 的客户依赖于 Vulkan SDK。)这包括 Vulkan 设备、交换链和渲染通道的各种属性 希望将 SilverLining 与集成。 除 VulkanMemoryAllocator 成员外,此结构的每个成员都是必需的。 您可以选择提供自己的内存分配器,以将 SilverLining 与您自己的 Vulkan 内存管理方案集成,如示例所示。
在每帧绘制天空和云彩之前,您必须调用 ThreadCameraStreamData::SetStream() 以传入当前 Vulkan 命令缓冲区和当前正在渲染的交换链图像的索引。
Vulkan 必须设置为支持动态剪切,并且必须为 Vulkan 每帧设置视口和剪切矩形。
使用 Vulkan,您可以并行构建不同视图的命令列表。 Vulkan 示例展示了一种通过将 SilverLining::Atmosphere 实例与每个视图相关联来管理每个视图的每个摄像机数据的架构; –threading 命令行参数允许您测试此功能。 这对于驱动多个视图的模拟器和虚拟现实应用程序来说尤其强大。
在 Vulkan 下,必须使用 Atmosphere::GenerateCrepusularRays() 和 Atmosphere::DrawCrepusularRays() 在云之后显式创建和绘制黄昏光线。 请参阅 Vulkan 示例中的 SilverLiningVulkanExamplePerWindowData::DrawSkyAndClouds() 了解使用示例。
如果您要从源代码重建我们的任何 Vulkan 示例或 SilverLining 的 Vulkan 库,请务必先安装 Vulkan SDK 及其依赖项。 其他先决条件在各个示例的自述文件中列出。 分布式应用程序在运行时不需要 Vulkan SDK。 在 Linux 下,您必须运行 make vulkan 才能构建支持 Vulkan 的 SilverLining。 在 Windows 下,需要 Visual Studio 2022 或更高版本,因为 Vulkan 需要现代 C++ 功能。
SilverLining 中的 Vulkan 支持可供具有主动技术支持和维护计划的当前许可证持有者以及新许可证持有者使用。 购买许可证和技术支持计划请联系我们获取正式报价。
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室