一、LDR和HDR的基本概念1.HDR 、LDR、动态范围、ToneMapping的基本概念
- Dynamic Range(动态范围)=最高亮度/最低亮度
 - HDR= High Dynamic Range
 - LDR = Low Dynamic Range
 - ToneMapping:将超高的动态范围转换到我们日常显示的屏幕上的低动态范围的过程
 - 一些小芝士:
 
- 因为不同的厂家生产的屏幕亮度(物理)实际上是不统一的,那么我们在说LDR时,它是一个0到1范围的值,对应到不同的屏幕上就是匹配当前屏幕的最低亮度(0)和最高亮度(1)
 - 自然界中的亮度差异是非常大的。例如,蜡烛的光强度大约为15,而太阳光的强度大约为10w。这中间的差异是非常大的,有着超级高的动态范围。
 - 我们日常使用的屏幕,其最高亮度是经过一系列经验积累的,所以使用、用起来不会对眼睛有伤害;但自然界中的,比如我们直视太阳时,实际上是会对眼睛产生伤害的。
 
2.LDR和HDR
LDR
- 8位精度
 
- 对于8位精度的补充:8位=28
 
- 单通道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中的HDR1.Camera中的HDR设置

- 开启的话,会将场景渲染为HDR图像缓冲区
 - 下一步进行屏幕后处理:Bloom和ToneMapping
 - 在ToneMapping过程中,会把HDR转换为LDR
 - LDR的图像会发送给显示器
 
2.Lightmap的HDR设置
- 选择High Quality将启用HDR光照贴图的支持,选择Normal Quality将切换为使用RGBM编码
 - RGBM编码:将颜色存储在RGB通道中,将乘数(M)存储在Alpha通道中
 
3.拾色器的HDR设置
- 如果将颜色设置为HDR,那么拾色器中就会出现一个Intensity的滑条用来调整强度
 - 滑条每增加1,提供的光强度增加一倍。
 


4.HDR的优点、缺点
- 优点
 
- 画面中亮度超过1的部分不会被截掉,增加了亮部的细节,减少了曝光
 - 减少画面暗部的色阶感
 - 更好的支持bloom效果
 
- 缺点
 
- 渲染速度慢,需要更多显存
 - 不支持硬件抗锯齿
 - 部分手机不支持
 
三、HDR与Bloom1.Bloom的实现过程
- Bloom用来表现光晕的效果
 - Bloom实现过程
 
- 渲染出原图
 - 计算超过某个阈值的高光像素
 - 对高光的像素进行高斯模糊
 - 然后叠加光晕、成图
 

- 简述Unity中的Bloom过程
 
- 后边的课程会详细介绍
 - 在第一步down sample处计算高光的像素,然后不停的做down sample并存在rt里,到达一定次数后(由参数控制),再一步步up scale回去,在这个过程中会将之前的rt加入,一步步up sample回到原来。
 

四、HDR与ToneMapping1.ToneMapping概念
- 前边的回顾:LDR范围为0到1,HDR可以超过1,;
 - 想要在显示器上表现更高动态范围的颜色,就要把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
 
- 格式有如下几种
 

 
- 一个小trick
 
- 可以在PS中调整LUT,导出的LUT作为滤镜调整画面
 

- 补充:可以UE4的后处理滤镜部分中也有LUT相应的位置
 

五、参考资料
- 《Unity Shader入门精要》
 - https://docs.unity.cn/cn/current/Manual/HDR.html
 - https://zhuanlan.zhihu.com/p/91390940
 - https://zhuanlan.zhihu.com/p/80253409
 - https://zhuanlan.zhihu.com/p/21983679
 - http://www.openexr.org/
 - http://www.hdrlabs.com/sibl/archive.html
 










