自适应亮度

自适应亮度,这是系统为响应环境光传感器读数而自动设置的屏幕亮度。 自适应亮度为用户提供响应性更高的显示体验,其中亮度会自动适应用户的环境。

Windows 11 中的新增功能

  • 对于希望使用新范例、桶化环境光响应 (ALR) 曲线将光传感器集成到 Windows 11的 OEM 来说,自动亮度的实现已大幅简化。 有关详细信息,请参阅《Windows 11 的环境光响应曲线变化》。

  • 新方法不依赖于以前 OEM 可配置的照度到亮度曲线。 默认曲线更稳定、更可靠,并且更易于集成。

  • “设置”页具有新的视觉对象。 本文介绍了“显示设置”页的更新。 有一个“内容自适应亮度控制”(CABC) 的用户切换按钮。

Windows 10 版本 1903 (19H1) 中的以下改进仍可使用:

  • 默认情况下启用自动亮度。
  • 用户可以使用操作中心滑块控制亮度
  • 自适应亮度注册表配置参数

优化显示器亮度步骤和转换

显示设备公开的亮度级别数非常重要。 可使用两种方法:

  1. 基于百分比:使用百分比值控制亮度,支持 101 级 (0 到 100) 的背光控制。
  2. 基于尼特的(建议):使用尼特值控制亮度允许对背光级别进行精细控制。 因此, 可实现非常平滑和准确的亮度转换。

Windows 会检测显示驱动程序公开的亮度接口类型,并选择最合适的亮度接口。 如果显示驱动程序仅公开 DXGK_BRIGHTNESS_INTERFACE_2 接口,则系统将使用百分比值控制亮度。 如果显示驱动程序公开 DXGK_BRIGHTNESS_INTERFACE_3 接口,Windows 10 版本 1809 及更高版本使用 nits 值控制亮度。 更早的 Windows 版本将忽略 DXGK_BRIGHTNESS_INTERFACE_3 接口。 如果显示驱动程序同时公开了 DXGK_BRIGHTNESS_INTERFACE_2 和 DXGK_BRIGHTNESS_INTERFACE_3 接口,Windows 10 版本 1809 及更高版本将使用尼特值控制亮度。 更早的 Windows 版本将使用百分比值控制亮度。

亮度和显示注意事项

如果系统通过让显示驱动器公开 DXGK_BRIGHTNESS_INTERFACE_3 接口支持以尼特为单位设置亮度,则应正确校准显示器。 应在不同强度下执行校准,方法是在显示白色背景时,使用高质量的尼特计测量显示器在不同位置的尼特值。 用于测量显示器亮度的工具称为亮度计,可从电子设备供应商和在线零售商购买。

必须仔细优化显示实现。 具体而言:

  • 确保显示器能够在所有可访问的亮度级别上平滑调光。
  • 应公开足够的显示器亮度级别,以确保平滑调光。 建议至少 101 个级别。

使用尼特值控制亮度

从 Windows 10 版本 1809 开始,系统将在显示驱动程序公开 DXGK_BRIGHTNESS_INTERFACE_3 接口的设备上使用 nit 控制亮度。 尼特(每平方米坎德拉)是亮度的国际单位制 (SI) 单位。 当设备具有正确校准的显示器和正确校准的传感器时,亮度控制应开箱即用。 这些设备上不需要任何 ALR 曲线。

对于这些系统,准确校准光传感器和显示器至关重要。 Windows 10 版本 1809 可容忍这些系统的制造过程中可能发生的细微不准确之处。 组件的放置、玻璃透明度和类似因素可以极大地影响亮度和尼特值。 因此,基于尼特的亮度系统的校准应至少针对最终外形规格设计进行一次,而不是对开发外形规格进行校准,并将结果应用于最终外形规格。

每个设备在生产期间按设备校准可提供最佳最终结果。

使用百分比值控制亮度

