MTKView/CAMetalLayer中的HDR图像显示

问题描述 投票:0回答:1

我希望使用

CAMetalLayer
/
MTKView
在 iOS 上显示 HDR 图像。我看到
AVCaptureVideoPreviewLayer
AVPlayerLayer
等 CALayers 具有显示 HDR 内容的能力。然而,看起来这些层可能正在使用 EDR API 来实现这一点。然而 this Apple 工程师的回答表明不可能在
MTKView
.

中完全显示它

我想 iPhone 显示屏可能无法完全显示 HDR 图像,并且可能正在做某种从 HDR 到 EDR 的色调映射(据说这是苹果自己的 HDR 表示)。

我需要了解,就显示 HDR 内容而言,与内置的

MTKView
子类(例如
CALayer
AVCaptureVideoPreviewLayer
相比)的功能是否有限?
This
WWDC 视频表明 HDR 内容可以正确显示(或任何 AVPlayerLayer 可以显示的最佳效果)。
    

ios avfoundation metal core-image mtkview
1个回答
0
投票
CALayer

显示 EDR(或 HDR,见下文)内容。该设置显示在 9:18 的

您链接
的视频中。 MTKView

请注意,您负责将内容渲染到与设置的颜色空间相匹配的视图的可绘制对象中。您还可以根据要显示的内容调整色彩空间,例如,如果您的 HDR 图像在该色彩空间中,则将其设置为
// Opt into using EDR let layer = self.layer as? CAMetalLayer layer?.wantsExtendedDynamicRangeContent = true // Use half-float pixel format layer?.pixelFormat = .rgba16Float // Use extended linear display P3 color space layer?.colorspace = CGColorSpace(name: CGColorSpace.extendedLinearDisplayP3)

。或者你可以使用像 Core Image 这样的框架来帮助你在不同的颜色空间和格式之间进行颜色匹配。

我还建议您查看有关此主题的其他 WWDC 视频:

    使用 EDR 探索 HDR 渲染
  • 探索 iOS 上的 EDR
  • 使用 Core Image、Metal 和 SwiftUI 显示 EDR 内容

关于 Apple 的 EDR 的澄清

Apple 所说的

Extended Dynamic Range

(EDR) 不仅仅是 Apple 对 HDR 的表示。这是超出标准范围(由 sRGB 定义)的颜色值的总称。这包括宽色域色彩空间(如 Display P3 或 BT-2020),以及扩展的 brightness 值(例如,当标准白色值 .itur_2020 将以 500 尼特亮度显示时,明亮的扩展白色

[1.0, 1.0, 1.0]
将显示为 1000 尼特)。
他们选择了 EDR 这个术语,因为 HDR 可以表示很多不同的东西,这取决于上下文(扩展亮度、曝光融合、色彩空间等)。

Explore HDR rendering with EDR

对此给出了很好的解释。我还建议您查看支持 Apple Pro Display XDR 技术讲座,以了解有关 EDR 格式、色彩空间和动态余量的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.