运行 FidelityFX SDK 示例
内容下载
SDK示例配置为从预下载的内容加载场景。请参阅媒体交付工具
配置文件
SDK示例(以及FidelityFX Cauldron Framework总体上)通过由各种JSON配置文件驱动的运行时设置来运行。
配置文件加载存在一个层级结构
- 首先加载
cauldronconfig.json文件以设置默认框架值。 - 然后解析示例的配置文件,并覆盖相关的默认配置值。
- 在解析渲染模块进行初始化时,每个渲染模块还可以提供其自己的配置文件以获取所需的默认值(例如,所需的资源创建、特定的渲染模块选项等)。
- 渲染模块的默认值也可以从示例配置文件中覆盖
配置流程可以通过以下图像最好地概括

配置选项
以下是可以通过示例配置文件为任何示例覆盖的配置组和选项列表。
验证
使用布尔值来启用或禁用基于CPU/GPU的验证层。GPU验证对性能有严重影响,请谨慎使用。所有值默认为false。
"Validation": { "CpuValidationLayerEnabled": false, "GpuValidationLayerEnabled": false}FeatureSupport
功能切换接受一个布尔值来强制需要特定的功能集,并使用“SMx_y”形式的字符串来界定所需的最低着色器模型支持。将不受支持的功能条目设置为true,或者将“ShaderModel”条目设置为当前设备上不受支持的值,都会在示例中进行断言,并停止执行。默认值如下所示。
"FeatureSupport": { "VRSTier1": false, "VRSTier2": false, "RT1.0": false, "RT1.1": false, "FP16": false, "ShaderModel": "SM6_0" }演示
演示涵盖了交换链和相关构造的默认配置。在这里,您可以设置所需的后台缓冲区数量,启用诸如Vsync和全屏渲染之类的功能,指定应用程序交换链的宽度和高度,以及在设置适配器时使用的显示模式。
有效的“Mode”条目是
- DISPLAYMODE_LDR,
- DISPLAYMODE_HDR10_2084**,
- DISPLAYMODE_HDR10_SCRGB**,
- DISPLAYMODE_FSHDR_2084***,
- DISPLAYMODE_FSHDR_SCRGB***
** (需要HDR兼容显示器)
*** (需要Freesync Premium Pro显示器)
注意:除DISPLAYMODE_LDR外,所有模式还需要用户在Windows“系统 -> 显示设置”菜单中启用HDR显示设置才能正常工作。
"Presentation": { "BackBufferCount": 3, "Vsync": false, "Fullscreen": false, "Width": 2560, "Height": 1440, "Mode": "DISPLAYMODE_LDR"}分配
分配配置组设置图形框架使用的各种分配池的示例默认值。所有大小值表示字节,所有计数值表示最大条目数。
"Allocations": { "UploadHeapSize": 419430400, "DynamicBufferPoolSize": 15728640, "GPUSamplerViewCount": 300, "GPUResourceViewCount": 50000, "CPUResourceViewCount": 50000, "CPURenderViewCount": 100, "CPUDepthViewCount": 100}DebugOptions
调试选项旨在供AMD工程师在FidelityFX功能开发过程中使用,但在调查示例如何运行时或进行实验时也可能很有用。
DevelopmentMode将自动启用调试着色器、CPU验证和DirectX内存泄漏检测(在DX12配置中)。
RenderDoc和PIX捕获选项还将启用一个应用程序内UI来生成捕获。
"DebugOptions": { "DevelopmentMode": false, "DebugShaders": false, "EnableRenderDocCapture": false, "EnablePixCapture": false}RenderResources
Render resources是在框架初始化时要创建的资源或要创建的资源别名的列表。它们通常由具有隐式资源需求的渲染模块定义。它们通过提供资源名作为对象来定义,该对象包含一个Format和其他可选标志(例如,"RenderResolution": true将在存在缩放时以渲染分辨率而不是显示分辨率创建资源)。
资源别名添加了可以在运行时从DynamicResourcePool查询资源的附加名称。
示例
"RenderResources": { "MotionVectorTarget": { "Format": "RG16_FLOAT", "RenderResolution": true },
"GBufferMotionVectorRT": "MotionVectorTarget"}RenderModuleOptions
这些是用于渲染模块配置文件中的特殊情况对象,用于指示渲染模块创建的初始化数据。这些数据可以在示例配置文件中使用RenderModuleOptions特殊对象进行覆盖。
示例
"RenderModuleOptions": { "ZPrepass": false, "VariableShading": false}RenderModuleOverrides
用于覆盖渲染模块初始化数据。为每个要覆盖的渲染模块定义一个条目。例如:覆盖SkyDomeRenderModule的程序化生成设置
"RenderModuleOverrides": { "SkyDomeRenderModule": { "Procedural": true }}Content
Content块在示例配置文件中用于指定运行时加载的场景、摄像机、粒子等。这些值可以从命令行界面(见下文)覆盖。
ParticleSpawners:这是要在运行时加载的粒子发射器列表。有关FidelityFX Cauldron Framework中粒子工作原理的概述,请参阅GPUOpen上的参考文档。
Scenes:这是要在运行时加载的glTF文件列表。可以包含一个或多个文件路径。
Camera:这是设置为活动摄像机的默认摄像机实体的名称。如果找不到摄像机,将提供一个默认摄像机。
SceneExposure:这是运行示例时用于曝光(固定)的值。
DiffuseIBL:用于漫反射图像基光的纹理环境图的路径。
SpecularIBL:用于镜面图像基光生成的纹理环境图的路径。
SkyMap:用于渲染非程序化天空盒的纹理环境图的路径。
示例
"Content": { "ParticleSpawners": [ { "Name": "FSRSpawner", "AtlasPath": "media/particles/atlas.dds", "Position": [ 0.0, 0.0, 0.0 ], "Sort": true, "Emitters": [ { "Name": "Smoke", "SpawnOffset": [ 0.0, 0.0, 1.4 ], "SpawnOffsetVariance": [ 0.1, 0.0, 0.1 ], "SpawnVelocity": [ 0.0, 0.2, 0.0 ], "SpawnVelocityVariance": 1.0, "ParticlesPerSecond": 10, "Lifespan": 50.0, "SpawnSize": 0.4, "KillSize": 1.0, "Mass": 0.0003, "AtlasIndex": 0, "Flags": { "Reactive": true, "Streaks": false } }, ] } ], "Scenes": [ "../media/Chess/scene.gltf" ], "Camera": "Camera_1", "DiffuseIBL": "../media/IBL/mud_road_puresky_Diffuse.dds", "SpecularIBL": "../media/IBL/mud_road_puresky_Specular.dds", "SkyMap": "../media/IBL/mud_road_puresky_Specular.dds", "SceneExposure": 1.355}Miscellaneous Options
有许多选项不属于任何组。
FontSize:渲染字体的整数点值。考虑了OS级别的DPI缩放。
AGSEnabled:启用/禁用在AMD GPU上使用AGS。
StablePowerState:将其设置为true将尝试在设备上设置稳定的电源状态(需要启用Windows开发者模式)。请注意,选择的稳定电源状态不一定是可能的最高稳定性能状态,并且可能与之有很大差异。
InvertedDepth:启用/禁用反转无穷深度。默认为true。
MotionVectorGeneration:负责生成运动矢量信息的渲染模块的名称。值为“ ”表示不生成运动矢量。
OverrideSceneSamplers:如果为true,将使用各向异性采样器覆盖glTF指定的纹理采样器(点/线性)。默认为true。
BuildRayTracingAccelerationStructure:如果为true,将在加载/更新几何体时启用光线追踪包围盒(BVH)的构建和更新。默认为false。
"FontSize": 13,"AGSEnabled": false,"StablePowerState": false,"InvertedDepth": true,"MotionVectorGeneration": "","OverrideSceneSamplers": true,"BuildRayTracingAccelerationStructure": false,命令行选项
默认情况下,每个示例都配置为尝试加载一个预先配置的场景和选项集。
然而,为了让最终用户能够快速测试自己的场景和其他实验,SDK支持许多便捷的命令行选项,可用于覆盖各种默认行为。
所有命令行选项都采用以下形式
-option <optional> 或 [required] parameter
以下是当前支持的命令行覆盖选项
-devmode
启动示例,启用CPU验证、内存泄漏检查,并使用调试信息构建FidelityFX Cauldron Framework着色器。
-cpulimiter [TARGETFRAMERATE]
通过系统睡眠周期强制CPU帧率限制。参数应为整数值。这有助于通过强制GPU处于恒定的工作负载配置来更准确地计时示例效果。
-gpulimiter [TARGETFRAMERATE]
通过GPU工作负载任务强制GPU帧率限制。参数应为整数值。这有助于通过强制GPU处于恒定的工作负载配置来更准确地计时示例效果。
-inverteddepth [1 or 0]
指示框架使用无限反转深度(默认)或常规深度分布布局。
-fullscreen
以无边框全屏模式运行示例。
-resolution [WIDTH] [HEIGHT]
指示框架使用传递的宽度和高度覆盖默认启动分辨率。宽度和高度参数应为整数值。
-loadcontent [SCENE PATH] <OPTIONAL SCENE PATH>
覆盖启动时要加载的场景。默认情况下,每个示例都将配置为加载预配置的场景。此选项会覆盖要加载的场景,以允许最终用户测试他们自己的内容与效果。只需使用任何符合glTF 2.0的导出器导出内容,并在运行时传入。
用户可以加载任意数量的场景(最少1个)
-diffuseibl [PATH]
用传递的纹理路径覆盖默认的漫反射图像基光源。
-specularibl [PATH]
用传递的纹理路径覆盖默认的镜面图像基光源。
-skymap [PATH]
用传递的纹理路径覆盖默认的天空盒纹理源(仅限非程序化)。
-camera [“CAMERA NAME”]
加载内容时,将尝试将默认摄像机设置为参数提供的摄像机名称。如果找不到具有该名称的实体,将使用默认摄像机。
-exposure [EXPOSURE VALUE]
用提供的值覆盖场景的静态曝光值。将覆盖从配置加载的任何曝光值。
-renderdoc
从示例运行时启用UI和选项以生成RenderDoc捕获。
-pix
从示例运行时启用UI和选项以生成PIX捕获。
-screenshot
将在退出示例之前捕获最后一帧渲染的屏幕截图。
-benchmark [duration=X] <path=PATH> <append> <json>
启用示例的基准测试。基准测试设置示例的特殊运行,该运行将初始化其所有内容,然后运行选定的时间,然后关闭并将结果转储到文件中。基准测试通过几个参数进行控制
\[duration=X\]
How many frames to benchmark. X is expected to be an integer value.
\<path=PATH\>
Optional path in which to dump the benchmark file. Defaults to binary path.
\<append\>
Optional append argument which will append results to existing benchmark data file rather than creating a new one.
\<json\>
Optional parameter to force benchmark data to write out in JSON format. The default is for data to be written to CSV file.-displaymode [DISPLAYMODE]
Overides the default display mode to use. Accepted display modes are:- "DISPLAYMODE_LDR" Low dynamic range - "DISPLAYMODE_2084_HDR10" (PQ) HDR10 - "DISPLAYMODE_SCRGB_HDR10" High-precision HDR10 - "DISPLAYMODE_2084_FSHDR" (PQ) Freesync HDR - "DISPLAYMODE_SCRGB_FSHDR" High-precision Freesync HDR用户界面和控件
用户界面
FidelityFX Cauldron Framework提供了一个动态UI系统,该系统是为正在运行的示例构建的,由存在的渲染模块定义。每个渲染模块负责其自己的UI。有关特定于示例的UI元素,请参阅相应示例的文档。
根据Cauldron的哪个渲染模块在示例中处于活动状态,可能存在以下UI元素
Lighting

