GPUOpen

GPUOpen是一套中间件，由AMD Radeon 开发，发布于2016年。GPUOpen的主要竞争对手是Nvidia GameWorks。与 GameWorks 相似，GPUOpen是多种独立技术的整合包。GPUOpen 是部分开源的。

## 历史

GPUOpen于2015 年 12 月 15 日公示，并于 2016 年 1 月 26 日发布。

AMD 将独立的工具整合起来，以统一的软件包GPUOpen发布，并以 MIT 许可证完全开源。GPUOpen 赋予开发人员更底层的 GPU 控制权限。

此外，AMD希望开发者能与GCN架构GPU的底层“直接交互”，赋予超越Direct3D 12与Vulkan的能力。例如，作为GPUOpen的组件之一，异步计算引擎（ACE）实现了真正的“异步计算”。

GPUOpen 由多个组件、工具和 SDK 组成。

### 游戏和CGI

GPUOpen有计算机生成图像(CGI)，广泛应用于计算机游戏和电影的开发。

#### 视觉特效库

姓名｜API｜来源｜描述

TressFX｜DirectX 12、 Vulkan｜GitHub｜主要处理诸如毛发，草地等材质

GeometryFX｜DirectX 11｜GitHub｜提供三角滤波器等

DepthOfFieldFX｜DirectX 11｜GitHub｜通过计算着色器提供对针对GCN GPU 架构优化的景深实现。

ShadowFX｜DirectX 11、 DirectX 12｜GitHub｜提供了一个针对GCN GPU 架构优化的延迟阴影过滤实现。

FidelityFX｜DirectX 11、 DirectX 12、 Vulkan｜GitHub｜一套视觉特效辅助库

#### FidelityFX

姓名｜算法｜来源｜描述

FidelityFX CAS｜对比度自适应锐化｜GitHub｜该算法能够自适应地锐化图像或场景，同时最大限度地减少伪影。

FidelityFX CACAO｜组合自适应计算环境光遮蔽｜GitHub｜该算法是自适应环境光遮蔽算法的优化实现。

FidelityFX LPM｜亮度保持映射器｜GitHub｜该算法用于对 RGB 像素的亮度进行色调映射，而不是对像素的颜色进行色调映射。

FidelityFX SPD｜单次降采样器｜GitHub｜该算法针对RDNA GPU 架构进行了优化，用于为给定的纹理生成 12 个MIP级别。

FidelityFX SSSR｜随机屏幕空间反射｜GitHub｜该算法用于向帧或场景添加屏幕空间反射。

FidelityFX 对比｜可变阴影｜GitHub｜该算法利用前一帧中样本的亮度来生成基于图像的可变速率着色。

FidelityFX 并行排序｜基数排序｜GitHub｜该算法提供了一种基于计算的基数排序方法。

FidelityFX 降噪器｜阴影和反射降噪器｜GitHub｜该算法为光线追踪阴影和光线追踪或屏幕空间反射提供降噪功能。

FidelityFX 超分辨率 1｜空间上采样器｜GitHub｜该算法仅使用输入帧中提供的空间信息，将图像或帧上采样到更高的分辨率。

FidelityFX 超分辨率 2｜时间放大器｜GitHub｜该算法利用输入帧提供的时间信息，将帧放大到更高的分辨率。

#### FidelityFX 超分辨率

FidelityFX 超分辨率（FSR）用于将输入图像上采样到更高的分辨率。FSR 有多个版本，它们采用不同的放大技术，提供不同的图像质量。* FSR 1 是一种空间超分辨率技术，其原理与Lanczos 算法类似，需要输入经过抗锯齿处理的低分辨率图像。该技术首先进行边缘重建和梯度反转处理，随后再通过一个对比度自适应的锐化步骤（RCAS）来恢复画面细节，让最终成像更加清晰。AMD 官方说明如下：FSR 主要包含两个核心处理阶段：* FSR 2 是一种时域超分辨率技术，基于改进的Lanczos 算法，需要输入未经抗锯齿处理的低分辨率图像，它充分利用时序数据（如运动矢量和帧历史）来重建画面。在此基础上，FSR 2 还会执行自带的抗锯齿处理步骤，直接替代游戏原本的内置抗锯齿方案，从而在提升分辨率的同时有效抑制画面锯齿和闪烁。* FSR 3 新增了帧生成技术和"原生抗锯齿"功能。帧生成能够有效提升游戏的感知帧率，让画面运行更加流畅。而"原生抗锯齿"功能与 Nvidia 的 DLAA 类似，可以在不进行超分辨率上采样的前提下单独使用，以提供更出色的抗锯齿效果；该功能还可以与帧生成以及 Anti-Lag+ 技术组合使用，进一步优化游戏体验。

