unity3d - HDR输出的当前状态

标签 unity3d opengl graphics hdr

互联网上的大多数资源声称,在高动态范围中执行计算后,其中值可以任意大(在类型表示限制内),结果必须从 HDR 转换为标准动态范围,其中值在 [0, 1] 因为这是显示设备可表示的范围。

通常使用色调映射器,如 ACES 风格的电影色调映射器,在 PBR 渲染中尤其流行。之所以如此,是因为无论如何这些值都会被限制在 [0, 1] 范围内,并且任何高于 1 的值都将被忽略,从而导致既不现实也不令人满意的结果......或者他们会吗?

我最近偶然发现了以下 NVIDIA 文章:https://developer.nvidia.com/rendering-game-hdr-display .似乎通过使用 NVIDIA 和 Windows 特定的 API,可以输出 HDR 值以利用某些显示器的功能来显示非常大的色域和亮度。

我想知道为什么没有真正谈论这个。据我所知,即使是大型游戏引擎,例如UnityUnreal不要使用这种技术,而是使用色调映射器来输出 SDR 图像。

为什么会这样? HDR 输出还处于技术演示阶段吗?是否没有消费级显示器能够显示它(尽管许多人开始宣传为“HDR 显示器”)?或者我理解的一切都完全错误,没有任何东西,比如 HDR 输出,这只是一个愚人节玩笑?

编辑:如果可能,我也希望了解有关使用 HDR 输出的跨平台方法的一些信息,尤其是在 OpenGL 中。

最佳答案

Is HDR output still in the phase of tech demos?


什么??不它不是。现在所有蓝光和 AAA 游戏都是 HDR 原生的,包括游戏 PQ 传输中的良好 10 位纹理。

are there non consumer-grade displays capable of displaying it


LG C9、CX、C1就是这样的显示器,经过内部3DLUT校准后几乎可以作为引用。

Or did I understand everything completely wrong and there is nothing such as HDR output and its all just an April Fools joke?


HDR 在不同的显示器上看起来会有所不同,这是标准中规定的。那就是色调映射技术 .

approach to use HDR output, if possible, especially in OpenGL.


最好的方法是 Vulkan 和 DirectX。但即使是 Linux 现在也得到了所有支持。它更像是一个驱动程序。为此需要驱动程序,这是最复杂的部分。

关于unity3d - HDR输出的当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61018895/

相关文章:

c# - Unity - 如何在无限循环的情况下停止播放模式?

c# - 在 Unity3D 中无延迟地截取屏幕截图

c# - 使用 PlayerPrefs 的 Unity Highscore 无法正常工作

javascript - 为什么Unity 2018.2 WebAssembly加载间隔只有0%、90%、100%

opengl - 是否有用于OpenGL阴影语言的 Lint 工具?

graphics - 如何在手动 "Overlay"混合操作中处理 alpha?

c++ - QXcbIntegration : Cannot create platform OpenGL context, GLX 和 EGL 均未启用

c++ - 为什么 glGetSubroutineIndex 为不同的函数返回相同的值?

xcode - Xcode 中的 Quartz Composer View

java - 如何在JAVA运行时设置描边颜色?