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在游戏中是一种比较常见的效果,是通过后期处理的方式,来达到模拟现实生活中物体在强烈光源照射下,出现“光晕”的效果。

  1. Bloom的基本原理与效果
  2. Bloom与HDR的关系
  3. Bloom的美术意图
  4. 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中的区别:

//以后再写吧

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

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

相关文章

HALCON-从入门到入门-软件界面介绍

1.废话 从halcon12到halcon23,开发的IDE界面大差不差,简单说下界面上不同功能按键的分布,以及一些快捷键啥的,要是还有我没有总结到的,又比较好用的,欢迎大家补充一下。 1.菜单栏 从上看到下,…

如何从0到设计一个CRM系统

什么是CRM 设计开始之前,先来了解一下什么是CRM。CRM(Customer Relationship Management)是指通过建立和维护与客户的良好关系,达到满足客户需求、提高客户满意度、增加业务收入的一种管理方法和策略。CRM涉及到跟踪和管理客户的所…

python深度学习入门-从零构建CNN和RNN

文章目录 第1章 基本概念1.1. 导数1.2. 链式法则1.3. 多输入函数的导数1.4. 多输入向量函数的导数1.5. 向量函数及其导数: 再进一步1.6. 包含两个二维矩阵数据的计算图 第2章 基本原理2.1. 监督学习概述2.2. 监督学习模型2.3. 线性回归2.3.1. 线性回归: …

[激光原理与应用-94]:电控 - 低噪声运放的原理

目录 一、什么是低噪声运放 1.1 什么是低噪声水平 1.2 什么是高增益 在电子工程中的应用 在通信领域的应用 在音频和视频处理中的应用 注意事项 1.3 什么是宽带宽 1.4 什么是低偏置电流 重要性 特点 解决方法 应用 二、低噪声运放的原理图 1. 基本构成 2. 设计…

HTML5新元素探索:重塑网页结构与功能的革新

随着互联网技术的飞速发展,HTML5作为新一代超文本标记语言标准,不仅增强了对多媒体内容的支持,还引入了一系列新元素,旨在使网页结构更加语义化、可访问性更强。本文将深入探讨几个核心的新元素,通过代码示例展示它们如…

22data 脚本语言基础——Python

横线为没讲到的。 1. 基础语法 变量:变量的声明和使用。 数据类型:整数(int)、浮点数(float)、字符串(str)、布尔值(bool)等。 运算符:算术运算符…

第五维度【百度之星】/二分

第五维度 二分 思路&#xff1a;看到题目是尽可能晚的情况下最早就应该想到贪心。 #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[100005],b[100005]; ll n,m; bool check(ll t) {ll res0,big0;for(ll i0;i<n;i) {if(a[i]>t) continue…

JMeter工具介绍

Jmeter功能概要 JDK常用文件目录介绍 Bin目录&#xff1a;存放可执行文件和配置文件 Docs目录&#xff1a;是Jmeter的API文档&#xff0c;用于开发扩展组件 printable_docs目录&#xff1a;用户帮助手册 lib目录&#xff1a;存放JMeter依赖的jar包和用户扩展所依赖的Jar包 修…

HALCON-从入门到入门-读取图片保存图片

1.废话 视觉算法库的第一步。 读取图片&#xff1a; 看你是从哪里读取&#xff0c;从相机读取还是从本地硬盘中读取。 保存图片&#xff1a;就只有保存到本地了。 上面的截图显示我读取了一张图片 从相机中读取另开一篇来说&#xff0c;先说从本地磁盘读取哈。 怎么读取的…

创建maven 项目

一、groupId, artifactId When creating a Maven project in IntelliJ IDEA, "groupId" and "artifactId" are two essential elements of the projects metadata. groupId: This typically identifies your project uniquely across all projects. For e…

C语言程序设计第二讲:顺序程序设计

一、数据类型 1. 基本数据类型 C语言中提供了一些基本数据类型&#xff0c;用于表示各种不同类型的数据&#xff1a; 整数类型&#xff1a; int&#xff1a;表示整数&#xff0c;通常占用4个字节。short int&#xff1a;表示短整数&#xff0c;通常占用2个字节。long int&am…

Pycharm 的使用

使用文档&#xff1a; Getting started | PyCharm DocumentationPyCharm 中文指南 — PyCharm 中文指南(Win版) 2.0 documentation 在Ubuntu中安装并配置Pycharm教程&#xff08;安装 Pycharm&#xff09;Ubuntu安装pycharm及快速创建pycharm的快捷方式&#xff0c;便于使用&am…

数据结构复习指导之交换排序(冒泡排序,快速排序)

目录 交换排序 复习提示 1.冒泡排序 1.1基本思想 1.2算法代码 1.3性能分析 2.快速排序 2.1基本思想 2.2算法代码 2.3性能分析 交换排序 复习提示 所谓交换&#xff0c;是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。 基于交换的排序算法很…

链表逆序用哨兵位头节点

在C语言中实现链表的逆序&#xff0c;使用哨兵头节点是一种常见的做法。哨兵头节点可以简化代码逻辑&#xff0c;特别是当链表为空时&#xff0c;可以避免空指针异常。下面是一个使用哨兵头节点逆序单链表的C语言实现 示例&#xff1a; #include <stdio.h> #include &l…

富格林:应用正规技巧阻挠被骗

富格林悉知&#xff0c;随着如今入市现货黄金的朋友愈来愈多&#xff0c;不少投资者也慢慢开始重视起提高自身的正规投资技巧&#xff0c;希望能阻挠被骗更高效地在市场上获利。虽然目前黄金市场存在一定的受害风险&#xff0c;但只要投资者严格按照正规的交易规则来做单&#…

python解决flask启动的同时启动定时任务

业务场景描述&#xff1a;在常规的开发中&#xff0c;我们开发接口服务&#xff0c;一般会将数据放在数据库、文件等第三方文件&#xff0c;启动服务后&#xff0c;服务到后台数据库中加载数据&#xff0c;这样做的好处当然是开发会更加便利以及数据的可复用性较高&#xff0c;…

深度学习-03-函数的连续调用

深度学习-03-函数的连续调用 本文是《深度学习入门2-自製框架》 的学习笔记&#xff0c;记录自己学习心得&#xff0c;以及对重点知识的理解。如果内容对你有帮助&#xff0c;请支持正版&#xff0c;去购买正版书籍&#xff0c;支持正版书籍不仅是尊重作者的辛勤劳动&#xff0…

LLaMA-Factory推理实践

运行成功的记录 平台&#xff1a;带有GPU的服务器 运行的命令 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310由于服务器不能直接从huggingface上下载Qwen1.5-0.5B&#xff0c;但本地可…

51仿真器 PZ-51Tracker 未知设备

插上仿真器&#xff0c;右击我的电脑 等待一下&#xff0c;选择winUSB 此时在keil中选择仿真器会报错&#xff0c;需要安装如下我是win10) 安装好后退出再试&#xff0c;没有报错即可 这项也要选择 另外配置晶振

MYSQL之存储篇

MYSQL之存储篇 存储过程简介存储过程优点&#xff1a; MySQL的存储过程MySQL存储过程的创建1.格式2.声明分割符3.参数4.变量5.注释6.MySQL存储过程的调用7. MySQL存储过程的查询8.MySQL存储过程的修改9.MySQL存储过程的删除10. MySQL存储过程的控制语句11.MySQL存储过程的基本函…