AMD FidelityFX™ SDK v2
AMD FidelityFX™ SDK v2 是我们基于 ML 的渲染技术的启动平台,包括 AMD FSR 4 和即将推出的 FSR Redstone 功能。
我们很高兴地宣布,AMD FidelityFX 软件开发工具包 (SDK) 现已可供下载!
AMD FidelityFX SDK 是我们新的、易于集成的解决方案,旨在帮助开发者在不经历复杂移植过程的麻烦下,将 AMD FidelityFX 技术集成到他们的游戏中。简而言之,它就是 AMD FidelityFX 图形中间件。
在过去几年中,随着我们不断发布 AMD FidelityFX 技术,我们已成为行业内使用最广泛、最受信赖的技术合作伙伴之一。我们出色的开源技术现已应用于超过 250 款游戏中,这些游戏由一些业界巨头开发。
随着我们的 AMD FidelityFX 技术不断发展并得到更广泛的应用,我们认识到在开发者集成技术方面还有许多可以改进的地方。AMD FidelityFX SDK 正是我们致力于为所有出色的 AMD FidelityFX 技术带来简洁性、结构和一致性的成果。
值得注意的是,SDK 具有
首先,我们增加了三项新效果

AMD FidelityFX Blur 是一种基于计算的、高度优化的高斯模糊技术,用 HLSL 实现。
有关此全新效果的更多信息,请查看 GPUOpen 上的 AMD FidelityFX Blur。

AMD FidelityFX Depth of Field (DoF) 是一种旨在重现相机镜头产生的散景景深效果的技术。
有关详情,请查看 GPUOpen 上的 AMD FidelityFX Depth of Field。

AMD FidelityFX Lens 是一款轻量级的着色器,可实现镜头和胶片效果。目前,Lens 包含三种不同的效果
GPUOpen 上的 AMD FidelityFX Lens 页面包含有关此全新效果的更多信息。
我们还更新了所有现有的 AMD FidelityFX 技术,并将其改编为 AMD FidelityFX SDK 的一部分

AMD FidelityFX Combined Adaptive Compute Ambient Occlusion (CACAO) 是一种高度优化的环境光遮蔽实现,它使用智能和自适应采样技术,以高性能实现出色的环境光遮蔽质量。
v1.3 引入了查看纯 AO 和亮化 AO 结果的功能。
GPUOpen 上的 AMD FidelityFX CACAO 页面展示了 CACAO 的一些实际应用示例。

AMD FidelityFX Contrast Adaptive Sharpening (CAS) 是一种低开销的自适应锐化算法,具有可选的上采样功能,旨在提供自然的锐化效果,而不会产生伪影。
v1.1 引入了暴露上采样选项的选项。
请查看 AMD FidelityFX CAS 页面了解所有详情。

AMD FidelityFX Super Resolution (FSR 1 和 2) 技术1是我们强大的上采样解决方案,可让您从低分辨率输入生成清晰、高分辨率的图像。
FSR 1.1 和 FSR 2.2.1 的示例已更新,并合并到一个示例中以用于 AMD FidelityFX SDK。
要开始使用我们的上采样器,最佳起点是 AMD FSR 1 和 AMD FSR 2 页面。



AMD FidelityFX Luminance Preserving Mapper (LPM) 是一种用于 HDR 和宽色域内容的色调映射和色域映射解决方案。
v1.3 在 Vulkan® 中提供了更好的 HDR 处理,并修复了 Vulkan 和 DirectX® 的各种操作系统和交换链问题。
查看 AMD FidelityFX LPM 页面,了解 LPM 在真实游戏中的一些使用示例。


AMD FidelityFX Parallel Sort 提供了一个易于集成的开源头文件实现,该实现是一个高度优化的计算式基数排序。它可用于对粒子或其他数据集进行排序。
v1.2 已应用各种修复。
有关更多信息和算法细节概述,请访问 AMD FidelityFX Parallel Sort 页面。

