一、基本概念
1.基本概念
动态范围(Dynamic Range) = 最高亮度 / 最低亮度
- HDR = High Dynamic Range
- LDR = Low Dynamic Range
HDR与LDR和Tonemapping的对应关系:
- 我们常用的各种显示器屏幕,由于不同的厂家不同的工艺导致它们的实际物理亮度是不一致的
- LDR是以一个0-1范围的值,对应到不同屏幕上,由于亮度不同强度不同,我们需要进行对应的匹配,即匹配当前屏幕最低亮度0和最高亮度1的范围
- 自然界中的高动态范围,自然界中的最低亮度和最高亮度差异是十分大的,如蜡烛与太阳
- 如果要将太阳这样的超高的动态范围转换到各种显示器上可以看到的低动态范围,这一过程就叫做Tonemapping
补充:我们的电脑屏幕的最高亮度是通过上个世纪一系列经验累计得到的相对统一的亮度,对人眼来说比较安全的亮度强度,所以我们看电脑屏幕感觉对眼睛的伤害是比较小的,基本上是无伤害的,但当我们直视太阳光时,太阳光强度是会对我们的眼睛造成损伤的
2.LDR:
- 8位精度(8位精度:2*2*2*2*2*2*2*2=256,即8个2相乘,16位即16个2相乘)
- 单通道0-1
- 常用LDR图片储存格式有jpg/png等
- 拾色器、一般的图片、电脑屏幕
3.HDR:
- 远高于8位的精度
- 单通道可超过1
- 常用HDR图片储存格式有hdr/tif/exr/raw等
- HDRI、真实世界
补充:
真实世界中,例如相机,相机拍摄过程中,它是如何把真实世界的光给映射到屏幕上的,相机屏幕上可以看到那样LDR的范围:
- 相机在拍照过程中有曝光这一过程,先把曝光进行一个计算,计算后传入到相机能够感应到范围内
- 之后受到光圈、快门时间、传感器、灵敏度等影响
- 传入到相机能够感应到范围内后再把值输出线性的值存储进相机的图片中,一般数码相机的格式是iw
- 之后再经过变换,该过程叫做LUT,经过一个线性的变换,通过白平和、色彩校正、色调验色以及伽马校正,把这一过程得出的结果烘培成LUT
- 每个相机厂商在做相机拍照时他们的LUT格式各不相同
4.为什么需要HDR
LDR只能算是对现实颜色进行压缩并呈现出来,看似丰富但和现实中的颜色比还是有局限性,一旦进行后效和后续加工会因颜色不够而难以进行,所以在渲染过程中为了更好的画面表达。
- 更高的动态范围以及更丰富的细节,可以用HDR来有效防止画面颜色过曝,超过亮度值1的颜色也能很好的表现出来,像素传达更加正常,视觉传达也更加真实。
HDR才有超过1的数值,才有光晕(bloom)的效果,高质量渲染的bloom能体现画面的渲染品质
HDR的一些来源网站,可以下载HDR图片,可以用作一些反射球
http://www.hdrlabs.com/sibl/archive.htmlhttps://www.openfootage.net/hdri-panorama/
二、Unity中的HDR
1.Camera-HDR设置
- 场景将渲染为 HDR 图像缓冲区
- 屏幕后处理:Bloom & Tonemapping
- 完成转化:HDR -> LDR
- LDR图像发送给显示器
2.Lightmap HDR设置
- 选择 High Quality 将启用 HDR 光照贴图支持,而 Normal Quality 将切换为使用 RGBM 编码。
- RGBM 编码:将颜色存储在 RGB 通道中,将乘数 (M) 存储在 Alpha 通道中
3.拾色器 HDR设置
- 使用 Intensity 滑动条可以调整颜色的强度
- 滑动条每增加1,则提供的光量增加一倍
- 使用 Intensity 滑动条下的曝光样本可以看到当前颜色值在任一方向的预览效果
4.HDR的优缺点
优点
- 画面中亮度超过1的部分不会被截为1,增加白色部分的细节并且减少曝光,
- 更好地支持Bloom效果
- 减少画面较暗部分的色阶感
缺点
- 渲染速度较慢,需要更多显存
- 不支持硬件抗锯齿
- 部分手机不支持
三、HDR与Bloom
1.Bloom用来表现高光的晕光效果(光晕、泛光)
2.Bloom的实现过程
1.先渲染出原图
2.然后计算超出某个阈值的高光像素
3.对高光像素进行高斯模糊
叠加光晕
最后成图
3.简述UnityBloom流程
unity中的流程会在第一步down simple处计算高光的像素,然后高光的像素不停的做downsimple,并存在RT(Render Texture渲染纹理)里,到了一定次数,次数会由参数来控制,在一步步up回去,在up过程中,会将之前的down simple加入一步步上采样回到原来的分辨率
四、HDR与Tonemapping
1.ToneMapping概念
LDR的颜色为0-1,HDR的颜色为超出1或低于1的颜色,想通过显示器表现更多颜色就得把HDR压缩成LDR,而这种映射关系即色调映射ToneMapping
此图为一个线性的亮度映射,但并不符合真实世界,因此所有映射最终靠一个s曲线实现
- 色调映射
- ToneMapping:把HDR转化为LDR
- 线性映射效果极差
- 把高亮区域和阴影区域向中等亮度方向压缩->S曲线
2.ACES
- Academy Color Encoding System学院颜色编码系统
- 最流行、最被广泛使用的Tonemapping映射曲线
- 效果:对比度提高,很好地保留暗处和亮处的细节
其他类型的Tonemapping曲线
五、LUT
- 在Color Grading的All None模式中有LUT,简单来说就是滤镜
- 但LUT与Tonemapping不同,LUT在LDR之间做变化,Tonemapping是对HDR做变化,调整rgb三个通道的LUT被称为3D LUT
- 可以在PS里面调整LUT,导出的LUT作为滤镜调整画面,相当于调整整个画面的滤镜
作业:
结合先行版基础渲染光照介绍(一)试试IBL在HDR和LDR的区别