图形 2.7 LDR与HDR

news2024/11/15 16:44:27

LDR与HDR

B站视频:图形 2.7 LDR与HDR

文章目录

  • LDR与HDR
  • 基本概念
  • LDR
  • HDR
    • 为什么需要HDR
    • 不同显示屏的差异
  • Unity中的HDR
    • Camera HDR 设置
    • Lightmap HDR设置
    • 拾色器 HDR设置
    • 优缺点
  • HDR与Bloom
    • 通常Bloom渲染步骤
      • 渲染出原图
      • 获取图像中较亮部分
      • 高斯模糊
      • 叠加
    • Unity中Bloom渲染步骤
  • HDR与Tonemapping
    • ACES
    • LUT
  • 其他参考资料

基本概念

HDR: High Dynamic Range,高动态范围

LDR: Low Dynamic Range,低动态范围

动态范围(Dynamic Range) = 最高亮度 / 最低亮度

LDR

2.7_1

  • 8位精度(256精度);
  • 单通道 0-1;
  • 常用LDR图片储存格式:jpg、png、tga等;
  • 拾色器、一般的图片、电脑屏幕。

HDR

2.7_3

2.7_2

  • 远高于8位精度;
  • 单通道可超过1;
  • 常用HDR图片储存格式:hdr、tif、exr、raw等;
  • HDRI、真实世界。

为什么需要HDR

  • **更好的色彩,更高的动态范围和更丰富的细节。**并且有效的防止画面过曝,超过亮度值1的色彩也能很好的表现,像素光亮度变得正常,视觉传达更加真实;

    2.7_4

  • HDR才有超过1的数值,才有光晕(bloom)的效果,高质量的bloom能体现画面的渲染品质;

    2.7_5

不同显示屏的差异

市场上的不同显示屏,它们由于不同的厂家以及不同的实现工艺手法,它们的实际亮度(物理亮度)不统一的。以LDR来说,LDR范围为[0, 1],对应到不同屏幕上时,由于显示屏的亮度、强度不一致,就需要进行对应的匹配,也就是说匹配当前屏幕最低亮度0最高亮度1的范围,这一步骤由各自厂家完成。

Unity中的HDR

Camera HDR 设置

2.7_6

  • 场景将渲染为HDR图像缓冲区;
  • 屏幕后处理:Bloom & Tonemapping;
  • Tonemapping中完成转化:HDR -> LDR;
  • LDR图像发送给显示器。

Lightmap HDR设置

2.7_7

  • 选择High Quality将启用HDR光照贴图支持,而Normal Quality将切换为使用RGBM编码
  • RGBM编码:将颜色存储在RGB通道中,将乘数(M)存在Alpha通道中。

拾色器 HDR设置

2.7_8

  • 使用Intensity滑动条可以调整颜色的强度;
  • 滑动条每增加1,提供的光亮增加一倍
  • 在Shader中的属性栏内,目标颜色添加[HDR]标签。
Properties
{
    [HDR]_Color ("Color", Color) = (1,1,1,1)
}

优缺点

优点

  • 画面中亮度超过1的部分不会被截为1,增加亮部的细节并且减少曝光;
  • 减少画面较暗部分的色阶;
  • 更好地支持Bloom效果。

缺点

  • 渲染速度较慢(增加了Tonemapping步骤),需要更多的显存;
  • 不支持硬件抗锯齿;
  • 部分手机不支持。

HDR与Bloom

2.7_9

通常Bloom渲染步骤

渲染出原图

2.7_10

获取图像中较亮部分

从原图提取出超出阈值的高亮部分。

2.7_11

高斯模糊

对提取出的高亮部分进行高斯模糊

2.7_12

叠加

将高斯模糊后的高亮部分和原图进行叠加,得出最终效果。

2.7_13

Unity中Bloom渲染步骤

Unity实现Bloom效果和通常步骤不太一样。会在第一步先进行down sample(降采样,将原图分辨率减半)计算高光像素,然后根据down sample次数不断地进行降采样,并存到一张Render Texture中。次数到底后,再一步步up sample(升采样)回去。在up sample过程中,叠加之前相同次数的Render Texture。最终,回到原来的分辨率。

2.7_14

HDR与Tonemapping