AMD FidelityFX Single Pass Downsampler (SPD) 提供了一个针对 AMD RDNA™ 架构优化的解决方案,无需多个中间步骤即可生成纹理的 MIP 级别,最多可达 12 个。
v2.1 允许您选择滤波器核。以前只能使用平均值,现在您还可以使用最小值和最大值。
有关 SPD 的更多信息,请参阅 AMD FidelityFX SPD 页面。


AMD FidelityFX Stochastic Screen Space Reflections (SSSR) 是一种高度优化的分层屏幕空间遍历内核,用于实现反射。这使您能够创建场景中的高保真反射,而不会带来过高的成本。
AMD FidelityFX Denoiser 提供了一组降噪计算着色器,用于去除反射和阴影渲染中的伪影。可用于光线追踪或栅格化内容。Denoiser 的示例包含在 SSSR 中。
v1.4 (SSSR) 和 v1.2 (Denoiser) 根据过去的集成已应用各种错误修复。
有关 AMD FidelityFX SSSR 如何工作以及效果的一些实际应用示例的概述,请查看 GPUOpen 上的 AMD FidelityFX SSSR 页面。

AMD FidelityFX Variable Shading (VS) 提供了一个开源头文件实现,用于轻松将可变速率着色集成到您的游戏中。
v1.1 也应用了各种修复。
有关此效果的详细信息,请参阅 AMD FidelityFX Variable Shading 页面。
现在加入 FidelityFX SDK 的,我们提供混合光线追踪示例,非常适合演示如何将传统栅格化技术与光线追踪相结合,以获得快速、高质量的结果。

AMD FidelityFX Hybrid Reflections 示例展示了如何将 AMD FidelityFX Stochastic Screen Space Reflections (SSSR) 与光线追踪相结合,以创建高质量的反射。
v1.1 引入了 Vulkan 支持。
请访问 AMD FidelityFX Hybrid Reflections 页面了解更多信息。


