2.7HDR与LDR
一、基本概念
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
Bloom在游戏中是一种比较常见的效果,是通过后期处理的方式,来达到模拟现实生活中物体在强烈光源照射下,出现“光晕”的效果。
- Bloom的基本原理与效果
- Bloom与HDR的关系
- Bloom的美术意图
- Bloom在Unity中的基本实现
1.Bloom的基本原理与效果

很明显上图中使用了bloom的在阳光洒下的地方,会产生强烈的光晕,这个就是bloom效果,大家也常叫这种特效辉光。
2.Bloom的实现过程
1.先渲染出原图

2.然后计算超出某个阈值的高光像素

3.对高光像素进行高斯模糊

叠加光晕

总结一下就是:bloom其实就是拿到一张图像,对期望区域进行模糊处理,再加回到原图,最后输出
3.简述UnityBloom流程

unity中的流程会在第一步down simple处计算高光的像素,然后高光的像素不停的做downsimple,并存在RT(Render Texture渲染纹理)里,到了一定次数,次数会由参数来控制,在一步步up回去,在up过程中,会将之前的down simple加入一步步上采样回到原来的分辨率
4.Bloom与HDR
怎样理解HDR
在引擎里始终打开bloom,在HDR和非HDR的环境下观察效果
我们看到左边的HDR使用的是Use Graphics Setting 由于我们的目标平台为PC所以在Graphics Setting里面默认是使用HDR的。

先来观察打开HDR的图像,是这样的:

我们再次关闭HDR,观察图像,是这样的:

Bloom始终打开,但在HDR与非HDR(LDR)的两者环境下的图像,受光部分出现了比较强的反差,没有HDR支持的小恐龙受光部分的光晕弱了很多,那是什么导致了这样的原因?
为什么HDR下的效果会如此强烈?是什么导致了这样的反差?上面也说过,是两者处理时使用的数据精度不一样所造成的。那要如何形象的理解这里的精度不一呢?认为如果形象的理解了这个精度,那么对于得到这两个结果的不同就豁然开朗,如下图:

我们就先用一个亮度的概念来解释:HDR比LDR拥有着更多的亮度。也就是说,HDR跨过了LDR的最大存储容量(每通道8bit,共32bit的容量),这意味HDR能拥有更多的颜色,如果归一化解释,假设这个LDR下亮度最多到1,那么HDR则会突破这个限制超过1。

红色表示两种模式下,模糊受光部分的精度
假设红色部分是我们要模糊的那部分像素,LDR下,我们拥有的精度比HDR下少很多的信息,因此得到的结果也就比HDR下弱很多。
当我们拿到更高精度的数据去处理图像的时候,那么得到的也将是更高精度的结果。
总结一下:开启HDR后,ColorBuffer里则会存储更多的数据,当跟一些特殊的后效搭配,可以得到一些更高级的效果,如果把这个”高动态范围“解释为”高精度范围“或者美术更好理解一点的”高明度范围“会不会更好理解一点呢?
HDR&Bloom的美术意图
不同的项目或许风格迥异,但都希望在画面上获得更多的宽容度,拉高上限来获得更高自由度去创造虚拟世界,不管是明度对比,还是色彩对比,画面更多的层次、更丰富的变化,永远是美术人追求的目标。这就像是在地面有一个道具,策划往往希望玩家能很明显的观察到这个可交互物,这时就需要一些辅助手段,比如加个特效,换个OutlineShader等,这本质上就是一种拉开画面层次的手段,尽管这个做法并非基于画面美感去考虑的。美感的表达往往是在统一中寻求变化,在这个统一的框架下,变化越是丰富,画面也越经得住眼睛的长时间的考验。我也认为这也就是为什么2D美术即使像油画般精致,却还是被实时渲染的历史潮流无情碾压,实时渲染可以有着更丰富的即时变化,这些技术都是动态的,且还在不断地进步发展,是动态的,那就说明可以给画面提供更丰富的变化。 那么从美术上,肯定也是需要这种拉开美术关系,画面层次的手段。
HDR&bloom就是其中的一种手段,在提升画面层次,气氛的营造有很重要的作用,它可以让静谧的夜晚显得更神秘,正午的阳光更炙热。
without bloom

那如果我将这个场景的层次进一步拉开,我们打开bloom
with bloom

意境在bloom加入之后得到了进一步提升。光晕让视觉中心得到了进一步的强化。也让”月光“这个看不见摸不着的东西,在画面中也能得到隐约的感受。
总结:更高的技术宽容度,即更高的表现宽容度
四、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(Lookup Table)
- 在Color Grading的All None模式中有LUT,简单来说就是滤镜
- 但LUT与Tonemapping不同,LUT在LDR之间做变化,Tonemapping是对HDR做变化,调整rgb三个通道的LUT被称为3D LUT
- 可以在PS里面调整LUT,导出的LUT作为滤镜调整画面,相当于调整整个画面的滤镜
- 格式有如下几种

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

