[自学记录08*]LDR、HDR与ToneMapping

一、Dynamic Range—动态范围

Dynamic Range表示动态范围,检测DR,DR又分为LDR(Low Dynamic Range)HDR(High Dynamic Range)。它们都是表示亮度值范围的一种方式,那么有什么区别呢。

1.LDR

LDR的亮度范围是单通道8位精度0~1存储,也就是0~255这个范围。

在伽马矫正中我们知道0~255,这些数字远不够表达自然界中那么丰富的细节,因此如果用LDR来存储图片,会丢失很多细节。

LDR常见的格式有png,jpg等。

拾色器、一般的图片、我们的显示器,都是LDR。

2.HDR

HDR的亮度范围是单通道超过8位存储,值得一提的是HDR并没有统一的标准,有12位精度的,还有16位精度的。

常见的格式有hdr,exr,raw,tif等。

总结一下,对于渲染来说,HDR有以下的优缺点。

(1)优点:

  • 增加亮部的细节,减少了细节丢失和过曝效果
  • 更好地支持Bloom效果
  • 减少低亮光照区域的条带效果

(2)缺点:

  • 使用浮点渲染纹理,渲染速度较慢,需要更多显存
  • 不支持硬件抗锯齿(但可以使用后处理)
  • 部分手机不支持

二、ToneMapping

因为真实世界的范围其实就是一种HDR,但在即使我们想表达那么多的颜色,却只能用LDR,那么如何把HDR较好地变到LDR呢?这其中的方法就是ToneMapping,其实就是一种色调映射。当然这种映射并不是线性的。

这里我们就拿8位和16位举例子好了,8位能表示的精度为256个精度。而16位可以表示的精度则是65536个精度,相差了256倍。也就是说如果采用线性映射的话,在16位精度下的0~255表示的亮度值都会被映射到8位精度下的0表示的亮度值。

 在图像上的反应也就是在HDR下的图上的稍微暗一些的地方,到了LDR可能就是完全的死黑。

其实也非常好理解,我们完全可以把真实世界的亮度理解为一种信号,而无论是LDR还是HDR,都是对现实世界的一种采样,HDR的精度更大,采样率也就更高,自然恢复出来的信号更拟合真实世界的连续的信号。

下两幅图为32位精度存储下的HDR图,线性映射到8位精度的结果

32位精度
8位精度

这里我找的例子并不是太好,但是可以明显感觉到,下面的8位精度的图,亮度上丢失了许多细节。如草阴影下的细节,由暗绿色变成了纯黑。

因此,我们需要不同的映射曲线来实现较好的还原细节。其中最广泛的是ACES曲线。ACES曲线可以较好的提高对比度,在一定程度上还原亮部暗部的细节。

如下图分别为线性映射(左),和ACES(Academy Color Encoding System)曲线映射(右)的结果。 

 

当然了,有各种各样的ToneMapping,它们有它们各自的特点,这里不一一细说了。 

三、Unity中的HDR 

1.Camera开启HDR

当Camera开启HDR,场景就会被渲染到HDR的图像缓冲区,这个缓冲区可以存0~1范围外的像素值,然后这个缓冲区可以被渲染操作使用,如Bloom后处理效果,这意味着使用较为真实的值进行计算,因此可能会产生更逼真的效果。

2.Light map开启HDR

在Unity的Edit的Project Settings中的Player选项中,下拉选择Lightmap Encoding,选择High Quality则可开启light map对HDR的支持。 

3.拾色器HDR

在Shader中,如果想把颜色属性开启HDR,在变量前加上[HDR]即可为拾色器开启HDR的支持。

在Intensity滑动条中可以更改颜色的强度,每增加1,相应的亮度增加1倍。

对于不同模式的解释,这里贴上官方文档的解释,大家自行参考。个人认为没什么不同,看个人习惯的问题。

四、参考资料 

