LDR与HDR
写在前面:
本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。
由于本人水平有限难免出现错误,还请评论区指出,多多指教。
部分图元和素材来源于网络,如有侵权请联系本人删除。
参考资料与链接会在文章末尾贴出。
=======================================================================
1.
LDR表示低动态范围图像,HDR表示高动态范围图像。LDR常见的格式有png,jpg等,比如一张8位图,RGB三个通道灰度值变化范围0-255,即8位图能表示256^3种颜色,看似很多,但实际上远不够来描述我们身处真实世界中的色彩。因此就需要HDR来描述,存储图像,能有更丰富的色彩细节,但HDR并不是一个固定的标准有的是12位,有的是16位等,常见的格式有hdr/exr/raw/tif等。一般我们会把LDR图像通道的值映射到0-1之间,最亮为1,而HDR最亮是可以超过1的。
2.Tone Mapping
由于硬件设备的差异,目前很多情况都需要将HDR的内容输出到LDR的设备上,由此问题来了,我们需要一些方法将HDR图像映射为LDR,此为Tone Mapping。
线性映射
假设下左图中最亮的太阳部分为100,最暗的右下角部分只有5,直接线性映射到LDR下右图,最亮部分为1,最暗部分为0,很明显细节丢失太多了。


下左图为关闭HDR,下右图为开启HDR,左图雪地有明显的的过曝情况,正是因为LDR无法很好表现亮部细节而粗暴的截断了。


因此,为了比较好的映射HDR到LDR大佬们想出了很多算法,比如Reinhard tone mapping,2007年孤岛危机(Crysis)的CryEngine 2自己也搞了一套算法,2010年顽皮狗工作室在神秘海域2上也弄了自己一套算法Filimic,Academy Color Encoding System(ACES)等等。表现效果各有优劣(因为审美是主观的),但 总体上不断在前人的基础上改进,简单粗暴来说,就是把原来的线性映射变成“S曲线”的映射,当然具体曲线怎么变化,公式magic number是多少,算法怎么写更优都是在大佬们在许多项目中研究总结出来的。




有了tone mapping我们可以让画面表现力更上一层楼:

3.bloom
在unity中开启HDR Color,可以将bloom特效的阈值调到合理的值比如1以上才会有bloom特效

各种特效的bloom(辉光?)也更出彩
上图是LDR下的特效,下图是HDR下的特效


参考资料:
1.https://docs.unity3d.com/Manual/HDR.html
2.https://zhuanlan.zhihu.com/p/21983679
3.https://zhuanlan.zhihu.com/p/80253409
4.TA百人计划
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验