不支持尼特亮度控制的系统必须支持百分比值。 在百分比系统中,需要在背光百分比和亮度值之间进行映射。 背光百分比到亮度值的映射应遵循指数模式。 在基于尼特的亮度系统中,由于每个尼特级别都需要校准,因此会提供从收件箱百分比到尼特的映射。 此收件箱百分比到尼特映射使用人类视觉和颜色科学研究来提供感知线性亮度滑块。 只要按照 DXGK_BRIGHTNESS_INTERFACE_3 中所述正确校准尼特级别,0% 到 1% 之间的感知亮度差将自动等效于 1% 和 2% 之间的感知亮度差,依此类推。

人类视觉对低照度下屏幕亮度输出的微小变化更敏感,因此应将更多的背光级别分配给较低的亮度范围,以适应更平滑的转换。 例如,以尼特为单位时,1% 和 2% 之间的差应小于 10% 和 11% 之间的差。 这意味着屏幕最大亮度的 50% 不会映射到 50% 的背光级别。

为了获得可接受的用户体验,最低亮度级别 (0%) 必须对应较低但可读的显示效果。 在将该值映射到 0 尼特的设备上将亮度设置为 0% 时,用户可能会陷入难解的情况,因为用于调亮屏幕的控件不再可见。 亮度为 0% 时,屏幕亮度必须足以让用户与显示器上的 UI 交互。 在支持 DXGK_BRIGHTNESS_INTERFACE_3 接口的设备上,Windows 自动将 0% 限制为至少 5 尼特。

Windows 11 的环境光响应曲线变化

有人对 Windows 10 的自适应亮度实现提出了一些担忧:

  • 环境光传感器读数不佳,尤其是在非常黑暗或非常明亮的环境中
  • 无法适应每个百分比或尼特值的显示面板
  • 难以找到最佳照度到尼特映射

这些问题会导致:

  • 由于环境光传感器 (ALS) 不准确,显示器亮度持续波动
  • 低照明环境中尼特值的轻微变化

为了解决这些问题,我们将环境光响应更改为桶化曲线,如下图所示。 OEM 可以通过自定义选项选择退出桶化曲线。

下图比较了从 Windows 10 到 Windows 11 的默认 ALR 曲线的变化。 默认曲线的一个示例位于左侧,Windows 11 的桶化默认曲线位于右侧。 下面所示的曲线只是可设置为默认值的曲线示例。 设备的实际默认曲线取决于多种因素,并且可能因设备制造商而异。

Two charts comparing changes to the default ALR Curve.

注意

从 Windows 10 升级到 Windows 11 的系统:在现有 Windows 10 自适应亮度要求之外,不会更改硬件或固件,这些是 Windows 11 的内部更改。 现有 Windows 10 支持自适应亮度的系统在更新为 Windows 11 时将体验新的桶化曲线。

桶化自动亮度功能概述

为了减少因响应 ALS 读数波动引起的频繁的显示亮度波动,我们引入了桶化自动亮度。 一系列照度值映射到单个目标亮度百分比值。 然后,显示器亮度将转换为目标百分比值。 在基于 DXGK_BRIGHTNESS_INTERFACE_2 接口的设备上,按原样使用目标百分比。 在基于 DXGK_BRIGHTNESS_INTERFACE_3 接口的设备上,目标百分比将转换为相应的尼特值并使用。 根据我们在各种照明条件下的试验,照度范围划分为七个不同的重叠桶,并分配了相应的显示亮度目标。 使用此查找表将 ALS 中的读数映射到目标亮度。 存储桶引入了必要的滞后效应,可防止 ALS 读数的非显著变化导致显示器亮度波动。 当 ALS 读取发生较大更改时,重叠的存储桶有助于在存储桶之间平稳过渡。

存储自动亮度始终从第二个存储桶开始,即 55% 的目标显示亮度,这是用户体验的最常见照明条件。 随着亮度的变化,目标转换将移动到相应的更高或更低的存储桶。 滑块会进行动画处理,以响应存储桶转换。

下面是包含收件箱桶化 ALR 曲线的事件序列示例:

Flowchart showing the sequence of events in a bucketed ALR curve.

BucketedALRCurve 从第二个存储桶开始,目标为 55%。;传感器报告 40 照度,传感器报告 90 照度,传感器报告 40 照度,传感器报告 90 照度,传感器报告 20 照度;BucketedALRCurve 从第二个存储桶转到第一个存储桶。 亮度目标现在为 40%。用户看到亮度下降 15%,传感器报告 60 照度,传感器报告 90 照度,传感器报告 40 照度,传感器报告 200 照度,BucketedALRCurve 从第一个存储桶转到第二个存储桶。 亮度目标现在为 55%。 用户看到亮度上升 15%

对于此序列,即使环境光频繁波动,亮度也只整体上升和下降两次。

设备从第二个存储桶中启动。 当传感器在 40-90 照度之间波动时,亮度百分比永远不会变化,因为 40 和 90 照度都属于第二个存储桶。

当传感器报告 20 照度样本时,设备进入第一个存储桶,因为 20 照度不属于第二个存储桶。 然后,对于几个照度值,亮度是稳定的。 请注意,90 和 40 照度值不会将亮度移回第二个存储桶,因为这些值存在于第一个存储桶中。

当传感器报告 200 照度样本时,设备进入第二个存储桶,因为 200 照度超出了第一个存储桶的最大照度值。

户外场景

某些尼特设备支持提升范围。 这意味着,如果自动亮度允许,亮度可能会超过 100%。 通过将第六个和第七个存储桶设置为超过 100%,当支持提升范围的设备进入阳光直射环境时,将触发这些存储桶。

极其黑暗的场景

许多传感器无法很好地处理非常暗的情况,因此会发送波动的 ALS 值。 由于最低桶高达 100 照度,因此在这些黑暗环境中,亮度应该不会频繁变化。

自动亮度注册表项

本节中提到的 OEM 自定义项与 Windows 11 中的以下注册表项有关:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AdaptiveDisplayBrightness\{23B44AF2-78CE-4943-81DF-89817E8D23FD}

密钥 格式 使用情况
AutobrightnessLuxToNitsCurve REG_SZ 面向尼特曲线的 ALS 照度读数的 LUT。 示例:“1:8,2:25,5:35,10:60,20:90,40:90,100:130,400:170,700:200,2000:400,3000:500,4500:700”

Windows 11 中自定义 ALR 曲线的亮度滞后

默认情况下,大多数系统将在 Windows 11 中利用存储桶化自动亮度曲线。 默认存储桶化曲线中不会使用滞后和转换。 当 OEM 选择使用自定义 ALR 曲线时,应使用以下参数。

密钥 格式 使用情况
UpperBrightnessHysteresisLut REG_SZ 上限亮度滞后阈值的 LUT。 示例:“10000:50000,20000:40000,50000:10000”表示按该特定顺序,由 (输入 10000 毫尼特, 滞后 50000 毫尼特)、(20000, 40000) 和 (50000, 100000) 定义的照度
LowerBrightnessHysteresisLut REG_SZ 下限亮度滞后阈值的 LUT。

Windows 11 中自定义 ALR 曲线的亮度转换

格式 使用情况
MinBrightnessTransitionNitDelta REG_DWORD 触发以毫尼特为单位定义的亮度转换所需的最小尼特增量
DefaultBrightnessTransitionInterval REG_DWORD 两个转换点之间的默认亮度转换内部时间(以毫尼特为单位)
MinBrightnessTransitionInterval REG_DWORD 两个转换点之间的最小亮度转换内部时间(以毫尼特为单位)
MaxBrightnessTransitionInterval REG_DWORD 两个转换点之间的最大亮度转换内部时间(以毫尼特为单位)

测试案例

本部分讨论测试环境光传感器。

ALS 校准

确保针对一组给定的环境光正确校准环境光传感器。 验证传感器照度读数是否准确。

ALS 校准适用于

支持自适应亮度的所有系统

