1 着色器管线

第一个着色器是非常简单的程序,允许在光栅化阶段之前变换和照亮顶点。它们是用汇编语言编写的。现在着色器随处可见,从用户界面到物理和逻辑,因为它们与其他源代码没有任何不同。随着现代 GPU 的灵活性,着色器的数量每年都在增长。软件将越来越多的任务委托给 GPU,而不是 CPU。

现在编写着色器的方法并不多。它可以是 HLSL/GLSL/MSL/WGSL/CU/CL 方言。但大多数情况下,代码是相同的,但有一些细微的差别。创建可在所有可用硬件上运行的完美二进制着色器是不可能的。由于 GPU 具有不同的架构,因此不可能为每个人制定最佳的二进制格式。因此,使用中间二进制表示来简化应用程序运行时。驱动程序的工作是为输入中间着色器表示生成完美的二进制文件。

使用跨API技术,不同的API需要不同的着色器。此外,某些平台不允许在应用程序执行期间编译着色器,并且需要预编译着色器输入。对于 Vulkan,它是SPIR-V格式,它是 GLSL 着色器代码的二进制表示形式。该二进制着色器可以直接由 Vulkan 运行时加载,驱动程序会将其转换为硬件。OpenGL ARB_gl_spirv扩展允许将相同的 SPIR-V 二进制着色器直接加载到 OpenGL 运行时,并对样本和纹理进行少量修改。不幸的是,它只适用于 Nvidia。AMD 和 Intel 无法处理 SPIR-V 二进制文件中的几何和曲面细分着色器。

当相同的着色器需要在 Direct3D12、Metal 或 WebGPU API 上运行时,就会出现问题。SPIR-V 交叉工具通过将二进制着色器转换为 HLSL 或 MSL 格式,并具有许多用于资源绑定的调整参数,使之成为可能。这种转换在平台之间并不完全兼容,因此引擎必须知道如何最适合每个平台转换参数。之后,可以通过 d3dcomiler/dxcompiler/metal 工具集编译着色器源代码以获得所需的运行时间。

另一种选择是使用 HLSL 着色器作为输入,并将它们交叉编译为 Vulkan 的 SPIR-V 表示形式。但这也需要资源绑定魔法。每个平台都希望拥有自己的着色器语言,而该语言与其他平台不兼容。SPIR-V 是为每个人制定标准的伟大尝试。但只有 Vulkan API 可以使用它。其他平台需要不同的着色器语言或二进制格式。

不同着色器类型的数量也在增长。我们有顶点、片段、几何、控制、评估、计算、任务、网格、RayGen、RayMiss、Closest、AnyHit、Intersection 和 Callable 着色器类型。它们都有不同的输入和输出语义。幸运的是,Khronos 小组提供了验证和编译所有这些着色器的工具。我们尝试使用这些工具,但不幸的是,在它们的帮助下不可能交叉编译我们的计算、曲面细分和几何着色器。因此,我们基于 GLSL 和 SPIR-V 规范创建了自己的着色器管道。现在我们很高兴向您介绍更多相关信息。

我们在Tellusim 引擎中使用 GLSL 语言作为所有平台的主要语言。支持所有着色器类型,包括网格和光线跟踪。由于我们的着色器工具集具有高性能,因此我们可以跳过离线着色器编译步骤并在运行时完成所有操作。无论代码量如何,它都可以快速运行。对于不允许在运行时编译着色器的平台,我们使用预编译着色器缓存。

GravityMark GPU 基准测试需要超过 20K 行的 GLSL 着色器。当使用Khronos glslang 编译器进行 GLSL 到 SPIR-V 编译时,启动应用程序所需的时间存在巨大差异。

以下是使用 Khronos glslang 编译器构建的日志:

M:63.32 毫秒:创建 1600x900 Vulkan 窗口
M:1.493 s:创建场景管理器
M:9.346 秒:创建 RenderManager
M:12.431 秒:创建场景
M: 13.551 s: 创造 200,000 个小行星
M:13.701 s:更新场景
M:13.851 秒:GravityMark v1.2 在 13.9 秒内就绪

这是 Clay 着色器编译器,以 10 倍的速度完成相同的工作:

M:58.59 毫秒:创建 1600x900 Vulkan 窗口
M:288.47 毫秒:创建场景管理器
M:411.18 毫秒:创建渲染管理器
M:541.40 毫秒:创建场景
M:1.289 s:创造 200,000 个小行星
M:1.364 s:更新场景
M:1.500 秒:GravityMark v1.2 在 1.5 秒内就绪

着色器编译器之间的 FPS 没有差异。

从 SPIR-V 表示法到其他着色器语言的转换以同样令人难以置信的速度执行。此外,所有资源绑定都是由引擎自动处理的。所有受支持的平台(包括 Cuda 和 WebGPU)只需要一个 GLSL 着色器。这提供了极大的灵活性,并显着减少了开发新功能所需的时间。我们还使用受支持平台上的所有可用调试工具。

某些 GLSL 功能(例如嵌入式数组)不受支持,因为我们不需要它们。

您可以下载适用于 Windows 和 Linux 的最新 Clay 着色器编译器命令行工具,具有所有着色器语言后端(Vulkan SPIR-V、OpenGL SPIR-V、OpenGL GLSL、OpenGLES GLSL、Direct3D12 HLSL、Direct3D11 HLSL、WebGPU WGSL、Metal MSL 、Cuda 和 Hip)在这里:

3 评论

  1. Crave multi-disciplinary obscene videos that AREN’t terrible?
    Then you’ve come to the absolutely right place!
    We give you unlimited access to all premium dirty videos in high resolution.
    Anal, youth, hardcore… we have it all!
    Watch the videos available for each device of your choice, whether it’s a mobile phone, desktop computer or tablet computer.
    Don’t forget to check out the other erotic niches featured on this site — you’ll love this experience!
    http://torgplus.by/bitrix/redirect.php?goto=https://3megaxxx.com
    http://blenderartists.com/__media__/js/netsoltrademark.php?d=https://3megaxxx.com
    http://kazim.admbelgor.ru/bitrix/redirect.php?goto=https://3megaxxx.com
    http://robertnederlander.com/__media__/js/netsoltrademark.php?d=https://3megaxxx.com
    http://grandelli.com/__media__/js/netsoltrademark.php?d=https://3megaxxx.com

  2. Знакомьтесь, опытный человек – автор и эксперт казино Юра. Его глубокий опыт и основательные знания в сфере азартных игр делают его надежным источником информации для всех, кто стремится разобраться в мире казино. Гуртовой Юрий не только является автором разнообразных популярных статей и руководств, но и предоставляет экспертные советы, которые помогут вам принимать осознанные решения при выборе казино, стратегии игры и управлении банкроллом. На форумах обсуждайте свои вопросы, делись опытом и получайте ценные советы от Юрия, чтобы сделать свой опыт в мире азартных развлечений еще более увлекательным и успешным.

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注