一、LDR和HDR的基本概念
1.HDR 、LDR、动态范围
● Dynamic Range(动态范围)=最高亮度/最低亮度
● HDR= High Dynamic Range
● LDR = Low Dynamic Range
● ToneMapping:将超高的动态范围(HDR)转换到我们日常显示的屏幕上的低动态范围(LDR)的过程
● 一些小芝士:
○ 因为不同的厂家生产的屏幕亮度(物理)实际上是不统一的,那么我们在说LDR时,它是一个0到1范围的值,对应到不同的屏幕上就是匹配当前屏幕的最低亮度(0)和最高亮度(1)
○ 自然界中的亮度差异是非常大的。例如,蜡烛的光强度大约为15,而太阳光的强度大约为10w。这中间的差异是非常大的,有着超级高的动态范围。
○ 我们日常使用的屏幕,其最高亮度是经过一系列经验积累的,所以使用、用起来不会对眼睛有伤害;但自然界中的,比如我们直视太阳时,实际上是会对眼睛产生伤害的。
2.LDR和HDR
LDR
● 8位精度
○ 对于8位精度的补充:8位 = 28= 256(0~255)
● 单通道0-1
● 常用LDR图片存储的格式有jpg/png等
● 常用DCC工具中的拾色器、一般的图片、电脑屏幕都是LDR
○ 例如拾色器中0-255(256)
HDR
● 远高于8位精度
● 单通道可以超过1
● 常用HDR图片存储的格式有hdr/tif/exr/raw等(其中很多是相机常用格式)
● HDRI、真实世界
补充:相机是如何将HDR映射到LDR的
● 首先将曝光值进行计算,映射到相机可以感应的范围
○ 受光圈、快门、传感器的灵敏度等影响
● 然后把这个值输入为线性的值,存储到图片中(一般为raw格式)
● 之后会经过一个变化(LUT),通过白平衡、色彩校正、色调映射、伽马校正这个过程,最后的结果烘焙成LUT(pbr中LUT的图,就是这个过程的结果)
● 每个相机厂商的LUT格式不太一样。
3.为什么需要HDR
● LDR只能将现实中的颜色压缩再呈现出来
○ HDR可以由更好的色彩,更高的动态范围和更丰富的细节。
○ 可以有效防止画面过曝,超过1的亮度值的色彩也能很好地表现,像素光亮度变得很正常,视觉传达更真实
HDR才有超过1的数值,才会有光晕(bloom)效果,高质量的bloom效果能体现出画面的渲染品质
4.一些可以直接下载HDR图的网址
● http://www.hdrlabs.com/sibl/archive.html
● https://www.openfootage.net/hdri-panorama/
二、Unity中的HDR
v 1.Camera中的HDR设置
● 开启的话,会将场景渲染为HDR图像缓冲区
● 下一步进行屏幕后处理:Bloom和ToneMapping
● 在ToneMapping过程中,会把HDR转换为LDR
● LDR的图像会发送给显示器
2.Lightmap的HDR设置
● 选择High Quality将启用HDR光照贴图的支持,选择Normal Quality将切换为使用RGBM编码
● RGBM编码:将颜色存储在RGB通道中,将乘数(M)存储在Alpha通道中
3.拾色器的HDR设置
● 如果将Property的颜色参数的前边加上[HDR]就会将其标识为HDR
● 颜色设置为HDR,那么拾色器中就会出现一个Intensity的滑条用来调整强度
● 滑条每增加1,提供的光强度增加一倍。
4.HDR的优点、缺点
● 优点
○ 画面中亮度超过1的部分不会被截掉,增加了亮部的细节,减少了曝光
○ 减少画面暗部的色阶感
○ 更好的支持bloom效果
● 缺点
○ 渲染速度慢,需要更多显存
○ 不支持硬件抗锯齿
○ 部分低端手机不支持
三、HDR与Bloom
1.Bloom的实现过程
● Bloom用来表现光晕的效果
● Bloom实现过程
○ 渲染出原图
○ 计算超过某个阈值的高光像素
○ 对高光的像素进行高斯模糊
○ 然后叠加光晕、成图
● 在Unity中的Bloom过程
○ 后边的课程会详细介绍
○ 在第一步down sample处计算高光的像素,然后不停的做down sample并存在rt里,到达一定次数后(由参数控制),再一步步up scale回去,在这个过程中会将之前的rt加入,一步步up sample回到原来。
○ 这里说了降采样和上采样等概念,后续bloom课程中有涉及,这里直接贴点参考链接:
四、HDR与ToneMapping
1.ToneMapping概念
● 前边的回顾:LDR范围为0到1,HDR可以超过1,;
● ToneMapping的概念:
○ 想要在显示器上表现更高动态范围的颜色,就要把HDR转换为LDR(这个过程就是ToneMapping),这种映射关系就是色调映射。
● 下边例子是一个线性的亮度映射
● 但这并不符合我们对真实世界的理解,因此,基本上所有的映射最后都是通过一个s曲线来实现。
2.ACES曲线
● Academy Color Encording System学院颜色编码系统
● 是最流行、最被广泛使用的ToneMapping映射曲线
● 效果:对比度提高,能很好的保留暗部和亮部的细节
● 之后在这个基础上再进行调色
3.其他类型的ToneMapping曲线
4.LUT(Lookup Table)
● 简单的理解:就是滤镜,通过LUT,你可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩
● 和ToneMapping不同,LUT是在LDR之间做变化。 而ToneMapping是对HDR做变换的。
● 调整RGB三通道的LUT被称为3D LUT
○ 格式有如下几种
可以UE4的后处理滤镜部分中也有LUT相应的位置