2.7.1 基本概念
HDR = High Dynamic Range LDR = Low Dynamic Range 动态范围 = 最高亮度 / 最低亮度
LDR
- 8位精度
- 单通道0-1
- 常用的LDR图片储存格式有jpg/png等
- 拾色器、一般的图片、电脑屏幕
HDR
- 远高于8位
- 单通道可超过1
- 常用HDR图片储存格式有 hdr/tif/exr/raw等
- HDRI、真实世界
LUT
将IW格式的图片数据经过处理得到LUT图
2.7.2 为什么需要HDR
- LDR的颜色局限性较大
- 更好的色彩
- 更高的动态范围
- 更丰富的细节
- 有效防止画面过曝
- 像素光亮度变得正常
- 视觉传达更加真实
HDR才有超过1的数值,才有光晕(bloom)的效果,高质量的bloom能提现画面的渲染品质
HDR图来源
www.hdrlabs.com/sibl/archive.html www.openfootage.net/hdri-panorama/
2.7.3 Unity中的HDR
Camera中有HDR设置
- 开启后,场景将渲染为HDR图像缓冲区
- 接着进行屏幕后处理:Bloom&Tonemapping
- 完成转化:HDR->LDR(Tonemapping)
- (R8G8B8)LDR图像发送给显示器
Lightmap HDR设置
- 当Lightmap Encoding设置为High Quality时,将启用HDR光照贴图支持,而Normal Quality将切换为使用RGBM编码。
- RGBM编码:将颜色存储在RGB通道中,将乘数(M)存储在Alpha通道中
拾色器HDR设置
- 使用Intensity滑动条可以调整颜色的强度
- 滑动条每增加1,则提供的光亮增加一倍
HDR的优缺点
优点:
- 换面中亮度超过1的部分不会被截为1,增加了亮部细节减少曝光;
- 减少画面较暗部分的色阶感;
- 更好地支持Bloom效果;
缺点:
- 需要Tonemapping,导致渲染速度较慢,需要更多显存
- 不支持硬件抗锯齿
- 部分手机不支持
2.7.4 HDR与Bloom
Bloom用来表现高光的晕光效果,
- 首先渲染出***color,
- 然后计算出超出某个阈值的高光像素,
- 再对这些高光的像素进行高斯模糊
- 最后叠加光晕
Unity中的做法略用不同 通过参数控制down sample的次数,每一次down sample都存在RenderTexture中,再逐渐up scale,在上采样的过程中将RT中的数据重新加回光照中,从而回到原始的分辨率。
2.7.5 HDR与Tonemapping
- 色调映射
- ToneMapping:把HDR转化为LDR
- 线性的亮度映射效果极差
- 把高亮区域和阴影区域向中等亮度方向压缩->S曲线
ACES
Academy Color Encoding System 学院颜色编码系统 这是最流行、最被广泛使用的Tonemapping映射曲线 效果:对比度提高,很好地保留暗部和亮处的细节 其他类型的Tonemapping曲线
LUT
可以在Color Grading中进行设置,简单理解就是一种滤镜,LUT是在LDR范围内进行变化,而Tonemapping是将HDR范围转变到LDR范围。 调整RGB三个通道的LUT被称为3D LUT格式有:3DL,CUBE,CSP和ICC配置文件 tips:可以在ps中导出LUT来对整个画面进行滤镜效果调整。(不懂,先记上)
总结
IBL在HDR和LDR中的区别
IBL : Image Based Lighting 基于图像的光照 其光源不是可分解的直接光源,而是将周围环境整体视为一个大光源。现代渲染引擎中使用的IBL有四种常见类型:
- 远程光探头,用于捕捉“无限远”处的光照信息
- 局部光探头,用于从特定角度捕捉世界的某个区域
- 平面反射,用于通过渲染镜像场景来捕捉反射,只适用于平面
- 屏幕空间反射,在深度缓冲区中使用光线进行方法渲染,从而捕捉反射
一般情况下IBL通常使用环境立方体贴图(Cubemap),我们将立方体的每个像素都视为光源
又是没做出作业的一天,之后补吧。
|