- IBLFactor:调整应用到表面上的图像基光照量。
Limiter

- Enable FPS Limiter:启用CPU端帧率限制(通过CPU睡眠实现)。
- GPU Limiter:启用GPU端帧率限制(通过GPU计算作业占用率实现)。
限制帧率可以产生更准确的渲染统计数据,方法是让GPU以更具代表性的频率和电源状态运行。
Magnifier

- Show Magnifier:启用放大镜检查工具。
- Lock Position:将放大镜固定在其当前位置。
- Screen Size:放大放大镜的大小。
- Magnification:增加和减少放大镜区域应用的放大倍数。
Particle

- Particle animation:启用/禁用GPU粒子动画。
Post Processing

- Tone Mapper:从多个可用的色调映射器中选择。
- Exposure:设置场景的曝光。
Raster Shadows

- Cascades Number:进行方向阴影时使用的级联数。
- Cascade Split Points 0:第一个级联结束的场景百分点。
- Cascade Split Points 1:第二个级联结束的场景百分点。
- Cascade Split Points 2:第三个级联结束的场景百分点。
- Camera Pixel Align:将摄像机对齐到像素边界(防止抖动)。
Procedural Skydome

- Hour:计算程序化天空时使用的日时间分量。
- Minute:计算程序化天空时使用的日时间分量。
- Rayleigh:计算程序化天空的瑞利常数分量。
- Turbidity:计算程序化天空的浑浊度分量。
- Mie Coefficient:计算程序化天空的米氏分量。
- Luminance:计算程序化天空的亮度分量。
- Mie Directional G:在程序化天空的米氏分量计算中使用的地面方向。
TAA

