跳至内容

运行 FidelityFX SDK 示例

内容下载

SDK示例配置为从预下载的内容加载场景。请参阅媒体交付工具

配置文件

SDK示例(以及FidelityFX Cauldron Framework总体上)通过由各种JSON配置文件驱动的运行时设置来运行。

配置文件加载存在一个层级结构

  1. 首先加载cauldronconfig.json文件以设置默认框架值。
  2. 然后解析示例的配置文件,并覆盖相关的默认配置值。
  3. 在解析渲染模块进行初始化时,每个渲染模块还可以提供其自己的配置文件以获取所需的默认值(例如,所需的资源创建、特定的渲染模块选项等)。
  4. 渲染模块的默认值也可以从示例配置文件中覆盖

配置流程可以通过以下图像最好地概括

ConfigurationFlow

配置选项

以下是可以通过示例配置文件为任何示例覆盖的配置组和选项列表。

验证

使用布尔值来启用或禁用基于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

Lighting UI

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

Limiter

Limiter UI

  • Enable FPS Limiter:启用CPU端帧率限制(通过CPU睡眠实现)。
  • GPU Limiter:启用GPU端帧率限制(通过GPU计算作业占用率实现)。

限制帧率可以产生更准确的渲染统计数据,方法是让GPU以更具代表性的频率和电源状态运行。

Magnifier

Magnifier UI

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

Particle

Particle UI

  • Particle animation:启用/禁用GPU粒子动画。

Post Processing

Post Processing UI

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

Raster Shadows

Shadow UI

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

Procedural Skydome

Skydome UI

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

TAA

TAA UI

  • Enable TAA:启用或禁用时间抗锯齿。

用户控件

Cauldron定义了以下一组用于导航示例的控件。

KeyAction
鼠标右键在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切换全屏模式。
© . This site is unofficial and not affiliated with AMD.