View in English

  • Apple 开发者
    • 入门汇总

    探索“入门汇总”

    • 概览
    • 学习
    • Apple Developer Program

    及时了解最新动态

    • 最新动态
    • 开发者你好
    • 平台

    探索“平台”

    • Apple 平台
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    • App Store

    精选

    • 设计
    • 分发
    • 游戏
    • 配件
    • 网页
    • Home
    • CarPlay 车载
    • 技术

    探索“技术”

    • 概览
    • Xcode
    • Swift
    • SwiftUI

    精选

    • 辅助功能
    • App Intents
    • Apple 智能
    • 游戏
    • 机器学习与 AI
    • 安全性
    • Xcode Cloud
    • 社区

    探索“社区”

    • 概览
    • “与 Apple 会面交流”活动
    • 社区主导的活动
    • 开发者论坛
    • 开源

    精选

    • WWDC
    • Swift Student Challenge
    • 开发者故事
    • App Store 大奖
    • Apple 设计大奖
    • Apple Developer Centers
    • 文档

    探索“文档”

    • 文档库
    • 技术概述
    • 示例代码
    • 《人机界面指南》
    • 视频

    发布说明

    • 精选更新
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • Apple tvOS
    • Xcode
    • 下载

    探索“下载”

    • 所有下载
    • 操作系统
    • 应用程序
    • 设计资源

    精选

    • Xcode
    • TestFlight
    • 字体
    • SF Symbols
    • Icon Composer
    • 支持

    探索“支持”

    • 概览
    • 帮助指南
    • 开发者论坛
    • “反馈助理”
    • 联系我们

    精选

    • 《开发者账户帮助》
    • 《App 审核指南》
    • 《App Store Connect 帮助》
    • 即将实行的要求
    • 协议和准则
    • 系统状态
  • 快速链接

    • 活动
    • 新闻
    • 论坛
    • 示例代码
    • 视频
 

视频

打开菜单 关闭菜单
  • 专题
  • 所有视频
  • 关于