使用亮度直方图自动曝光 |Bruno Opsenica 的博客 (bruop.github.io)

 高动态范围 - Unity 手册 (unity3d.com)

 Unity - Manual: HDR color picker (unity3d.com)

Tone Mapping | Bruno Opsenica's Blog (bruop.github.io)

Academy Color Encoding System - 维基百科,自由的百科全书 (wikipedia.org)

HDR,ToneMapping,Bloom之间的关系 - 知乎 (zhihu.com)

Tone mapping进化论 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】RabbitMQ 消息的堆积问题 —— 使用惰性队列解决消息的堆积问题

文章目录 一、消息的堆积问题1.1 什么是消息的堆积问题1.2 消息堆积的解决思路 二、惰性队列解决消息堆积问题2.1 惰性队列和普通队列的区别2.2 惰性队列的声明方式2.3 演示惰性队列接收大量消息2.4 惰性队列的优缺点 一、消息的堆积问题 1.1 什么是消息的堆积问题 消息的堆积…

基于Qt命令行处理XML文件读写

Qt源码在后面,文本介绍Qt国际化语言和XML # XML基础(一) ## 1、概述 ### 1.1 定义(xml是个啥玩意儿?) XML(extensible Markup Language)俗称差妹儿,专业称之为:可拓展标记语言。 (1)何为标记,指的是一种标记语言,或者标签语言,即用一系列的标签来对数据进行…

Linux常用命令——chage命令

在线Linux命令查询工具 chage 修改帐号和密码的有效期限 补充说明 chage命令是用来修改帐号和密码的有效期限。 语法 chage [选项] 用户名选项 -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M:密码保持有效的最大天数。 -w&…

数字媒体技术基础之:ICC 配置文件

ICC 配置文件(也称为 ICC 色彩配置文件或 ICC 色彩描述文件)是由国际色彩联盟(International Color Consortium, ICC)制定的一种标准文件格式,用于在不同的设备和软件之间保持颜色的一致性。 ICC 配置文件包含有关设备…

项目实战:通过axios加载水果库存系统的首页数据

1、创建静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script src"script/axios.mi…

2023-11-04:用go语言,如果n = 1,打印 1*** 如果n = 2,打印 1*** 3*** 2*** 如果n = 3,打印

2023-11-04&#xff1a;用go语言&#xff0c;如果n 1&#xff0c;打印 1*** 如果n 2&#xff0c;打印 1***3*** 2*** 如果n 3&#xff0c;打印 1***3*** 2***4*** 5*** 6*** 如果n 4&#xff0c;打印 1***3*** 2***4*** 5*** 6***10** 9*** 8*** 7*** 输入…

EASYX图片操作

easyx学习网址 建议使用谷歌搜索引擎搜索相关的资料 eg1:图片显示到桌面 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h> #define PI 3…

2.8 CSS 伸缩盒模型

1.模型简介 传统布局是指:基于传统盒状模型&#xff0c;主要靠: display 属性 position 属性float 属性。2009年&#xff0c;w3C提出了一种新的盒子模型——Flexible Box(伸缩盒模型&#xff0c;又称:弹性盒子)。它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序..…

DBeaver关闭代码的提示

在DBeaver中会遇到如下现象&#xff0c;很烦&#xff0c;怎么取消这个提示框呢&#xff1f; 解决方案&#xff1a;

根据一个类型 获取该类型的 特殊判断 优雅写法

需求&#xff1a;一个统计接口&#xff0c;时间类型参数有以下&#xff1a;今日、近七天、近三十日等 如果我要查询的话&#xff0c;SQL 里的条件必定是一个时间范围&#xff0c;所以就需要根据类型来算好这个时间范围&#xff0c;所以可以写成下面这样。 到时候直接就是 获取…

Android 如何在Android studio中快速创建raw和assets文件夹

一 方案 1. 创建raw文件夹 切成project浏览模式——>找到res文件粘贴要放入raw文件夹下的文件。 当然此时raw文件还没有&#xff0c;直接在右侧输入框中出现的路径~\res后面加上\raw即可。 2. 创建assets文件夹 同理在main文件夹下粘贴要放入assets文件夹的文件&#xff0…