在自然界中存在不同光源,不同光源的动态范围也不一样。例如蜡烛光的动态范围[10, 15](非真实值)、太阳光的动态范围[100000, 150000](非真实值),将这些动态范围转换到屏幕上可以看到的低动态范围,这个过程就叫做Tonemapping

2.7_15

  • 色调映射;
  • Tonemapping:把HDR转化为LDR;
  • 线性映射效果极差;
  • 把高亮区域和阴影区域中等亮度方向压缩 -> S曲线;

ACES

2.7_16

  • Academy Color Encoding System 学院颜色编码系统;
  • 最流行、最被广泛使用的Tonemapping 映射曲线;
  • 效果:对比度提高,很好地保留暗处和亮处的细节。

LUT

完整的ACES Tonemapping算法需要对每个像素做两次矩阵乘法以及两次多项式运算,如果在全屏后处理中使用,性能浪费较大。目前通行的优化方案是使用颜色查找表(Look Up Table, LUT),将每个像素颜色的计算过程转化为一次贴图采样。Unity中使用的Color LUT长这样:

2.7_17

Color LUT的具体使用步骤如下:

  1. 确定LUT使用的坐标空间,Unity使用的是Log C空间,该空间可以将[0, 59) 范围内的颜色值压缩到[0, 1];
  2. 选择LUT尺寸size,创建一张 size * (size * size) 大小的2D贴图;
  3. 逐个遍历像素,以uv坐标和尺寸换算到LUT空间坐标,再转换回线性空间颜色;
  4. 对线性空间颜色应用Tonemapping,结果写入像素对应uv处;
  5. 实际需要Tonemapping时,将输入线性空间颜色转换到LUT空间,再转换为uv坐标,采样LUT贴图,采样值作为最终结果;
  6. 也可以使用3D贴图,这样可以省去uv坐标转换的步骤;

使用Color LUT可以将对颜色的所有后处理全部整合到一起,因为不管多么复杂的计算,在实际应用时都转化成了一次采样。那么除了Tonemapping之外,其他诸如色相色温白平衡饱和度这样的调整统统都可以塞到一起去,这也就是为什么我们看Unity中生成LUT那个Shader里有一大堆参数了。

其他参考资料

Tone mapping进化论 - 知乎

【图形学基础拾遗】系统性理解颜色空间、HDR与Tonemapping - 知乎

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

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

相关文章

单片机设计智能翻译手势识别系统

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在全球化的浪潮下,语言的多样性也为人们的交流带来了不小的挑战…

Python调用API翻译Excel中的英语句子并回填数据

一、问题描述 最近遇到一个把Excel表中两列单元格中的文本读取,然后翻译,再重新回填到单元格中的案例。大约有700多行,1400多个句子,一个个手动复制粘贴要花费不少时间,而且极易出错。这时,我们就可以请出…

TypeORM在Node.js中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 TypeORM在Node.js中的应用 TypeORM在Node.js中的应用 TypeORM在Node.js中的应用 引言 TypeORM 概述 定义与特点 发展历程 TypeO…

干货分享之Python爬虫与代理

嗨伙伴们,今天是干货分享哦,可千万不要错过。今天小蝌蚪教大家使用phthon时学会巧妙借用代理ip来更好地完成任务。 让我们先了解一下为什么说咱们要用爬虫代理ip呢,那是因为很多网站为了防止有人过度爬取数据,对自身资源造成损害…

腾讯云双11最强攻略:如何选购优惠产品,薅最划算的羊毛

目录 一、首选优惠产品 二、可参与拼团的产品:超值组合优惠 三、不推荐购买的产品 四、注意事项与优惠最大化技巧 总结 腾讯云的双11活动力度空前,适合个人开发者、中小企业甚至是大型公司。这份攻略将帮你了解该购买哪些产品,不该购买哪…

labview实现功能性全局变量

在日常的项目中,笔者最长使用的就是全局变量,这样用起来不仅省心省力,而且传值也很方便,没有什么阻碍,想要传什么数据一根线拉过去就可以了。后面才知道如果一直使用全局变量会导致读写卡死的状态,而且还有…

软件工程笔记二—— 软件生存期模型

