跳至内容

运行 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"
}

演示

Presentation涵盖了交换链和相关构造的默认配置。在这里,您可以设置所需的后台缓冲区数量,启用如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

Allocations配置组设置了图形框架使用的各种分配池的示例默认值。所有大小值表示字节,所有计数值表示最大条目数。

"Allocations": {
"UploadHeapSize": 419430400,
"DynamicBufferPoolSize": 15728640,
"GPUSamplerViewCount": 300,
"GPUResourceViewCount": 50000,
"CPUResourceViewCount": 50000,
"CPURenderViewCount": 100,
"CPUDepthViewCount": 100
}

DebugOptions

Debug选项旨在供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/cauldronmedia/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/cauldronmedia/Chess/scene.gltf"
],
"Camera": "Camera_1",
"DiffuseIBL": "../media/cauldronmedia/IBL/mud_road_puresky_Diffuse.dds",
"SpecularIBL": "../media/cauldronmedia/IBL/mud_road_puresky_Specular.dds",
"SkyMap": "../media/cauldronmedia/IBL/mud_road_puresky_Specular.dds",
"SceneExposure": 1.355
}

杂项选项

有一些选项不属于任何组。

FontSize:渲染字体的整数点值。考虑操作系统的DPI缩放。

AGSEnabled:在AMD GPU上启用/禁用AGS的使用。

StablePowerState:将其设置为true将尝试在设备上设置稳定的电源状态(需要启用Windows开发人员模式)。请注意,选择的稳定电源状态不一定是最高性能的稳定状态,并且可能与之显著不同。

InvertedDepth:启用/禁用反转无限深度。默认为true。

MotionVectorGeneration:负责生成运动矢量信息的渲染模块的名称。值为“”表示不生成运动矢量。

OverrideSceneSamplers:如果为true,将使用各向异性采样器覆盖glTF指定的纹理采样器(点/线性)。默认为true。

BuildRayTracingAccelerationStructure:如果为true,将在加载/更新几何体时启用光线追踪包围卷层次结构(BVHs)的构建和更新。默认为false。

"FontSize": 13,
"AGSEnabled": false,
"StablePowerState": false,
"InvertedDepth": true,
"MotionVectorGeneration": "",
"OverrideSceneSamplers": true,
"BuildRayTracingAccelerationStructure": false,

命令行选项

默认情况下,每个示例都配置为尝试加载预先配置的场景和选项。

但是,为了让最终用户能够快速测试自己的场景和其他实验,SDK支持许多方便的命令行选项,可用于覆盖各种默认行为。

所有命令行选项的形式为

-option <可选> 或 [必需] 参数

以下是当前支持的命令行覆盖选项:

-devmode

以启用CPU验证、内存泄漏检查以及构建带有调试信息的FidelityFX Cauldron Framework着色器的模式启动示例。

-cpulimiter [TARGETFRAMERATE]

通过系统睡眠周期强制CPU帧率限制。参数应为整数值。这对于通过强制GPU处于恒定工作负载配置来收集更准确的样本效果计时非常有用。

-gpulimiter [TARGETFRAMERATE]

通过GPU工作负载任务强制GPU帧率限制。参数应为整数值。这对于通过强制GPU处于恒定工作负载配置来收集更准确的样本效果计时非常有用。

-inverteddepth [1 或 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
鼠标右键在球形相机模式和WASD模式之间切换。默认是球形相机模式。
Mouse movement在球形相机模式下,鼠标围绕目标点移动摄像机。在WASD摄像机模式下,鼠标旋转摄像机方向。
Mouse wheel沿着摄像机视图向量移动摄像机。
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.