AMD FidelityFX Hybrid Shadows 示例展示了一种将传统栅格化阴影与光线追踪相结合的方法,以创建快速、高质量的软阴影。
v1.1 引入了 Vulkan 支持。
AMD FidelityFX Hybrid Shadows 示例的对比图像集合显示在 AMD FidelityFX Hybrid Shadows 页面上。
上手 SDK 非常简单
将 SDK 库下载或构建到您的系统上。
将 SDK 库构建或链接到您的游戏/应用程序解决方案中。
在应用程序启动时,根据所需的特性上下文数量查询后端所需的内存量(以下显示了如何查询 SPD 和 Blur 的 dx12 后端内存需求)
#include <FidelityFX/ffx.h>#include <FidelityFX/host/backends/dx12/ffx_dx12.h>
// Query required memory for FidelityFX backend.const size_t scratchBufferSize = ffxGetScratchMemorySizeDX12(FFX_SPD_CONTEXT_COUNT + FFX_BLUR_CONTEXT_COUNT)// Allocate required backing memoryvoid* scratchBuffer = malloc(scratchBufferSize);FFX_ASSERT(scratchBuffer);
// Initialize the FFX SDK backendFfxInterface* backendInterface = NULL;FfxErrorCode errorCode = ffxGetInterfaceDX12(&backendInterface, dx12Device, scratchBuffer, scratchBufferSize, FFX_SPD_CONTEXT_COUNT + FFX_BLUR_CONTEXT_COUNT);// FidelityFX SPD information FfxSpdContextDescription spdInitParams = {}; FfxSpdContext spdContext = {};
// Setup and create SPD contextspdInitParams.flags = FFX_SPD_SAMPLER_LINEAR | FFX_SPD_WAVE_INTEROP_WAVE_OPS | FFX_SPD_MATH_PACKED;spdInitParams.downsampleFilter = FFX_SPD_DOWNSAMPLE_FILTER_MEAN;spdInitParams.backendInterface = backendInterface;errorCode = ffxSpdContextCreate(&spdContext, &spdInitParams);FFX_ASSERT(errorCode == FFX_OK);
// FidelityFX BLUR information FfxBlurContextDescription blurInitParams = {};FfxBlurContext blurContext = {};
// Setup and create BLUR contextblurInitParams.backendInterface = backendInterface;blurInitParams.kernelSizes = FFX_BLUR_KERNEL_SIZE_ALL; // allow all kernel sizesblurInitParams.floatPrecision = FFX_BLUR_FLOAT_PRECISION_16BIT;errorCode = ffxBlurContextCreate(&blurContext, &blurInitParams);FFX_ASSERT(errorCode == FFX_OK);// Execute FidelityFX SPD FfxSpdDispatchDescription spdDispatchParams = {}; spdDispatchParams.commandList = pCmdList; spdDispatchParams.resource = ffxGetResourceDX12(downsampleResource, L"SPD_Downsample_Resource", FFX_RESOURCE_STATE_PIXEL_COMPUTE_READ, FFX_RESOURCE_USAGE_ARRAYVIEW);
FfxErrorCode errorCode = ffxSpdContextDispatch(&spdContext, &spdDispatchParams); FFX_ASSERT(errorCode == FFX_OK);
// Execute FidelityFX BLUR FfxBlurDispatchDescription blurDispatchParams = {};blurDispatchParams.commandList = pCmdList;blurDispatchParams.kernelSize = FFX_BLUR_KERNEL_SIZE_13x13;blurDispatchParams.inputAndOutputSize.width = AppGetWidth();blurDispatchParams.inputAndOutputSize.height = AppGetHeight();blurDispatchParams.input = ffxGetResourceDX12(inputResource, L"MyBlurInput", FFX_RESOURCE_STATE_PIXEL_COMPUTE_READ);blurDispatchParams.output = ffxGetResourceDX12(outputResource, L"MyBlurOutput", FFX_RESOURCE_STATE_UNORDERED_ACCESS);
errorCode = ffxBlurContextDispatch(&blurContext, &blurDispatchParams);FFX_ASSERT(errorCode == FFX_OK);// Flush the GPU before releasing contexts/backends!GPUFlush();
// Destroy FidelityFX SPDffxSpdContextDestroy(&spdContext);
// Destroy FidelityFX BLUR ffxBlurContextDestroy(&blurContext);
// Destroy FidelityFX SDK backendfree(backendInterface.scratchBuffer);完整的源代码和二进制文件现已在 GitHub 上以 MIT 许可证提供。
不要忘记查看我们丰富的 AMD FidelityFX SDK 文档。
当然,请务必访问我们 GPUOpen 上的全新 AMD FidelityFX SDK 主页!
您是否有功能请求或发现了 SDK 的问题?请联系您的 AMD 代表,或通过 Twitter 上的 @GPUOpen 或 mastodon.gamedev.place 上的 @GPUOpen 与我们联系。
所有请求和反馈对我们都非常有价值,我们将阅读并尽力回复每一个人。
1AMD FidelityFX Super Resolution (FSR) 版本 1 和 2 可在特定游戏中获得,需要游戏开发者集成,并支持特定的 AMD 产品。AMD 不为在其他供应商显卡上启用 AMD FidelityFX Super Resolution 提供技术或保修支持。请参阅 https://www.amd.com/en/technologies/fidelityfx-super-resolution 获取更多信息。GD-187
其他开发者和游戏归属: https://www.amd.com/en/corporate/game-attributions © 2023 Advanced Micro Devices, Inc. 保留所有权利。AMD、AMD 箭头标志、FidelityFX、Radeon、RDNA 以及它们的组合是 Advanced Micro Devices, Inc. 的商标。DirectX 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。Vulkan 和 Vulkan 标志是 Khronos Group Inc. 的注册商标。本出版物中使用的其他产品名称仅用于标识目的,可能是其各自所有者的商标。