下表列出了 AMD 的 FSR 标准预设值。请注意，这些预设值并不一定是实际效果，它们只是输入/输出分辨率的预设值。某些游戏，例如Dota 2，提供了分辨率滑块，可以微调缩放百分比或根据帧率上限动态调整内部渲染分辨率。AMD 还提供了一个命令行界面工具，允许用户使用 FSR1/EASU 以及其他升频方法（例如双线性插值）来放大任何图像。它还允许用户独立运行 FSR 管线的各个阶段，例如 RCAS。

版本号｜发布日期｜精彩片段

1.0 / 1.0.1｜2021年6月｜FidelityFX 超分辨率 (FSR) 于 2021 年 7 月发布，源代码可供查阅。

1.0.2｜2021年11月｜修复 RCAS 过度锐化。

1.1｜2023年7月｜现在可通过 FidelityFX SDK 获取。

2.0.1 / 2.0.1a｜2022年3月｜FidelityFX Super Resolution 2.0 (FSR 2) 于 2022 年 6 月发布，源代码也于 2022 年 6 月提供。

2.1.0｜2022年9月｜减少了重影并提高了放大质量。《模拟农场2022》是最早一批采用1.7.1补丁的游戏之一。

2.1.1｜2022年9月

2.1.2｜2022年10月

2.2.0 / 2.2.0a｜2022年11月｜HDR范围改进，重影和闪烁伪影减少。源代码于2023年2月发布。

2.2.1｜2023年6月

2.2.2｜2023年7月｜包含在 FidelityFX SDK 中。

3.0 / 3.0.3｜2023年9月｜FSR 3 结合了 FSR 2 的帧生成功能和 Anti-Lag+ 技术，并支持 AMD、Nvidia 和 Intel 的 GPU。FSR 3 也兼容第九代游戏主机。源代码于 2023 年 12 月作为 FidelityFX SDK 的一部分提供。

3.0.4｜2024年3月

3.1.0｜2024年6月｜减少了重影、闪烁和抖动，提高了时间稳定性。将帧生成与放大分离。使源文件易于开发者升级。支持 Vulkan 和 Xbox 游戏开发工具包 (GDK)。源代码将于 2024 年 7 月作为 FidelityFX SDK 1.1 的一部分提供。

质量预设｜比例因子｜渲染比例

原生AA（v3.0+）｜1.00倍｜100%

超高清画质（仅限 v1.0）｜1.30倍｜77.0%

质量｜1.50倍｜66.6%

均衡｜1.70倍｜58.8%

表现｜2.00倍｜50.0%

超高性能（v2.0+）｜3.00倍｜33.3%

通过将 DLSS DLL 替换为将 DLSS API 调用映射到 FSR 2 API 调用的转译层 DLL，可以将 FSR 2 集成到几乎所有支持 DLSS 的游戏中。

#### 帧生成

FSR 3 新增了帧生成功能，这项技术利用运动插值在现有帧之间创建新帧。FSR 3 于 2023 年 9 月发布，它结合了 FSR 2 和光流分析技术，采用异步计算（与使用专有硬件的 Nvidia DLSS 3 不同）。由于 FSR 3 采用软件解决方案，因此兼容 AMD、Nvidia 和 Intel 的 GPU 以及第九代游戏主机。同时，AMD 了一项名为 Anti-Lag 的驱动程序级功能，以应对帧生成的额外延迟，该功能仅适用于 AMD GPU。

AMD 流体运动帧 (AFMF) 是一项驱动程序级别的帧生成技术，于 2024 年第一季度发布，它兼容所有 DirectX 11 和 DirectX 12 游戏，但仅适用于 RDNA 2 和 RDNA 3 GPU。AFMF 使用光流分析而非运动矢量，因此只能在两个传统渲染帧之间插值生成新帧。AFMF 目前与垂直同步 (VSYNC) 不兼容。

#### 工具

AMD官方目录列表如下：

姓名｜源代码｜API｜操作系统｜任务

CodeXL｜CodeXL｜Direct3D、OpenGL、OpenCL、 Vulkan｜Linux、Windows｜软件开发工具套件，包括 GPU 调试器、GPU 分析器、CPU 分析器、静态 OpenCL 内核分析器和各种插件。

AMD CodeXL静态分析器｜amd-codexl-analyzer｜Direct3D、OpenGL、OpenCL｜Linux、 Windows x64｜用于处理 OpenCL 内核、 HLSL 着色器和GLSL 着色器的离线编译器和性能分析CLI工具AMD CodeXL 工具套件的一部分运行此工具需要安装Radeon Software Crimson Edition 或AMD Catalyst。

