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…...
Agent 语音交互如何更稳、更快?一次高并发消息链路优化实践
作者:雀贤、文婷、复礼、稚柳 随着大语言模型(LLM)、语音识别(ASR)、语音合成(TTS)等能力逐步成熟,AI Agent 开始从文本交互走向语音交互,典型场景包括 AI 教师、AI 情感…...
第8篇 | 逻辑回归
逻辑回归虽然名字中包含"回归",但实际上是一种分类算法。它通过sigmoid函数将线性输出转换为概率,广泛用于二分类问题。本篇将详细介绍逻辑回归的原理、实现和应用。一、逻辑回归概述逻辑回归用于处理二分类问题,输出为样本属于某一…...
OpenClaw沙盒体验:不装本地环境玩转GLM-4.7-Flash
OpenClaw沙盒体验:不装本地环境玩转GLM-4.7-Flash 1. 为什么选择沙盒体验? 作为一个长期关注AI自动化工具的技术爱好者,我一直在寻找一个既能快速验证想法又不会污染本地开发环境的方式。OpenClaw的本地部署虽然强大,但配置过程…...
手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册
手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在游戏体验中,手柄摇杆的精准控制直接影响操作手感与游戏表现…...
Greasy Fork:用户脚本管理的一站式开源解决方案
Greasy Fork:用户脚本管理的一站式开源解决方案 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 从脚本新手到社区贡献者的进阶指南 一、功能探索:解锁浏览器增强新…...
Fun-ASR-MLT-Nano-2512快速上手:Web界面操作,无需代码基础
Fun-ASR-MLT-Nano-2512快速上手:Web界面操作,无需代码基础 1. 语音识别新选择:Fun-ASR-MLT-Nano-2512 1.1 模型简介 Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的轻量级多语言语音识别模型,经过开发者by113小贝的二次开发优化…...
从 0 开始讲透 C++ Lambda(对标 Java)
在写 C 多线程或 STL 时,经常会看到这样的代码:std::thread t([]{ std::cout << "Hello C Thread\n"; });很多人第一反应:这 [] 是什么?为什么和 Java 不一样?一、先给结论(先建立整体认知…...
OpenClaw定时任务管理:ollama-QwQ-32B实现智能提醒系统
OpenClaw定时任务管理:ollama-QwQ-32B实现智能提醒系统 1. 为什么需要智能提醒系统 作为一个长期被各种截止日期折磨的技术从业者,我一直在寻找一个能够真正理解我需求的提醒工具。传统的日历应用虽然能设置固定时间的提醒,但缺乏灵活性——…...
手把手教你魔改YOLOv8:从CSPPC到SPPELAN的实战调优(新手友好版)
1. 为什么需要魔改YOLOv8? 目标检测是计算机视觉领域最基础也最实用的技术之一,而YOLOv8作为当前最流行的实时检测框架,凭借其出色的速度和精度平衡,已经成为工业界和学术界的首选。但在实际项目中,我们经常会遇到一些…...
从电源到复位:深入拆解STM32最小系统每个电路模块的设计考量与选型避坑
从电源到复位:深入拆解STM32最小系统每个电路模块的设计考量与选型避坑 在嵌入式系统开发中,STM32系列微控制器因其出色的性能和丰富的外设资源而广受欢迎。然而,即使是看似简单的STM32最小系统设计,也蕴含着大量值得深入探讨的工…...

