开发图形标准的 Khronos 联盟,
主
-
带给你 实现着色器编程语言直到准备好广泛使用HLSL ,由 Microsoft 为 DirectX 开发。 Vulkan 中的 HLSL 支持使得可以在基于 Vulkan 和 DirectX 的应用程序中使用相同的 HLSL 着色器,并且还简化了从 HLSL 到 SPIR-V 的转换。要编译着色器,建议使用标准编译器
DXC ,由微软于2017年开放,基于LLVM技术。 Vulkan 支持是通过单独的后端实现的,它允许您将 HLSL 转换为 SPIR-V 着色器的中间表示。实现不仅涵盖所有内置功能
HLSL,包括数学类型、控制流、函数、集、资源类型、命名空间、Shader Model 6.2、结构和方法,还允许使用 Vulkan 特定的扩展,例如 NVIDIA 的 VKRay。在 Vulkan 之上的 HLSL 模式下,可以组织《命运 2》、《荒野大镖客:救赎 II》、《刺客信条:奥德赛》和《古墓丽影》等游戏的工作。 - 规格更新
SPIR-V 1.5 ,它定义了所有平台通用的着色器的中间表示,并且可用于图形和并行计算。
SPIR-V 涉及将单独的着色器编译阶段分离为中间表示,这允许您为各种高级语言创建前端。基于各种高级实现,单独生成单个中间代码,可供 OpenGL、Vulkan 和 OpenCL 驱动程序使用,而无需使用内置着色器编译器。 - 核心 Vulkan API 包括 23 个扩展,可提高性能、提高渲染质量并简化开发。添加的扩展包括:
-
按时间顺序的信号量 (时间线信号量),统一与主机和设备队列的同步(允许您使用一个原语在设备和主机之间进行全向同步,而无需使用单独的 VkFence 和 VkSemaphore 原语)。新信号量由单调递增的 64 位值表示,可以跨多个线程跟踪和更新。
- 能够在着色器中使用精度较低的数字类型;
- HLSL 兼容内存布局选项;
- 无绑定资源(bindless),通过使用系统内存和GPU内存的共享虚拟空间,消除了对着色器可用资源数量的限制;
-
正式记忆模型 ,它定义了并发线程如何访问共享数据和同步操作; -
描述符索引 跨多个着色器重用布局描述符; - 缓冲链接。
添加的扩展的完整列表:
-
VK_KHR_8bit_存储 -
VK_KHR_buffer_device_address -
VK_KHR_create_renderpass2 -
VK_KHR_depth_stencil_resolve -
VK_KHR_draw_indirect_count -
VK_KHR_driver_properties -
VK_KHR_image_format_list -
VK_KHR_imageless_framebuffer -
VK_KHR_sampler_mirror_clamp_to_edge -
VK_KHR_separate_depth_stencil_layouts -
VK_KHR_shader_atomic_int64 -
VK_KHR_shader_float16_int8 -
VK_KHR_shader_float_controls -
VK_KHR_shader_subgroup_extended_types -
VK_KHR_spirv_1_4 -
VK_KHR_时间线_信号量 -
VK_KHR_uniform_buffer_standard_layout -
VK_KHR_vulkan_memory_model -
VK_EXT_描述符_索引 -
VK_EXT_host_query_reset -
VK_EXT_sampler_filter_minmax -
VK_EXT_标量_块_布局 -
VK_EXT_separate_stencil_usage -
VK_EXT_shader_viewport_index_layer
-
-
添加者 超过 50 个新结构和 13 个功能; - 该规范的缩短版本已针对典型的目标平台准备好了,简化了尚未支持所有扩展的平台上的工作,并且允许无需选择性激活 Vulkan API 的基本功能。
- 该项目的工作仍在继续,以确保与其他图形 API 的可移植性。例如,Vulkan 提供了允许 OpenGL 转换的扩展(
辛克 ), OpenCL (类风湿病毒 ,克拉夫克 )、OpenGL ES(手套、角度)和 DirectX(DXVK 扩展 ,vkd3d )通过 Vulkan API,并且相反,使 Vulkan 能够在没有其本机支持的平台上工作(gfx-rs и灰烬 用于在 OpenGL 和 DirectX 之上工作,MoltenVK 和 gfx-rs 用于在 Metal 上工作)。
添加了扩展以提高与 DirectX 和 HLSL 的兼容性
VK_KHR_host_query_reset、VK_KHR_uniform_buffer_standard_layout、VK_EXT_scalar_block_layout、VK_KHR_separate_stencil_usage、VK_KHR_separate_depth_stencil_layouts 和 SPIR-V 实现特定的 HLSL 功能。
未来的计划包括开发机器学习、光线追踪、视频编码和解码的扩展、支持 VRS(可变速率着色)和网格着色器。
回想一下 Vulkan API
Vulkan 跨越所有可用平台,并为桌面、移动和 Web 提供单一 API,允许跨多个 GPU 和应用程序使用一个通用 API。 得益于 Vulkan 的多层架构,这意味着工具可以与任何 GPU 配合使用,OEM 可以在开发过程中使用行业标准工具进行代码审查、调试和分析。 为了创建着色器,基于 LLVM 并与 OpenCL 共享核心技术,提出了一种新的便携式中间表示 SPIR-V。 为了控制设备和屏幕,Vulkan 提供了 WSI(窗口系统集成)接口,它解决了与 OpenGL ES 中的 EGL 大致相同的问题。 Wayland 中开箱即用地提供 WSI 支持 - 所有使用 Vulkan 的应用程序都可以在未经修改的 Wayland 服务器环境中运行。 Android、X11(带 DRI3)、Windows、Tizen、macOS 和 iOS 也可以通过 WSI 进行工作。
来源: opennet.ru