ALS 校准设置和工具

  • 可控制 (调光) 光源,能够产生不同照度
  • 以照度为单位测量光的测光仪
  • MonitorBrightnessAppSensorExplorer,用于可视化环境光传感器报告的值

ALS 校准测试过程

  1. 设置设备旁边的测光仪。 测光仪应尽可能接近环境光传感器,而不会与其产生负交互。
  2. 启动 MonitorBrightnessApp
  3. 在黑暗的房间里,使用光源将环境光的级别更改为不同的照度
  4. 读取照度计和 MonitorBrightnessApp 报告的值。 值应相同

ALS 校准测试变体

  1. 使用不同类型的可控灯,例如白炭灯、CFL 灯和 LED
  2. 使用不同的角度

ALS 校准评估 (通过或失败)

MonitorBrightnessApp 报告的照度值应与测光仪报告的照度值相同。

ALS 校准会审说明

请与传感器硬件制造商协作,了解如何校准传感器。

ALS 粒度

确保环境光传感器的变化是精细的,没有延迟

ALS 粒度适用于

支持自适应亮度的所有系统

ALS 粒度设置和工具

  • 使用带可控调光器的光源,以精细调节环境光的增强和减弱。 光源应该能够顺利地使光线增强和减弱。
  • 使用 BrightnessTests 文件夹中的 MonitorBrightnessApp 将环境光传感器响应可视化。

ALS 粒度测试过程

  1. 在黑暗的房间里,使用调光器平滑地增加和降低光线水平
  2. 使用 MonitorBrightnessApp 可视化环境光传感器响应。 响应应与应用于调光器的更改匹配。

ALS 粒度评估 (通过或失败)

环境光传感器响应应与应用于调光器的变化紧密匹配。 对调光器的线性更改应导致来自环境光传感器的线性响应。 ALS 响应不应谨慎。 对调光器所做的更改应立即显示在 MonitorBrightnessApp 中,且无延迟。

ALS 粒度会审说明

请与传感器硬件制造商合作,了解如何平滑环境光传感器转换以及如何减少延迟。

睡眠转换

确保环境光传感器在脱离睡眠状态或打开盖子时仍正常工作。

睡眠切换适用于

支持自适应亮度的所有系统

睡眠过渡设置和工具

睡眠转换测试过程

  1. 在黑暗的房间里,打开设备或打开盖子。
  2. 使用 MonitorBrightnessApp 可视化环境光传感器读数。 确保传感器读取低照度值。
  3. 在以下所有步骤中使 MonitorBrightnessApp 保持运行
  4. 合上盖子或关闭设备
  5. 打开灯,确保环境明亮
  6. 打开盖子或开启设备
  7. 连接到桌面并观察 MonitorBrightnessApp 中的值。 照度值应立即反映实际环境光。

睡眠转换评估 (通过或失败)

当退出连接待机或打开盖子时,环境光传感器应发送样本读数。

平滑转换会审说明

请与传感器硬件制造商协作,了解如何修复环境光传感器。

平滑转换

确保显示面板平滑地更改亮度。

睡眠切换适用于

支持自适应亮度的所有系统

睡眠切换设置和工具

  • 使用 BrightnessTests 文件夹中的 BrightToDim.ps1 脚本,以线性方式增加和降低亮度。 将设备切换到手动亮度。 该脚本会将屏幕亮度从 100 降低到 0。
  • 可选:使用亮度 (尼特) 计来测量屏幕亮度

平滑转换测试过程

  1. 确保屏幕显示尽可能多的白色,例如,打开记事本并在屏幕上将它最大化。
  2. 启动 BrightToDim.ps1 脚本并观察屏幕行为。 屏幕应尽可能平滑地转换,且亮度没有任何跳跃。

平滑转换评估 (通过或失败)

屏幕亮度应平滑地强弱转换,亮度不应有任何可见的跳跃。

平滑转换会审说明

请与硬件制造商合作,了解如何平滑地更改显示面板亮度。

另请参阅