目录 瀑布模型 瀑布模型的特点 阶段间具有顺序性和依赖性。 推迟实现的观点 质量保证的观点 瀑布模型的优点 瀑布模型的缺点 快速原型模型 快速原型模型的优点 快速原型模型的缺点 增量模型 增量模型的优点 增量构件开发 螺旋模型 完整的螺旋模型(顺…

C++ —— 哈希详解 - 开散列与闭散列

目录 1. 哈希的概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 哈希函数 1.4.1 除法散列法/除留余数法 1.4.2 乘法散列法 1.4.3 全域散列法 1.5 处理哈希冲突 1.5.1 开放定址法(闭散列) 1. 线性探测(挨着查找) 2.…

微波无源器件 OMT1 一种用于倍频程接收机前端的十字转门四脊正交模耦合器(24-51GHz)

摘要: 我们报道了一种用于天文学射电望远镜的毫米波波长接收机的一种十字转门四脊OMT的设计,制造和实测结果。此四脊OMT被直接兼容到一个四脊馈电喇叭来实现可以拓展矩形波导单模带宽的双极化低噪声接收机。使用了24-51GHz的带宽,OMT证实了0.…

如何在 WordPress 中轻松强制所有用户退出登录

作为一名长期管理 WordPress 网站的站长,我深知维护网站安全性的重要性。尤其是在面对会员网站或付费内容平台时,确保所有用户的登录状态是最新的,是维持网站正常运营的关键之一。今天,我就分享一下如何通过简单的步骤&#xff0c…

RT-DETR融合[ECCV2024]自调制特征聚合SMFA模块及相关改进思路

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《SMFANet: A Lightweight Self-Modulation Feature Aggregation Network for Efficient Image Super-Resolution》 一、 模块介绍 论文链接:https://link.springer.…

WebAPI性能监控-MiniProfiler与Swagger集成

Net8_WebAPI性能监控-MiniProfiler与Swagger集成 要在.NET Core项目中集成MiniProfiler和Swagger,可以按照以下步骤操作: 安装NuGet包: 安装MiniProfiler.AspNetCore.Mvc包以集成MiniProfiler。安装MiniProfiler.EntityFrameworkCore包以监…

第十五章 Spring之假如让你来写AOP——Joinpoint(连接点)篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

喜讯 | 科东软件荣获广东省工业软件科学技术进步奖一等奖

工业软件是制造业数字化、智能化转型升级的核心支撑,贯穿于工业生产的全过程,包括研发设计、测试,智能装备与操作系统嵌入式,系统与平台,算法、模型与工具等类型。通过开展工业软件科学技术奖评选活动,激励…

SystemVerilog学习笔记(二):数组

数组是元素的集合,所有元素都具有相同的类型,并使用其名称和一个或多个索引进行访问。 Verilog 2001 要求数组的下限和上限必须是数组声明的一部分。 System Verilog 引入了紧凑数组声明样式,只需给出数组大小以及数组名称声明就足够了。 下…

批量从Excel某一列中找到符合要求的值并提取其对应数据

本文介绍在Excel中,从某一列数据中找到与已知数据对应的字段,并提取这个字段对应数值的方法。 首先,来明确一下我们的需求。现在已知一个Excel数据,假设其中W列包含了上海市全部社区的名称,而其后的Y列则是这些社区对应…

握手协议是如何在SSL VPN中发挥作用的?

SSL握手协议:客户端和服务器通过握手协议建立一个会话。会话包含一组参数,主要有会话ID、对方的证书、加密算法列表(包括密钥交换算法、数据加密算法和MAC算法)、压缩算法以及主密钥。SSL会话可以被多个连接共享,以减少…

数字化转型:基于价值流的业务架构战略解析

在当前数字化浪潮下,企业纷纷转向数字化转型,以适应市场需求的快速变化和技术革新。数字化转型不仅仅是技术层面的变革,更是对企业业务模式、文化以及价值创造方式的全面重新思考和重塑。《价值流(Value Streams)》为企…

Mac终端字体高亮、提示插件

一、安装配置“oh my zsh” 1.1 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可,安装完成查看版本 brew -v 1.2 安装zsh brew install zsh 安装完成后查看版本 zsh --version 1.3 …

什么是CRM系统?

越来越多的企业意识到:如何有效管理与客户的关系、提升客户满意度,并通过这些提升推动销售增长,已经成为许多公司亟待解决的问题。为此,客户关系管理(Customer Relationship Management,简称CRM&#xff09…