- Enable TAA:启用或禁用时间抗锯齿。
用户控件
Cauldron定义了以下一组用于导航示例的控件。
| Key | Action |
|---|---|
| 鼠标右键 | 在arc-ball模式和WASD模式之间切换。默认是arc-ball模式。 |
| 鼠标移动 | 在arc-ball模式下,鼠标围绕目标点移动摄像机。在WASD摄像机模式下,鼠标旋转摄像机方向。 |
| 鼠标滚轮 | 沿视图向量移动摄像机。 |
| A | 在WASD摄像机模式下,向左平移摄像机。 |
| W | 在WASD摄像机模式下,向前移动摄像机。 |
| S | 在WASD摄像机模式下,向右平移摄像机。 |
| D | 在WASD摄像机模式下,向后移动摄像机。 |
| Q | 在WASD摄像机模式下,向上移动摄像机。 |
| E | 在WASD摄像机模式下,向下移动摄像机。 |
| F1 | 切换主UI的显示/隐藏。 |
| F2 | 切换性能UI的显示/隐藏。 |
| F3 | 切换消息日志UI的显示/隐藏。(在调试版本中默认为显示,在发布版本中默认为隐藏) |
| M | 切换放大镜。 |
| L | 启用时切换放大镜锁定。 |
| ESC | 关闭并退出示例。 |
| Alt-Enter | 切换全屏模式。 |