六、作业
结合先行版基础渲染光照介绍(一)试试IBL在HDR和LDR中的区别:
//以后再写吧
相关文章:
2.7HDR与LDR
一、基本概念 1.基本概念 动态范围(Dynamic Range) 最高亮度 / 最低亮度 HDR High Dynamic RangeLDR Low Dynamic Range HDR与LDR和Tonemapping的对应关系: 我们常用的各种显示器屏幕,由于不同的厂家不同的工艺导致它们的…...
YOLOv5改进(五)-- 轻量化模型MobileNetv3
文章目录 1、MobileNetV3论文2、代码实现2.1、MobileNetV3-small2.2、MobileNetV3-large 3、运行效果4、目标检测系列文章 1、MobileNetV3论文 Searching for MobileNetV3论文 MobileNetV3代码 MobileNetV3 是 Google 提出的一种轻量级神经网络结构,旨在在移动设备上…...
用户流失分析:如何使用Python训练一个用户流失预测模型?
引言 在当今商业环境中,客户流失分析是至关重要的一环。随着市场竞争的加剧,企业需要更加注重保持现有客户,并深入了解他们的离开原因。本文探讨了用户流失分析的核心概念以及如何构建客户流失预测模型的案例。通过分析用户行为数据和交易模式…...
【计算机毕设】基于SpringBoot的社区医院信息平台设计与实现 - 源码免费(私信领取)
免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 引言 随着医疗信息化的不断推进,社区医院作为基层医疗机构,需要建立高效、便捷的信息管理平台以提高服务质量和工作效率。基于SpringB…...
LLM——深入探索 ChatGPT在代码解释方面的应用研究
1.概述 OpenAI在自然语言处理(NLP)的征途上取得了令人瞩目的进展,这一切得益于大型语言模型(LLM)的诞生与成长。这些先进的模型不仅是技术创新的典范,更是驱动着如GitHub Copilot编程助手和Bing搜索引擎等广…...
Android中ANR的分析和解决
一 ANR概述 2、ANR的类型 (1)KeyDispatchTimeout(常见) input事件在5S内没有处理完成发生了ANR。 logcat日志关键字:Input event dispatching timed out (2)BroadcastTimeout 前台Broadcast…...
Kotlin 类
文章目录 什么是类类的属性类的方法(行为)构造函数主构造次构造 类的实例化(对象)伴生对象this 什么是类 在 Kotlin 中,变量类型都是类,像我们常见的Int、String等等,都是类。 为什么要分类&a…...
Forth Python语言:深度解析其四维、五维、六维与七维之奥秘
Forth Python语言:深度解析其四维、五维、六维与七维之奥秘 在编程语言的浩瀚星空中,Forth Python以其独特的魅力与深邃的内涵,吸引着众多探索者的目光。然而,这门语言究竟有何独到之处?本文将从四维、五维、六维和七…...
MySQL--复合查询
之前学过了基本的查询,虽然已经够80%的使用场景了,但是依旧需要了解剩下的20%。 一、多表笛卡尔积(多表查询) 以前我们使用基本查询的时候,from后面就跟一张表名,在多表查询这里,from后面可以跟…...
前端项目开发,3个HTTP请求工具
这一小节,我们介绍一下前端项目开发中,HTTP请求会用到的3个工具,分别是fetch、axios和js-tool-big-box中的jsonp请求。那么他们都有哪些小区别呢?我们一起来看一下。 目录 1 fetch 2 axios 3 js-tool-big-box 的 jsonp 请求 …...
Java_Mybatis
Mybatis是一款优秀的持久层框架,用户简化JDBC(使用Java语言操作关系型数据库的一套API)开发 使用Mybatis查询所有用户数据: 代码演示: UserMapper: Mapper //被调用时会通过动态代理自动创建实体类,并放入IOC容器中…...
2024HW|常见红队使用工具
目录 什么是HW? 什么是网络安全红蓝对抗? 红队 常见工具 信息收集工具 Nmap 简介 漏洞扫描工具 Nessus简介 AWVS 简介 抓包工具 Wireshark简介 TangGo 简介 web 应用安全工具 Burpsuite 简介 SQLMap webshell 管理工具 蚁剑 冰蝎 后…...
Redisson集成SpringBoot
前言:Redisson集成SpringBoot主要有两种方式,一个是使用redisson-spring-boot-starter依赖(优先推荐),毕竟springboot主打的就是约定大于配置,这个依赖就是为springboot准备的。 再一种方式就是引入rediss…...
设计模式(十二)行为型模式---模板方法模式
文章目录 模板方法模式结构优缺点UML图具体实现UML图代码实现 模板方法模式 模板方法模式(Template Method)是一种基于继承实现的设计模式,主要思想是:将定义的算法抽象成一组步骤,在抽象类中定义算法的骨架ÿ…...
【气象常用】剖面图
效果图: 主要步骤: 1. 数据准备:我用的era5的散度数据(大家替换为自己的就好啦,era5数据下载方法可以看这里【数据下载】ERA5 各高度层月平均数据下载_era5月平均数据-CSDN博客) 2. 数据处理:…...
LabVIEW高低温试验箱控制系统
要实现LabVIEW高低温试验箱控制系统,需要进行硬件配置、软件设计和系统集成,确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明: 硬件配置 选择合适的试验箱: 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…...
Flutter 中的 SliverFillViewport 小部件:全面指南
Flutter 中的 SliverFillViewport 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverFillViewport 是一个用于 Custo…...
明日周刊-第12期
以前小时候最期待六一儿童节了,父母总会给你满足一个愿望,也许是一件礼物也许是一次陪伴。然而这个世界上其实还有很多儿童过不上儿童节,比如某些地区的小孩子,他们更担心的是能不能见到明天的太阳。 文章目录 一周热点航天探索火…...
算法之美阅读笔记
这里写自定义目录标题 序04 缓存 -- 忘了它吧 序 在图书馆闲逛时,一本封面为绿色的清新的书引起了我的兴趣,书名是算法之美。我心里不禁嘀咕,大家好喜欢使用某某之美作为书名,比如:数学之美、架构之美。美丽美好的事物…...
新手学习STM32还是ESP32
对于新手来说,选择学习STM32还是ESP32取决于个人的学习目标和背景。以下是针对这两种微控制器的详细分析,以便您做出更明智的选择: STM32 1. 处理器架构与性能 STM32采用单核或多核处理器架构,基于ARM Cortex-M0,M0…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

