跳至内容

FidelityFX 保持亮度映射器

FidelityFX 保持亮度映射器 (或 LPM) 是一种用于高动态范围 (HDR) 和广色域内容的色调和色域映射解决方案。FidelityFX LPM 对红色-绿色-蓝色 (RGB) 像素的亮度进行色调映射,而不是对颜色本身进行映射,但它确保了 tonemap(luma(RGB))luma(tonemap(RGB)) 非常相似,从而保持了像素的亮度。

有关 FidelityFX LPM 效果底层技术的详细信息,您可以参考相应的 技术文档

FidelityFX LPM 关闭

NoLPM

FidelityFX LPM 打开

LPM

要求

  • Windows
  • DirectX(R)12
  • Vulkan(R)

UI 元素

示例包含各种 UI 元素,以帮助您探索其演示的技术。下表总结了 UI 元素及其在示例中的控制功能。

元素名称描述
IBLFactor0..1基于图像的照明对被照场景的贡献。
软色差0..0.5控制在色域外映射中羽化区域的程度。范围从 0 到略大于零,0 表示裁剪。
HDR Max1..FLT_MAX最亮的线性输入 RGB 像素值。
LPM 曝光1..2^n=FLT_MAXn 设置为您需要将 18% 中频电平输入值翻倍的次数。
对比度0..1输入范围 {0.0 (无额外对比度) 到 1.0 (最大对比度)}。
肩部对比度1..1.5肩部塑形,1.0 = 无变化 (快速路径)
SaturationRGB-1..1每通道调整,使用 < 0 减少,0 == 无变化,> 0 增加。
crosstalkRGB0..1一个通道必须是 1.0,其余通道可以小于等于 1.0 但不能为零。通过跨色域行走来延长到白色的颜色路径。

设置 LPM 计算着色器

FidelityFX LPM 计算着色器以几何渲染通道生成的线性颜色缓冲区为输入,包括不透明、透明和天空盒几何,以及任何后期处理通道——但在渲染任何 GUI 元素之前。

FidelityFX LPM 着色器还具有一些统一参数,这些参数通过 LPM 常量设置调用传递给 LPM,如上所述。然后,这些参数会传递给发生色调和色域映射的 LPM 过滤器调用。两者都在 ffx_lpm.h 中定义。

请注意,ffx_lpm.h 头文件设计为通过 #define 宏 (如下所示) 从 C++ 和 HLSL/GLSL 中包含。

C++

#define FFX_CPU
#include <gpu/ffx_core.h>
#include <gpu/ffx_lpm.h>

HLSL

#define FFX_GPU
#define FFX_HLSL
#include "ffx_core.h"
#include "ffx_lpm.h"

GLSL

#define FFX_GPU
#define FFX_GLSL
#include "ffx_core.h"
#include "ffx_lpm.h"

ffx_lpm.h 依赖于 ffx_core.h,因此必须同时包含两者。

着色器选项

FidelityFX LPM 着色器,更具体地说 LpmFilter 函数,提供了使用 16 位浮点 (FP16) 数学运算与 32 位浮点 (FP32) 数学运算的选项。总的来说,在 AMD 硬件上,FP16 数学运算比 FP32 数学运算更有效,对于 FidelityFX LPM 来说,它可以使每个线程处理两个像素,从而使吞吐量加倍。

为获得最佳性能,该示例将这些选项编译成多种着色器排列,并在运行时根据示例的当前配置 (请参阅上面的 UI 元素部分) 选择特定的着色器排列。总共有两种着色器排列。

  • FP16-LpmFilter
  • FP32-LpmFilter

示例控件和配置

有关示例控件、配置和 FidelityFX Cauldron Framework UI 元素的详细信息,请参阅 运行示例

另请参阅

© . This site is unofficial and not affiliated with AMD.