如何开始使用适用于 Windows 的 Metal Developer Tools

随着macOS Sonoma的发布,Apple还更新了当前版本的Metal开发人员工具,以便在Windows中使用。以下是获取和使用它们的方法。

Metal 是 Apple 的 macOS 图形框架。Metal 允许您使用 Apple 针对所有 Apple 设备优化的图形引擎创建丰富、高性能的 2D 和 3D 图形。

当 Metal 在 Apple 设备上运行时,您还可以使用 Microsoft Windows 作为平台来创建用于 Metal 的资源、图像、着色器和纹理。

Apple在其开发人员工具网站上有两个Metal for Windows下载:Metal Developer Tools 4.0 for Windows和Metal Shader Converter for Windows。您可以通过在线登录您的Apple开发人员帐户来下载两者。

获取工具

要下载适用于 Windows 的 Metal 开发人员工具,请登录您的 Apple 开发人员帐户,转到 Web 浏览器中的“下载”页面,然后向下滚动到 Windows 版 Metal 开发人员工具

56171-114733-dl1-xl

单击“显示详细信息”箭头,然后单击 Metal Developer Tools 4.0 Windows.pdf 和 Metal Developer Tools 4.0 Windows.exe将它们下载到计算机的存储中。

接下来,向下滚动到适用于 Windows 的金属着色器转换器并单击 显示详细信息 箭头,然后单击 适用于 Windows 的金属着色器转换器.pdf 和 适用于 Windows 的金属着色器转换器.exe将它们下载到您的计算机存储中:

56171-114734-dl2-xl
下载适用于Windows的金属着色器转换器。

安装

将所有下载的项目移动到新文件夹中。您现在应该有四个项目。在安装之前,您可能需要通读这两个 PDF 文件:

56171-114735-tools-xl
下载的视窗工具。

接下来,如果您在 Mac 上下载了文件,请插入兼容 Windows 的 USB 拇指驱动器或其他磁盘,然后将四个项目复制到其中。你将使用拇指驱动器将文件复制到 Windows 10 或 11 计算机。

复制完成后,将 USB 驱动器插入 Windows 计算机并将四个文件复制过来。运行这两个.exe安装程序文件以在 Windows 计算机上安装这些工具。

正如 Metal Developer Tools for Windows PDF 所述:

“默认情况下,软件包将安装到 .安装时,您会发现:%PROGRAMFILES%\Metal Developer Tools

bin包含纹理转换器工具。

include包含 AppleTextureConverter 库的标头。

lib包含 AppleTextureConverter 库。

metal\ios包含面向 iOS 和 tvOS 时要使用的工具集。 包含面向 macOS 时要使用的工具集。metal\macos

Metal 开发人员工具应与您计划针对您的版本的操作系统 SDK 版本相匹配。

它还指出,除了 GUI 安装之外,安装程序还可以支持命令行安装,如下所示:

"Metal Developer Tools-Windows.exe" /S /D=C:\Users\My Name\Sandbox\Tools

使用工具

安装后,您可以使用这些工具将 Windows 计算机上的着色器和资产转换为 Metal 使用的格式。

第一个工具,将Windows创建的纹理转换为Metal接受的GPU压缩纹理格式。要查看 的详细信息和运行选项,请键入:TextureConverterTextureConverter

TextureConverter.exe --h进入 Windows 中的命令提示符,然后按 Return 或 Enter 键。

如开发人员说明所示,要合并到您自己的 Windows 纹理工具中,请使用提供的 AppleTextureConverter 库,并阅读头文件以获取更多信息。TextureConverterAppleTextureConverter.h

还包括一些工具,用于使用 Apple Metal 着色语言将图形和计算着色器从 Windows 编译到 Metal Library 对象中。

Windows 工具没有提供有关如何执行此操作的说明,因此您需要阅读 Apple 在线 Metal 文档的文档>金属区域的着色器库部分中的着色器库部分中的通过预编译源文件构建着色器库

实际上,您将使用这些工具从Windows DXIL格式转到中间.air格式,然后转到可以加载到Xcode中并在运行时从应用程序运行的.metalar和.metallib文件。从文档中:

“金属编译器工具将每个着色器源文件转换为中间表示文件。然后,metallib 和 metal-ar 工具将中间表示文件分别编译为库和二进制存档”。

如文档所述,适用于Windows的Metal命令行工具使用与macOS对应工具相同的选项和参数。

金属着色器转换器

安装的另一个Windows工具是Windows的Metal Shader Converter。

该工具将LLVM IR字节码形式的中间表示转换为适合加载到Metal中的字节码。

LLVM是Xcode在项目编译过程中使用的开源编译器基础设施。

您可以在该站点的位码页面上阅读有关LLVM的更多信息 llvm.org 和字节码格式(LLVM称之为“位码”)。

字节码格式也包含在PACKT Publishing的LLVM Cookbook一书中。

