在 iOS 上探索 EDR(扩展动态范围)
Explore EDR on iOS
2022年6月6日
一句话判断
EDR API 终于来到了 iOS 和 iPadOS——如果你的应用涉及视频播放、图片编辑或游戏渲染,这是让你的内容在支持 HDR 的设备上”亮起来”的机会。
这场 Session 讲了什么
Apple 显示与色彩技术团队的 Denis 介绍了 EDR(Extended Dynamic Range,扩展动态范围)在 iOS 上的全新支持。EDR 是 Apple 的 HDR 技术,允许像素值超过标准 SDR 白色(1.0),利用显示面板的剩余亮度空间渲染更亮、更饱和的内容。
Session 最大的消息是 EDR API 现在正式支持 iOS 和 iPadOS。同时还介绍了 12.9 英寸 iPad Pro 上的两个专业功能:Reference Mode(参考模式)和通过 Sidecar 的 EDR 渲染。
内容涵盖 EDR 的像素表示原理、渲染管线、headroom 的动态特性,以及在 Metal 和 Core Animation 中的集成方式。
值得深挖的点
EDR 的像素表示。 在传统 SDR 中,浮点值 0-1 代表黑色到白色。EDR 延续这个约定——0-1 仍然是 SDR 内容,超过 1.0 的值代表比 SDR 白更亮的内容。关键区别是 EDR 不会对值做色调映射(tone mapping),超过当前 headroom 的值会被裁剪。这意味着 HDR 内容会尽可能忠实地还原创作者意图。
EDR headroom 是动态的。 Headroom 指的是当前显示能支持的最大 EDR 倍数。它不是固定的——取决于设备显示技术、当前 SDR 亮度设置、环境光条件等因素。在 Reference Mode 下,12.9 英寸 iPad Pro 固定为 10x headroom(SDR 100 nit,HDR 1000 nit)。普通模式下 headroom 会随系统亮度动态变化。
Reference Mode 的专业价值。 这是为色彩关键工作流设计的显示模式。它固定 SDR 峰值亮度为 100 nit、HDR 峰值为 1000 nit,禁用 True Tone、自动亮度和 Night Shift 等所有动态调整。支持 BT.709、sRGB、Display P3、HDR10 和 Dolby Vision 五种常见格式。LumaFusion 已经率先适配。
EDR over Sidecar。 当 Reference Mode 开启时,iPad Pro 可以通过 Sidecar 作为 Mac 的辅助参考显示器使用,支持参考级的 SDR 和 HDR 内容渲染。两台设备在相同规格下产生一致的色彩响应。
代码片段
import UIKit
// 获取当前 EDR headroom
// headroom = HDR峰值亮度 / SDR峰值亮度
if let windowScene = view.window?.windowScene {
let screen = windowScene.screen
// 监听 headroom 变化
// headroom 是动态的,会随系统亮度调整
}
// 在 Metal 中使用 EDR
// 使用 MTLPixelFormat.rgba16Float 等浮点格式
// SDR 内容保持在 0-1 范围
// HDR 高光值可以超过 1.0,最高到当前 headroom
let edrValue: Float = 2.5 // 比 SDR 白亮 2.5 倍
// Core Animation 中的 EDR 支持
// CAMetalLayer 的 wantsExtendedDynamicRangeContent 设为 true
metalLayer.wantsExtendedDynamicRangeContent = true
// 监听 EDR headroom 变化以动态调整渲染
// 当 headroom 降低时,超过 headroom 的值会被裁剪
// 你的应用应该根据 headroom 调整渲染策略
最佳实践
- 使用浮点像素格式(如 rgba16Float)来表示 EDR 内容
- SDR 内容保持在 0-1 范围,超过 1.0 的部分留给 HDR 高光
- 监听 headroom 变化,动态调整渲染策略——headroom 变小时超过的值会被裁剪
- 对于专业色彩工作流,引导用户开启 Reference Mode 获得一致的色彩参考
- EDR 值在 linear 空间中表示,2.0 EDR 在视觉上不是 2 倍亮
- 不要对 EDR 值做色调映射,让系统处理裁剪
- 在 wantsExtendedDynamicRangeContent 设为 true 后才能在 Core Animation 层看到 EDR 效果
还有什么值得关注
- macOS 上已有 Baldur’s Gate 3、Divinity: Original Sin 2 等游戏适配了 EDR,iOS 游戏也可以跟进
- EDR headroom 的动态特性意味着你的渲染结果在不同设备和不同亮度设置下可能呈现不同效果
- Safari 和 QuickTime Player 已集成 EDR,视频点播应用可以直接受益
- Reference Mode 目前仅支持 12.9 英寸 iPad Pro with Liquid Retina XDR 显示屏