更多视频

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 使用 Metal 构建实时神经网络渲染管线

    探索如何使用 Metal 4 将机器学习整合到实时渲染管线中。我们将介绍利用 MetalFX 神经网络降噪实现生产级效果的实用模式和最佳做法,并分享来自 Maxon Redshift Live 的真实经验。了解如何使用 ML 命令编码器,在图形工作流程中训练和部署神经网络色调映射器。最后,深入探索新的张量 API,直接在着色器中构建并评估小型专用神经网络。

    章节

    • 0:00 - Introduction
    • 2:16 - MetalFX Denoising
    • 9:57 - Deploy custom ML networks with Metal 4
    • 13:40 - Inline neural networks with tensorOps
    • 20:55 - Next steps

    资源

    • Training a neural network to render irradiance in real time
    • Metal sample code library
    • Download the Metal Performance Primitives (MPP) Programming Guide
    • Understanding the Metal 4 core API
      • 高清视频
      • 标清视频

    相关视频

    WWDC25

    • 实现 Metal 4 机器学习与图形应用程序的完美融合
    • 深入探索 Metal 4 游戏
  • 搜索此视频…

    你好 我是Yulia Apple的GPU软件工程师 今天 我将分享 如何引入机器学习 到你的实时渲染管线 结合Metal 4 你将学到将机器学习 集成到渲染器的实用方法 以及构建高性能管线 的最佳实践 还有两种可以 立即采用的技术 机器学习正从研究领域 迈入实时渲染的生产实践 在整个渲染管线中 许多传统上依赖 解析方法的成熟技术 同样可以用 机器学习来实现 神经去噪 神经纹理 学习色调映射 以及许多其他技术 都可以借助机器学习 在管线的每个阶段 这些方法都可以提升质量 性能或内存占用 我将介绍这在 Metal中是如何实现的 在Apple平台上 你拥有 完整的机器学习工具集 满足你的渲染需求 在最高层次 MetalFX 提供即用的神经去噪 和超分辨率API 作为完全集成的黑盒解决方案 Metal 4 ML命令编码器 让你在命令缓冲区中 直接运行预训练模型 让你对集成和调度 有更多控制 在最灵活的层次 TensorOps API 提供了构建模块 用于直接在着色器中 设计和运行自定义模型 让你充分利用 神经加速器 这是在我们M5和 A19 Pro Apple silicon GPU中引入的 今天 我将依次 介绍所有这些内容

    这是今天的计划 我将介绍如何采用MetalFX 并达到生产级质量结果 在你的渲染管线中 以Maxon的Redshift Live为例 这是一款现代实时 路径追踪视口 它采用了MetalFX Denoising 遵循Apple最佳实践 接下来 我将介绍如何训练 神经色调映射器 并用Metal 4部署它 最后 我将介绍 如何直接在着色器中 使用TensorOps API 构建一个小型网络 从MetalFX开始 在你的路径追踪器中 帧预算可能只允许你 每像素一或几个采样 以保持交互性 但每像素一个采样 噪声自然很大

    为保证质量 请使用MetalFX Denoising 它专为 实时视口的 低延迟要求而设计 MetalFX Denoising是 神经超分辨率与去噪的结合 这是针对Apple silicon 优化的平台集成解决方案 你可以轻松地将它 集成到你的管线中 你需要生成一些额外的 辅助输入 如漫射反照率 深度值及其他内容 根据你的渲染器 你可能已经生成了这些 你将所有这些输入提供给MetalFX 它会生成精美的去噪图像 之后 你完成管线 进行后处理 并显示输出结果 这是Redshift Live Maxon的现代实时路径追踪器 在Cinema 4D中渲染 他们的高质量3D资产 运行在Apple silicon上 你可以直接在视口中 获得路径追踪的所有优势 但在相机移动时 你会看到一些噪声 来自每像素 一个采样的渲染 启用MetalFX去噪器 图像变得更加稳定 几乎无噪声 Redshift Live现在可以 提供清晰 接近最终质量 以交互帧率呈现图像 具有实时光线追踪照明 阴影和全局光照 现在艺术家可以在视口中 实时看到光照效果变化 就像这棵树被移动一样 当你将硬件加速光线追踪 与MetalFX神经去噪结合时 这一切成为可能 这是每像素 一个采样帧的示例 由Redshift Live渲染 通过同时利用 空间和时间技术 MetalFX能够将嘈杂的每像素 一个采样转化为图像 接近最终质量 实时完成 要了解有关输入的所有详情 以及如何在你的应用中 利用MetalFX 请查看 "Go further with Metal 4 games"讲座 我将概述三个关键最佳实践 Maxon用它们从MetalFX 获得最佳质量 从去噪器输入和噪声开始

    去噪器的输出质量 直接取决于 你输入的质量 通常你的辅助输入 是无噪声的 尽力保持这种状态 在所有输入中 漫射反照率 是去噪最强的信号 如有疑问 尽量使其 接近无噪声版本 即你希望在屏幕上 看到的最终结果 考虑直接在你的引擎中 为每个输入构建调试视图 使用GPU捕获 逐帧检查纹理 这将让你 验证你的输入 确保它们看起来 符合模型的预期

    你的场景中 可能有一些无噪声的图层 或者一些你不想 强烈去噪的部分 你有两个工具可用 透明度叠加层 和去噪器强度遮罩 使用它们将帮助你 在这些场景中最大化质量 粒子 雾 体积效果和天空 是没有有意义表面的效果 基于你的渲染管线 可能已经是无噪声的 MetalFX将对含噪输入 进行去噪和超分辨率

    对于这些无噪声效果 你可以利用 MetalFX透明度 叠加层输入 叠加层输入只会被超分辨率 并合成到 最终结果中 对于已无噪声的区域 如天空 你可以配置MetalFX 跳过这些像素的去噪 使用去噪器强度遮罩 我来分享一个例子 天空已被标记为 不进行去噪处理 该值可从零开始调节 表示不去噪 一直到一 表示以最大强度去噪 具体取决于你的使用场景 这让你可以控制 场景中的去噪效果 到目前为止 MetalFX 应已产生出色的输出 但反射和透射 存在一些棘手的情况 这第二条最佳实践 将帮助你解决这些问题 镜子本身没有颜色 观看者看到的是 被反射的表面 如前所述 你的输入 尤其是漫射反照率 应当代表 尽可能接近 期望的最终输出 将反射几何属性 如反照率 法线 和粗糙度存储 在镜面类对象中

    玻璃建立在相同的基础概念上 并将其进一步延伸 观看者看到的是 反射内容的组合 和透射内容 这可能包含噪声 一种方法是通过菲涅耳项 混合几何属性如漫射反照率 大幅减少输入中的噪声 菲涅耳项用于告知 在给定交点处 有多少光会被反射 以及折射 左侧显示的是 主表面反照率 而右侧 则替换为合并的 反射与折射反照率

    这是一种名为 主表面替换的成熟技术 正确处理这一点将保持 反射清晰且锐利 现在你的材质效果丰富 反射和折射也清晰锐利 让我们深入第三条最佳实践 正确设置运动向量 正确的运动向量 对时间稳定性至关重要 运动向量是 每像素屏幕空间位移 从当前帧到上一帧 对于每个像素 运动向量 应回答这个问题 这个像素在上一帧 位于哪里 运动向量一直是 现代渲染技术的基石 正确设置运动向量 决定了运动中的结果 是模糊还是锐利 模型使用运动向量 来理解运动中的场景 以及时间上的变化 MetalFX需要去抖动的运动向量 即不含子像素偏移 若没有这个 MetalFX 可能收到 误差达一个像素的运动向量 导致边缘闪烁 以下是正确计算 它们的方法 这是计算静态对象 仅相机运动向量的代码 首先计算当前顶点 的投影位置 然后通过上一帧的矩阵 对相同位置进行投影 运动向量就是 两者之差 但由于相机矩阵经过了抖动 从当前帧中 减去抖动增量 和上一帧 最终得到干净的 无抖动运动向量 对于移动的对象 和变形几何体 仅相机路径 无法感知位移 存储每个顶点的上一帧 世界坐标 或蒙皮两次 并计算实际运动向量 对于运动真正不可靠的对象 如快速运动 如Alpha混合粒子 请使用响应式遮罩 有关响应式遮罩的更多信息 请查看"Go further with Metal 4 games" 这是实际效果的样子 Maxon的Redshift Live 采用了我刚才介绍的所有最佳实践 充分发挥MetalFX Denoising的性能 运行在Apple silicon上 并提供接近最终的图像质量 现在 我将带你 超越平台解决方案 分享如何构建你自己的 机器学习驱动解决方案 神经渲染 远不止去噪 越来越多的管线技术 正在转向基于机器学习 借助Metal 4 你拥有工具 来构建和部署你自己的 Metal 4为你提供两种方式 来引入自己的 机器学习技术 到管线中 机器学习命令编码器 让你部署训练好的模型 直接在命令缓冲区 的同一管线中 无需上下文切换 TensorOps API让你 构建小型硬件加速网络 直接在着色器中 有关两个API的更多详情 请查看 "Combine Metal 4 machine learning and graphics" 今天我将专注于色调映射 大多数渲染器都有 扩展的后处理管线 将HDR图像 正确映射 到可显示内容 并符合艺术愿景 如色调映射 色彩分级或胶片仿真 该管线由多个阶段组成 每个阶段都有其参数 并将输出级联传递 管线可能变得任意复杂 最佳结果来自于 理解图像的内容 而这正是 神经网络能够学习的 思路很简单 取你现有的整个 色彩管线或其一部分 用单个神经网络替换它 网络将学习 色彩变换 此类工作流的一个例子 叫做HDRNet 这是Gharbi及其同事 在2017年提出的架构 以下是它工作原理 的宏观概述 网络在图像的小型 降采样版本上工作 它进行两种类型的分析 全局和局部分析 以捕获场景级别和细节 此过程让网络能够 创建色彩变换 用于图像的16x16图块 这些局部变换被应用 采用智能的边缘感知技术 生成精美的 色调映射最终结果

    要创建此解决方案 你首先需要开发 并在你选择的框架中 训练网络 例如PyTorch 训练数据可来自 手动色调映射的历史项目 或你的渲染器 生成的大量色调映射图像 模型训练完成后 将其导出为MTLPackage 为了在Metal 4中 执行你的网络 在设置和实际执行阶段 各有几个步骤需要完成 以及实际执行阶段 首先你需要通过 加载MTLPackage来设置管线 使用函数描述符 指定网络函数 并创建 机器学习管线描述符 此过程与 加载常规管线非常相似 下一步是调度 你的网络执行 为此 你需要创建一个编码器 创建包含输入 和输出的参数表 最后调度命令缓冲区 这将启动执行 你将看到计算 机器学习和渲染工作 同时进行 这是更新后的管线 首先 你的路径追踪器 产生采样 接着是MetalFX去噪 和新的神经色调映射器 全部编码在同一命令缓冲区 在同一帧中执行 ML编码器替换了 你整个多阶段 后处理链 用单次神经评估代替 我已介绍了如何训练 和部署你的网络 现在 深入一个层次 构建小型网络 直接在着色器中 使用TensorOps API 到目前为止你探索了 大型通用网络 在非常大的数据集上 离线训练 现在我将展示相反的方法 针对单一任务的微型网络 参数量几千或更少 在你的场景数据上训练 有时甚至 每隔几帧在线训练 网络只处理一种场景 无需泛化 到目前为止 你已学会如何执行ML 作为独立步骤 在同一命令缓冲区中 这里它与计算 和渲染并行执行 然而一个小型网络 可以内联在你的着色器中 夹杂在其余代码中 ALU和纹理采样指令之间 关键的使能技术是TensorOps 可在渲染管线的 任意阶段使用 所有这些结合起来 开启了新的可能性和工作流 其中涉及在线训练 这里有一个例子 用于基于图像光照的天空盒 天空盒为场景中的几何体 投射光线 产生自然的柔和照明 柔和照明是以下结果 来自特定点 所有可见方向的平均光线 通常 此结果在离线预计算 并在运行时采样 然而场景很少是静态的 你可能有动态的昼夜循环 你的离线学习信号 可能不同步 这对神经网络来说 是一个可学习的函数 这正是在线训练 发挥作用的地方 以下是你可以 重现此技术的方法 基于你目前所学的 关于机器学习编码器的知识 简化的渲染循环 可能如下所示 首先 你更新你的世界 确保所有信息 都是最新的以便渲染 接下来 你调度 机器学习编码器 对模型运行推理 并生成所需的 光照信息 你稍后将用于着色 在线训练颠覆了这一模式 通过创建你自己的 训练和推理例程 你可以每帧运行 一次或多次训练迭代 以提高模型精度 这是在线训练循环 针对天空照明模型 的样子 你首先生成 一个你想采样的方向 并对你的模型运行推理 以获得结果 然后你能够计算 解析解 用于天空照明问题 以此计算误差 最后 运行反向传播 以逐步提升模型 这与你离线训练时 使用的流程完全相同 但这次是在 多个帧上重复训练迭代

    现在你正在运行 自己的推理和训练例程 这让你能够 运行推理过程 内联在你的着色过程中 TensorOps将让你 非常高效地实现这一点 你现在拥有一个 每帧都会适应 新世界状态的模型 并可立即使用此信息 进行着色 这用以下方式是不可能实现的 标准的离线训练工作流 此概念可推广到 任何能够学习信号的技术 以下是如何开始 构建你自己的解决方案 从高层次看 神经网络 由以下部分组成 三个主要构建模块 输入层 处理网络输入 也称为输入特征 输出层 生成 网络的最终预测 最后是隐藏层 学习的魔法 在此发生 天空探针是一个小型网络 隐藏层组由 两个各含四个神经元的隐藏层组成 网络以三个浮点数作为输入 来编码一个方向 并生成三个浮点数作为输出 代表来自该方向的平均照明 以颜色形式表示 这被称为 全连接多层感知机 简称MLP 即3-4-4-3网络 你可以尝试不同的输入大小 层的数量和大小 以获得你应用程序 的最佳结果 为了能够评估你的网络 你需要准备输入张量 最好同时批量处理多个输入 使其成为二维矩阵 对于天空探针示例 这将是一个二维矩阵 包含一批你希望评估的 输入方向 但输入可以包含 对网络有用的任何数据 如位置或材质数据 同样的原则适用于 输出张量 对于天空探针 将其设为批量颜色的二维矩阵 现在你已了解 MLP的结构 以下是如何在 着色器中实现它 并在前向传递中评估它 现在你已准备好开始评估 你有输入张量 和第一个隐藏层权重张量 你可以使用 二维矩阵乘法张量操作将两者相乘 你将获得预激活结果 你需要对其应用 激活函数 在此之前 你需要 存储矩阵乘法结果 我将介绍如何高效地做到这一点 你可能熟悉 线程执行范围 单个线程将负责 执行整个张量操作 这非常适合执行 分支工作或在管线阶段中 你无法完全控制 线程组的情况下 然而当你拥有完全控制时 新的可能性就会出现 在计算阶段 你可以使用 SIMD组执行范围 所有参与线程将 共同完成相同的矩阵乘法 此执行模式还将 让你访问协作张量 协作张量的存储 是分布式的 分布在线程组中 的多个线程之间 避免了昂贵的 主内存往返 通过将协作张量用作 第一次乘法的输出 结果将保留在 快速线程存储内存中 然后你可以就地 应用激活函数 现在你可以对 矩阵乘法重复相同操作 以及下一层的激活 以及所有后续层 一直到输出层 在那里你可以存储结果张量 并立即或在后续阶段 在计算着色器中利用结果 左侧是使用光线追踪 计算的真值渲染 右侧是神经渲染版本 这个小型神经网络 能够高效地学习信号 这是如何构建MLP 的高级概述 并使用TensorOps 在着色器中评估它 完全相同的构建模块 可用于创建高效的 反向传播过程 用于在线训练步骤 有关所有代码详情 请查看"Metal Performance Primitives (MPP) Programming Guide" 总结一下 今天 我介绍了渲染管线中 机器学习的三个层次 首先 MetalFX提供 平台集成的神经去噪 遵循三条最佳实践 保持输入干净 存储观看者所见的内容 正确设置运动向量 其次 MTLPackage让你导出 你的离线训练模型 并在运行时部署 你学会了如何替换整个 后处理管线 用一次神经评估 最后 我介绍了 TensorOps API 它让你直接在着色器中 构建微型网络 运行在神经加速器上 每个层次都给你 更多控制 选择最适合你App的那个 下载Xcode并探索 Metal 4示例代码 如果你的App有实时要求 如专业App或游戏中的视口 采用MetalFX Denoising和Upscaling 尝试使用你自己的 后处理管线训练神经色调映射器 并使用Tensor API 尝试小型专用网络 查看我们往年的讲座 获取更多详情

    我迫不及待地想看到 你构建的成果

    • 8:46 - Compute camera-only motion vectors

      #include <metal_stdlib>
      using namespace metal;
      
      // Compute camera-only motion vectors
      float4 clipCurrent = viewProjCurrent * float4(worldPos, 1.0);
      float2 ndcCurrent = clipCurrent.xy / clipCurrent.w;
      
      float4 clipPrevious = viewProjPrevious * float4(worldPos, 1.0);
      float2 ndcPrevious = clipPrevious.xy / clipPrevious.w;
      
      float2 motion = ndcPrevious - ndcCurrent;
      
      // Get subpixel offset for current and previous frames
      float2 jitterCurrent = getJitter(frameIndex);
      float2 jitterPrevious = getJitter(frameIndexPrevious);
      motion -= jitterPrevious - jitterCurrent;
    • 0:00 - Introduction
    • An overview of how machine learning is transforming real-time rendering pipelines on Apple platforms, and a preview of three levels of ML integration: MetalFX Denoising, deploying custom networks with Metal 4, and building tiny networks inline in shaders with tensorOps.

    • 2:16 - MetalFX Denoising
    • How to integrate MetalFX Denoising into a path tracer running at one sample per pixel. Covers auxiliary inputs (albedo, depth, motion vectors), best practices for clean inputs, transparency overlays, the denoiser strength mask, and primary surface replacement for mirrors and glass — illustrated with Redshift Live from Maxon.

    • 9:57 - Deploy custom ML networks with Metal 4
    • How to train a neural tone mapper offline (e.g., HDRNet), export it to Metal Performance Shaders Graph, and execute it inside a Metal 4 command buffer alongside your existing rendering passes to replace complex post-processing pipelines with a single network.

    • 13:40 - Inline neural networks with tensorOps
    • How to build and run small multilayer perceptrons directly inside Metal shaders using the TensorOps API and cooperative tensors. Demonstrates an online-trained sky visibility probe that adapts to dynamic scenes each frame — enabling ML inference and training that runs alongside your existing compute and render work.

    • 20:55 - Next steps
    • A recap of the three levels of ML integration in rendering pipelines, and guidance on where to start: download Xcode, explore Metal 4 sample code, and adopt MetalFX denoising for real-time applications first.

Developer Footer

  • 视频
  • WWDC26
  • 使用 Metal 构建实时神经网络渲染管线
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • Apple 智能
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • Mini Apps Partner Program
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    阅读最近新闻。
    获取 Apple Developer App。
    版权所有 © 2026 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则