D3D 12 GPU ProfStudio｜amd-gpuperfstudio-dx12｜Direct3D 12｜Windows｜GPU PerfStudio的插件 GPU perfstudio

Tootle｜amd-tootle｜agnostic｜Linux、Windows｜三角形顺序优化工具；最初开发于 2006 年；可以轻松集成到渲染或网格预处理工具链中参见

HLSL2GLSL由 ATI Technologies 于 2006 年以 BSD 许可证发布，因此不属于 GPUOpen 的一部分。GPUOpen 一部分的源代码也包含在 Linux 内核（例如 amdgpu 和 amdkfd）、Mesa 3D 和 LLVM 中。

#### 软件开发工具包

姓名｜来源｜API｜操作系统｜任务

高级媒体框架（AMF） SDK｜GitHub｜DirectX 12｜Linux、Windows x64｜轻量级、可移植的多媒体框架，它抽象化了大部分平台和 API 特定的细节。

AMD GPU 服务 (AGS) SDK｜GitHub｜DirectX｜Windows x64

LiquidVR SDK｜GitHub｜Direct3D 11｜Windows｜提升虚拟现实的流畅度。其目标是降低硬件间的延迟，使硬件计算能力能够跟上用户的头部运动，从而消除晕动症。核心是双GPU配置，其中每个GPU将分别渲染显示器上每只眼睛的画面。

Radeon 机器学习 (RML) SDK｜GitHub｜DirectX 12、 Metal、 OpenCL｜Linux、OS X、Windows

Radeon ProRender SDK （原名 FireRender）｜GitHub｜OpenCL｜Linux、macOS、Windows｜基于物理的渲染引擎

RadeonRays SDK （原名 FireRays）｜GitHub｜DirectX 12， Vulkan｜Linux x64、OS X、Windows x64｜适用于任何平台上的 GPU 和 CPU 或 APU 的高效、高性能异构光线追踪交加速库。

RapidFire SDK｜GitHub｜DirectX、 OpenGL｜Windows｜支持使用 AMD 的视频压缩加速 SIP 模块VCE （H.264 编码器）和UVD （H.264 解码器）进行“云游戏”/异地渲染

True Audio Next (TAN) SDK｜GitHub｜OpenCL｜Windows x64｜用于 Radeon GPU 加速和多核高性能音频信号处理的 SDK。

### 专业计算

截至 2022 年，AMD 计算软件生态系统已在ROCm元项目下重新整合。

异构系统架构(HSA)、图形处理单元通用计算(GPGPU) 和高性能计算(HPC) 的软件:：

#### Radeon Open Compute (ROCm)

AMD 的“玻尔兹曼计划”（以路德维希·玻尔兹曼的名字命名）于 2015 年 11 月在 SuperComputing15 大会上发布，后更名 Radeon 开放计算平台 (ROCm)。作为英伟达CUDA的替代方案，ROCm包括一个将 CUDA 源代码移植到可移植 (HIP) 源代码的工具，使其可以同时在 HCC 和NVCC上编译。

- Radeon Open Compute Kernel (ROCK) 驱动程序
- Radeon Open Compute Runtime (ROCR) 运行时
- HCC：异构计算编译器
- HIP：C++异构计算接口（用于可移植性）

#### 异构系统架构

- HSAIL-GDB：为HSA 中间层(HSAIL) 提供基于GNU 调试器的调试环境。
- HSA运行时API
- Linux amdkfd v1.6.1 版本发布，适用于 Kaveri 和 Carrizo

#### 其他工具（已弃用）

- clFFT 库，用于快速傅里叶变换，用 OpenCL 编写
- 用于快速傅里叶变换的 hcFFT 库，用 HCC 优化的 C++ 编写。

## 可用性

GPUOpen 与一些成熟且广泛应用的自由软件项目（如Linux 内核、 Mesa 3D和LLVM）之间存在着关联。

## 参见

- ROCm
- AMD CodeXL
- Mantle
- Vulkan
- DLSS，英伟达针对FSR的替代技术。
- XeSS，英特尔针对FSR的替代技术。

## 外部链接

- https://gpuopen.com/
- List of games that support high-fidelity upscaling - 支持相关技术的游戏列表

## 基本资料

- 作者：AMD
- 开发者：AMD
- 发行日期：2016年1月26日
- 编程语言：C语言, C++, GLSL
- 操作系统：Linux, Microsoft Windows
- 类型：游戏特效组件库, GPU 调试, CPU & GPU 优化
- 许可协议：MIT许可证