免费外文文献检索网站,你一定要知道

01. Sci-Hub 网址链接&#xff1a;https://tool.yovisun.com/scihub/ Sci-hub是一个可以无限搜索、查阅和下载大量优质论文的数据库。其优点在于可以免费下载论文文献。 使用方法&#xff1a; 在Sci—hub搜索栏中粘贴所需文献的网址或者DOI&#xff0c;然后点击右侧的open即可…

强大日志查看器,助力数据联动分析

前言 我们曾讨论过观测云查看器强大的查询筛选和搜索功能&#xff0c;能够帮助用户快速、精准地检索数据&#xff0c;定位故障问题&#xff08;参见《如何使用查看器筛选、搜索功能进行数据定位&#xff1f;》&#xff09;。除此之外&#xff0c;日志查看器不仅可以帮助我们收…

VSCode中的任务什么情况下需要配置多个问题匹配器problemMatcher?多个问题匹配器之间的关系是什么?

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、简介 在 VS Code 中&#xff0c;tasks.json 文件中的 problemMatcher 字段用于定义如何解析任务输出中的问题&#xff08;错误、警告等&#xff09;。 problemMatcher是一个描述问题匹配器的接口&…

vim三种模式,文本操作(操作字符/光标,列出行号可视化块模式/多文件查看)

目录 vim--文本编辑器 功能 基本概念 命令/默认模式 插入模式 底行模式 文本操作 引入 移动光标位置 删除字符 -- x/dd 复制/粘贴字符 -- yw/yyp 替换文本 -- r / %s 底行模式 全局替换 -- /g 撤销操作 -- u / ctrlr 修改字符 -- cw 示例 跳行 -- ctrlg 底行…

13 Linux 蜂鸣器

一、蜂鸣器驱动原理 常用蜂鸣器分两种&#xff0c;有源蜂鸣器和无源蜂鸣器。 它们俩的区别&#xff1a;有源蜂鸣器具有内置的振荡器和驱动电路&#xff0c;无源蜂鸣器没有&#xff1b;源蜂鸣器只需简单的数字信号来控制&#xff0c;无源蜂鸣器需要外部电路或微控制器来提供特定…

【已解决】设置SSH主机:VS Code-正在本地下载 VS Code 服务器

问题描述 很简单&#xff0c;就是我电脑强制重启之后用vscode再去连服务器&#xff0c;发现连不上了 解决办法 如上图&#xff0c;点击重试按钮&#xff0c;下面的这些东西就可以复制粘贴了 ctrf查找commit&#xff0c;这个时候就能找到一串d037ac076cee195194f93ce6fe2bdfe296…

飞行器坐标转换

飞行器坐标转换 坐标系定义方向余弦矩阵 坐标系定义 本文定义的是右手直角坐标系&#xff0c; x − y − z x-y-z x−y−z轴分别为北-天-东。 从 A A A坐标系到 B B B坐标系是分别绕 y − z − x y-z-x y−z−x轴&#xff0c;即天-东-北旋转 ψ − θ − γ \psi-\theta-\gamm…

什么是文件安全

文件安全就是通过实施严格的访问控制措施和完美的权限卫生来保护您的业务关键信息不被窥探&#xff0c;除了启用和监控安全访问控制外&#xff0c;整理数据存储在保护文件方面也起着重要作用。通过清除旧的、过时的和其他垃圾文件来定期优化文件存储&#xff0c;以专注于关键业…

AdvFaces: Adversarial Face Synthesis

AdvFaces: Adversarial Face Synthesis AdvFaces:对抗性人脸合成 摘要 我们提出了AdvFaces&#xff0c;一种自动对抗人脸合成方法&#xff0c;通过生成对抗网络学习在显著面部区域产生最小的扰动。一旦AdvFaces经过训练&#xff0c;它就可以自动产生难以察觉的扰动&#xff0…