news 2026/10/4 9:41:11

FidelityFX SDK Samples 构建指南:从环境准备到 Visual Studio 生成与运行(DX12/VK)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FidelityFX SDK Samples 构建指南:从环境准备到 Visual Studio 生成与运行(DX12/VK)
  • 图形学
  • 游戏开发

【免费下载链接】dlssg-to-fsr3

Adds AMD FSR 3 Frame Generation to games by replacing Nvidia DLSS Frame Generation (nvngx_dlssg).

项目地址:https://gitcode.com/gh_mirrors/dl/dlssg-to-fsr3
点击查看免费下载

本篇指南基于 AMD FidelityFX SDK 官方文档《Building FidelityFX SDK Samples》展开,完整讲解如何从零生成并构建 SDK 附带的全部示例程序(Samples):包括所需工具链的最低版本要求、BuildSamplesSolutionDX12.bat/BuildSamplesSolutionVK.bat批处理的交互式流程与背后的 CMake 行为,以及在 Visual Studio 中编译、启动与运行示例的完整步骤。读完本文,你将能够在 Windows 上独立生成FidelityFX SDK [DX12/VK] Samples.sln解决方案,并针对 DX12 或 Vulkan 后端自由选择要构建的 FidelityFX 效果示例。

概述:FidelityFX SDK 与示例程序的关系

FidelityFX SDK 是一套开源的、面向 DirectX 12 与 Vulkan 的高性能图形效果集合(着色器与运行时代码),涵盖超分辨率、帧生成、环境光遮蔽、阴影、景深、模糊、镜头效果等数十种效果,全部示例均使用 C++ 编写,并基于 FidelityFX Cauldron Framework 示例框架构建(见 SDK 官方介绍)。

在仓库中,FidelityFX SDK 位于 dependencies/FidelityFX-SDK 目录下。其构建体系分为两层:

  1. SDK 后端层:由 sdk/BuildFidelityFXSDK.bat 驱动,负责把效果组件与对应图形 API 后端编译成静态库或 DLL;
  2. 示例层:由 BuildSamplesSolutionDX12.bat 或 BuildSamplesSolutionVK.bat 驱动,先生成/构建 SDK 后端,再生成包含所有示例工程的 Visual Studio 解决方案。

前置条件:工具链与最低版本要求

要构建 SDK 示例,首先需要安装以下软件开发工具,并满足最低版本要求(引用自官方文档):

工具最低版本要求用途
CMake3.17 - 3.30项目配置与解决方案生成(本仓库 SDK 层实际要求cmake_minimum_required(VERSION 3.23),见 sdk/CMakeLists.txt)
Visual Studio2019编译示例程序并承载解决方案(.sln)
Windows 10 SDK10.0.18362.0Windows 平台头文件与库
Vulkan SDK1.3.239构建 Vulkan 后端示例所需的 Vulkan 头文件、验证层与工具

注意:即使只构建 DX12 后端,官方文档仍建议安装 Vulkan SDK——SDK 的着色器编译工具链(如glslangValidator.exe)与若干共享工具会依赖它。

从源码看,CMake 版本约束在 dependencies/FidelityFX-SDK/CMakeLists.txt#L23 与 dependencies/FidelityFX-SDK/sdk/CMakeLists.txt#L23 中均被声明为 3.23 及以上,因此若你的 CMake 版本介于 3.23 与 3.30 之间,可以同时满足文档要求与源码约束。

生成 Visual Studio 解决方案:两种批处理脚本

安装好上述工具后,进入 FidelityFX SDK 根目录(即仓库中的 dependencies/FidelityFX-SDK),根据目标图形 API 运行对应的批处理脚本:

# DirectX 12 后端 > BuildSamplesSolutionDX12.bat # Vulkan 后端 > BuildSamplesSolutionVK.bat

交互式问答:是否将 SDK 构建为 DLL

脚本运行后会首先询问:

Build the SDK as DLL [y/n]?
  • 输入y:将 SDK 构建为动态链接库(DLL)。脚本会追加-DFFX_BUILD_AS_DLL=1编译选项(见 BuildSamplesSolutionDX12.bat),生成的可执行文件在运行时动态加载 SDK DLL;
  • 输入n(或其它字符):将 SDK 构建为静态链接库,效果组件代码直接静态链接进示例程序。

对应到源码,该逻辑在 BuildSamplesSolutionDX12.bat#L35-L41 中实现,Vulkan 版本完全一致(BuildSamplesSolutionVK.bat#L35-L41)。

交互式问答:选择要构建的示例

随后脚本会打印一份示例清单并询问:

1. ALL 2. BLUR 3. BREADCRUMBS 4. BRIXELIZER GI 5. CACAO 6. CAS 7. DOF 8. FSR 9. HYBRID REFLECTIONS 10. HYBRID SHADOWS 11. LENS 12. LPM 13. PARALLEL SORT 14. SPD 15. SSSR 16. VRS Enter numbers of which samples to build [space delimitted]:
  • 输入1:构建全部示例(对应 CMake 选项-DFFX_ALL=ON);
  • 输入一组以空格分隔的编号(如2 5 8):仅构建对应示例。

每个编号会映射为对应的 CMake 开关(FFX_BLUR、FFX_CACAO、FFX_FSR等),同时脚本还会自动补充示例所依赖的 SDK 组件。例如:

  • 选择4 BRIXELIZER GI时,脚本会同时开启FFX_BRIXELIZER与FFX_BRIXELIZER_GI(BuildSamplesSolutionDX12.bat#L78-L81);
  • 选择9 HYBRID REFLECTIONS时,会一并开启FFX_CLASSIFIER、FFX_DENOISER、FFX_SPD(BuildSamplesSolutionDX12.bat#L98-L101);
  • 选择15 SSSR时会一并开启FFX_DENOISER(BuildSamplesSolutionDX12.bat#L122-L125)。

这些依赖关系同样体现在 CMake 侧:例如 dependencies/FidelityFX-SDK/sdk/CMakeLists.txt#L152-L160 中,开启FFX_FSR3会自动默认开启FFX_FSR3UPSCALER、FFX_FI、FFX_OF三个 API;开启FFX_SSSR会自动默认开启FFX_DENOISER。

脚本背后的完整构建流程

两个批处理脚本的流程完全一致,以 DX12 版本为例(BuildSamplesSolutionDX12.bat):

  1. 架构检测:根据PROCESSOR_ARCHITECTURE环境变量自动判定为X64或ARM64,并追加-Ax64(或-AARM64)与-DCMAKE_GENERATOR_PLATFORM参数(BuildSamplesSolutionDX12.bat#L134-L144);
  2. 构建 SDK 后端:进入sdk子目录调用BuildFidelityFXSDK.bat,传入后端选项-DFFX_API_BACKEND=DX12_X64与用户选择的组件开关(BuildSamplesSolutionDX12.bat#L147-L153);
  3. 清理旧缓存:在根目录创建build\目录,并删除其中的CMakeFiles\与CMakeCache.txt,避免脏缓存影响新配置(BuildSamplesSolutionDX12.bat#L156-L168);
  4. 生成解决方案:在build\目录中执行cmake .. -DBUILD_TYPE=SAMPLES_DX12 <samples_build_options>(BuildSamplesSolutionDX12.bat#L174),Vulkan 版本对应为cmake -A x64 .. -DBUILD_TYPE=SAMPLES_VK ...(BuildSamplesSolutionVK.bat#L161)。

其中BUILD_TYPE是顶层 dependencies/FidelityFX-SDK/CMakeLists.txt 强制要求的变量,取值必须是CAULDRON、SAMPLES_DX12、SAMPLES_VK三者之一,否则会直接报错退出(CMakeLists.txt#L25-L42)。SAMPLES_DX12与SAMPLES_VK分别会把解决方案命名为FidelityFX SDK DX12 Samples与FidelityFX SDK VK Samples(CMakeLists.txt#L34-L39)。

而 SDK 后端构建脚本 sdk/BuildFidelityFXSDK.bat 本身也会:

  • 检查cmake --version,未找到 CMake 时直接退出(BuildFidelityFXSDK.bat#L34-L41);
  • 无参数调用时默认使用-DFFX_API_BACKEND=DX12_<arch> -DFFX_ALL=ON -DFFX_AUTO_COMPILE_SHADERS=1(BuildFidelityFXSDK.bat#L71-L76);
  • 配置完成后依次以Debug、Release、RelWithDebInfo三种配置并行编译(--parallel 4),并把生成的库输出到bin\ffx_sdk\目录(BuildFidelityFXSDK.bat#L80-L82、sdk/CMakeLists.txt#L122-L125)。

生成的输出

构建脚本执行完毕后,会在 FidelityFX SDK 根目录下生成:

  • build\目录:包含解决方案文件FidelityFX SDK [DX12/VK] Samples.sln(即FidelityFX SDK DX12 Samples.sln或FidelityFX SDK VK Samples.sln);
  • bin\目录:包含编译输出的可执行文件、配置(configs)、着色器(shaders)与 SDK 库文件。

另外需要说明:示例构建通过 common.cmake 定义了大量路径变量,包括BIN_OUTPUT、SHADER_OUTPUT、CONFIG_OUTPUT等(common.cmake#L39-L52),示例的可执行文件统一输出到bin\目录(dependencies/FidelityFX-SDK/CMakeLists.txt#L89-L94)。顶层 CMake 还会为 DX12/VK 分别生成DebugDX12、ReleaseDX12、RelWithDebInfoDX12(及对应的 VK 版本)等自定义配置类型(dependencies/FidelityFX-SDK/CMakeLists.txt#L57-L70),因此在 Visual Studio 中切换配置时应留意这些带后缀的配置名。

在 Visual Studio 中构建示例

CMake 生成的 .sln 默认包含 SDK 中所有示例应用的工程。构建方式:

  1. 打开build\目录下的FidelityFX SDK [DX12/VK] Samples.sln;
  2. 在菜单栏点击Build→Build solution。

此操作会按依赖关系先后编译:

  • SDK 后端库(ffx_backend_native,见 dependencies/FidelityFX-SDK/CMakeLists.txt#L101-L117);
  • FidelityFX Cauldron Framework(Framework工程,见 dependencies/FidelityFX-SDK/CMakeLists.txt#L119-L129);
  • 示例共用的渲染模块库RenderModules(dependencies/FidelityFX-SDK/CMakeLists.txt#L131-L133);
  • 最后才是全部示例应用工程。

各示例工程的加入由 samples/CMakeLists.txt 根据先前选择的FFX_*开关决定,例如FFX_FSR对应fsrapi工程(samples/CMakeLists.txt#L31-L34)、FFX_CACAO对应cacao工程(samples/CMakeLists.txt#L41-L44)等;若选择了1. ALL,则默认将FFX_API_FSR设为启动项目(samples/CMakeLists.txt#L101-L103)。

在 Visual Studio 中运行示例

要运行某个示例应用,官方文档给出的步骤为:

  1. 在解决方案资源管理器中,于"Effects"文件夹下选择感兴趣的示例工程;
  2. 右键该工程,选择Set as Start-up project(设为启动项目);
  3. 点击菜单栏Build,然后点击Run(运行)。

从源码结构看,各示例工程被组织在 "Effects" 文件夹下,且顶层 CMake 已通过VS_STARTUP_PROJECT属性设置了默认启动项目(dependencies/FidelityFX-SDK/CMakeLists.txt#L153-L155),多数情况下你无需手动切换即可直接运行默认示例。

运行示例的补充:内容下载与运行时配置

构建成功后运行示例,还需要两方面的准备(详见官方 Running the FidelityFX SDK Samples):

  1. 示例内容(Content)下载:SDK 示例默认从预下载的场景内容中加载 glTF 场景、IBL 环境贴图与粒子图集,需要先使用 媒体投递工具 Media Delivery Tool 下载对应资源;
  2. 运行时配置:示例(以及 Cauldron Framework 整体)通过 JSON 配置文件驱动运行时行为,加载顺序为:cauldronconfig.json(框架默认值)→ 示例自身配置文件(覆盖默认值)→ 各渲染模块的配置文件(提供模块默认值)→ 示例配置再次覆盖模块默认值。

各示例的配置文件位于 dependencies/FidelityFX-SDK/samples 下各示例目录的config/子目录中(例如blur/blurconfig.json、fsrapi/fsrapiconfig.json)。此外,示例还支持大量命令行覆盖参数,例如-resolution [WIDTH] [HEIGHT]覆盖启动分辨率、-loadcontent [SCENE PATH]加载自定义 glTF 场景、-devmode启用 CPU 验证与内存泄漏检测、-benchmark [duration=X]执行定帧基准测试等,可用于快速验证你自己的内容与效果。

常见问题排查要点

  • No BUILD_TYPE specified报错:直接手动执行cmake ..而不带-DBUILD_TYPE会触发顶层 CMake 的致命错误(dependencies/FidelityFX-SDK/CMakeLists.txt#L25-L27),务必通过官方批处理脚本或在命令行显式传入-DBUILD_TYPE=SAMPLES_DX12/-DBUILD_TYPE=SAMPLES_VK;
  • Cannot find path to CMake:说明 CMake 未加入 PATH 或未安装,SDK 构建脚本会直接退出(dependencies/FidelityFX-SDK/sdk/BuildFidelityFXSDK.bat#L34-L41);
  • Requested architecture ... not yet supported:顶层 CMake 目前仅支持x64、ARM64、ARM64EC三种生成平台(dependencies/FidelityFX-SDK/CMakeLists.txt#L53-L87),Win32 等其他平台不受支持;
  • 配置名带后缀:解决方案中的有效配置是DebugDX12、ReleaseDX12、RelWithDebInfoDX12(或对应 VK 变体),切换构建配置时请使用这些名称;
  • 首次构建耗时较长:SDK 后端会以三种配置各编译一遍(dependencies/FidelityFX-SDK/sdk/BuildFidelityFXSDK.bat#L80-L82),且着色器默认自动编译(FFX_AUTO_COMPILE_SHADERS=1),请耐心等待。

小结

构建 FidelityFX SDK 示例的完整链路可总结为:安装满足最低版本要求的工具链 → 运行BuildSamplesSolutionDX12.bat或BuildSamplesSolutionVK.bat→ 依次回答 DLL/静态库选择与示例组件选择 → 脚本自动构建 SDK 后端并生成build\FidelityFX SDK [DX12/VK] Samples.sln→ 在 Visual Studio 中 Build solution 并用 "Effects" 下的工程作为启动项目运行 → 配合 Media Delivery Tool 下载内容并按 JSON 配置/命令行参数调整运行行为。

本文所述步骤均以仓库内实际存在的构建脚本与 CMake 配置为据,相关文件可直接查看:根构建脚本 BuildSamplesSolutionDX12.bat / BuildSamplesSolutionVK.bat、SDK 构建脚本 BuildFidelityFXSDK.bat、顶层 CMake CMakeLists.txt、示例清单 samples/CMakeLists.txt,以及官方运行指南 running-samples.md。

  • 图形学
  • 游戏开发

【免费下载链接】dlssg-to-fsr3

Adds AMD FSR 3 Frame Generation to games by replacing Nvidia DLSS Frame Generation (nvngx_dlssg).

项目地址:https://gitcode.com/gh_mirrors/dl/dlssg-to-fsr3
点击查看免费下载
上一篇:沉浸式翻译的商业模式与生态建设
下一篇:IPython 0.13 深度解析:Notebook 新界面、Cell Magic 体系与内核/引擎统一架构

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 9:39:40

OpenAI Codex CLI 安装配置全攻略:Windows/Mac/Linux与VSCode的踩坑修复

最近后台私信和评论区快被问炸了&#xff0c;全是在问OpenAI Codex CLI到底怎么装、怎么配、怎么在VSCode里用顺手。这个东西本身逻辑不复杂&#xff0c;但架不住它在Windows、Mac、Linux三个平台的坑完全不一样&#xff0c;尤其是Windows用户&#xff0c;从PowerShell执行策略…

作者头像 李华
网站建设 2026/10/4 9:39:23

企业级AI网关实战:统一管理多家大模型API的架构设计与落地

1. 多模型接入的混乱现场&#xff1a;从三套密钥到一张账单如果你所在的公司同时用上了三家以上的大模型服务&#xff0c;大概率经历过这种场面&#xff1a;算法团队在代码里硬编码了一串密钥&#xff0c;后端团队在配置文件里塞了另一串&#xff0c;运营侧某个小工具又单独申请…

作者头像 李华
网站建设 2026/10/4 9:36:54

Transformers模型转ONNX Runtime:NLP推理部署与INT8量化实战

从 PyTorch 模型到 ONNX Runtime 推理&#xff0c;这一步跨过去之后&#xff0c;你再也不会想回到原来那种"Python 里model.eval()裸跑"的日子。尤其是做 NLP 任务的朋友&#xff0c;BERT、RoBERTa 这类 Transformer 模型&#xff0c;参数动辄上亿&#xff0c;直接跑…

作者头像 李华
网站建设 2026/10/4 9:35:37

Vivado多线程优化实战:综合、布局布线、仿真阶段的提速与避坑指南

很多用 Vivado 的人应该都有同感&#xff1a;早上 9 点启动一个综合&#xff0c;吃个午饭回来还在跑&#xff1b;晚上下班前丢一个实现任务&#xff0c;第二天早上起来不知道有没有跑完。尤其到了项目后期&#xff0c;每一轮编译都是按小时甚至按天算的&#xff0c;多核多线程的…

作者头像 李华
网站建设 2026/10/4 9:33:59

SD卡初始化流程全解析:从协议命令到uboot源码与实测波形

第一次在自制板卡上调 SD 卡启动的时候&#xff0c;我拿着逻辑分析仪盯着 CMD 线上的波形看了整整一下午。CMD0 发出去了&#xff0c;卡没有回应&#xff1b;CMD8 发出去&#xff0c;依旧只有主机侧的帧。当时我甚至怀疑是 uboot 的代码没编对&#xff0c;后来把 SD 卡规范、ub…

作者头像 李华
网站建设 2026/10/4 9:33:36

产品经理的 Claude Code 免费教程——TaoToken 统一 Key 接入概述

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华