金属着色器转换器既是独立工具,也是库,您可以根据需要将其合并到自己的工具中。

另请参阅提供的头文件 。metal_irconverter_runtime.h

适用于 Windows 的 Metal Shader Converter 需要 Microsoft Windows 10 或更高版本,以及 Microsoft Visual Studio 2019 或更高版本。

使用 Metal Shader Converter for Windows 构建的库仅适用于 macOS 14 Sonoma 和 iOS 17。如果它们是为早期操作系统版本构建的,则某些功能可能不可用。

运行金属着色器转换器

Windows Metal Shader Converter 的第一个也是最简单的用途是将 Windows DirectX DXIL(DirectX Intermediate Language)着色器转换为 Metal 着色器库。这可以使用命令行工具完成。metal-shaderconverter

例如:

metal-shaderconverter shader.dxil -o ./shader.metallib

您可以通过在命令提示符下运行来获取有关 Windows 的详细信息。metal-shaderconvertermetal-shaderconverter --help

金属着色器转换器库

还有一个动态代码库(dylib),它适用于C,C++,Objective-C和Swift项目,允许您使用提供的类将DXIL转换为Metal。libmetalirconverterIRCompiler

这种转换代码相当简单,金属着色器转换器 PDF 中提供了小于一页的示例代码。

实质上,要使用提供的类,首先创建对象的实例,设置入口点名称,使用该类将 DXIL 对象转换为 IR 对象,使用该函数将其编译为 Metal,然后检查输出。IRCompilerIRObjectIRCompilerAllocCompileAndLink()

提供的 IRMetalLibBinary 类允许您加载和操作编译的 Metal 对象。

相当长的三十页 Windows PDF 的 Metal Shader 编译器提供了许多其他选项,可用于从 Windows 转换为 Apple Metal,包括顶点属性、采样器状态对象、参数缓冲区、光线追踪等。

还有关于实现最佳金属性能的技巧,以及处理复杂着色器管线(包括几何体和曲面细分)的技巧。

该 PDF 还建议查看 Metal 示例代码页面上的 Apple 的 Metal 示例代码项目“C++学习 Metal”。

其他资源

如果你不知道C++,你会想先从一本关于C的简单经典书籍开始,比如Brian Kernighan和已故的Dennis Ritchie的权威C书The C Programming Language,他们都在1970年代在贝尔实验室编写了C语言,以创建UNIX操作系统。

C++由Bjarne Stroustrup创建,基于C,但提供面向对象(OOP)功能,如类,对象,标准模板库(STL)和其他现代功能。Stroustrup的文本The C++ Programming Language 4th Edition是必读的。

Stroustrup还有一个网站,还有一些有用的C++书籍和教程。

一年一度的C++会议,CppCon每年1月举行 – 今年6月<>日至<>日在科罗拉多州奥罗拉举行,CppCon还有一个YouTube频道,里面有很多很棒的C++教程。

C++在1994年开始流行,当时基于过程的语言(如C)的局限性变得明显。C 语言有几种标准,包括 C99、C11、C14、C17 和 C22。APRESS有一些关于每个标准的好书。

您可以在 Xcode 的构建设置面板中设置 Xcode 编译器使用哪些标准。

1989年,NeXT团队在NeXT Computer创建了Objective-C,这是一种基于C的类似OOP语言,但它具有其他优点,例如动态链接和对象内省。

当苹果在1997年收购NeXT时,它还收购了包括Objective-C在内的所有NeXT技术。一本关于Objective-C的权威书籍是Big Nerd Ranch的Objective-C编程:The Big Nerd Ranch Guide。

还值得注意的是,一些第三方3D标准也有一些要求,其中许多是基于Windows DirectX / Direct3D DXIL标准的。

例如,Steam具有必须满足的某些DirectX要求 – 因此,如果您要同时发布到Steam和Apple平台,则需要了解这些要求。Steam 有一个页面详细介绍了要求。

Microsoft在GitHub上托管DirectXShaderCompiler存储库和Wiki。

Microsoft在GitHub上的DirectX-Specs和DirectXTK6存储库中还有一个DirectX-Specs页面和DirectX Shader Model 12。

Windows DXIL调试和调整PIX工具也可用。

Microsoft还有一个DirectX开发人员博客。

最后,NVIDIA有一个基于Windows的DirectX调试工具,称为Nsight Graphics,如果你愿意面对相当复杂的文档。

苹果在macOS Sonoma中添加了Windows Metal工具,这意味着现在可以更轻松地将现有的游戏图形管道移植到Metal,以便它们可以在Apple平台上以最佳方式运行。随着时间的推移,我们可以期待苹果改进其Metal工具,使跨平台游戏开发变得不那么痛苦。

未经允许不得转载:表盘吧 » 如何开始使用适用于 Windows 的 Metal Developer Tools