Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
参考书籍:《Unity Shader 入门精要》
【《Real-Time Rendering 3rd》 提炼总结】(八) 第九章 · 全局光照:光线追踪、路径追踪与GI技术进化编年史
官方:ReflectionProbes
官方:Global Illumination
官方:High Dynamic Range Rendering
官方:Linear rendering overview
全局光照(Global illumination, GI)
场景的物体的光线投射到物体会反弹(Bounce)光线到别的物体,产生间接光照。
通过设置Bounces值来控制间接光的强度。
预计算实时全局光照(Precomputed Realtime GI)
动态为场景实时更新复杂的光照结果。
实现原理:先计算静态物体间和光源位置的关系,对动态移动的物体,使用光照探针模拟光照环境。
反射探针(Reflection Probes)
在特定位置对场景采样。在有反射效果的物体在探针附近时,会把探针的结果给物体。多个探针时,做插值。
下图白色带微笑的圆圈就是反射探针。
反射探针还可以实现物体互相反射的效果。(如下反射值为2,第一次反射会是全黑色的。)
线性空间(Linear)和 伽马空间(Gamma)
- 线性空间:采集到亮度为0.5,像素就是0.5。符合计算规则(PBS必须在线性空间计算)。
- 伽马空间:采集到亮度为0.22,像素是0.5(0.45的编码伽马γ)。根据人眼光灵敏度,调整像素值,充分利用图像的存储空间。
伽马校正:伽马空间转换到线性空间。Lout = Linγ
sRGB颜色空间标准下,0.45的编码伽马,配合2.2的显示伽马来相互抵消(2.2 × 0.45 ≈ 1)。线性空间下,输入纹理设置为sRGB模式,对纹理采样时就会转换到线性空间。
高动态范围(High Dynamic Range, HDR)
动态范围:最高和最低的亮度值之间的比值。
HDR使用高于8位的精度来记录亮度信息,可表示超过0~1的亮度值,更精确反映真实光照。尽管最后要把信息转回显示设备的LDR,但中间的计算可以得到更真实的效果,即如果亮度超过1,可以使用**色调映射(tonemapping)**来最大限度保留需要的亮度细节。
缺点:需要更大显存空间,渲染会变慢,一些硬件并不支持HDR。使用HDR就无法开启硬件的抗锯齿功能(可以用屏幕后处理弥补)。
Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)相关推荐
- Unity Shader 学习笔记(27)渲染轮廓线(描边)方法、卡通风格渲染、素描风格渲染
Unity Shader 学习笔记(27)渲染轮廓线(描边)方法.卡通风格渲染.素描风格渲染 参考书籍:<Unity Shader 入门精要> 渲染轮廓线(描边) 五种方法: 基于观察角度 ...
- Unity Shader 学习笔记(3)URP渲染管线带阴影PBR-Shader模板(ASE优化版本)
此 Shader 已经不是最新版本,最新版本见本专栏的第四篇文章: Unity Shader 学习笔记(4) 材质面板截图: 功能实现(URP渲染管线下): PBR材质.投射和接收阴影. 代码展示: ...
- 【Unity】Unity Shader学习笔记(二)渲染管线
文章目录 渲染管线(Randering Pipeline) 渲染流程 可编程渲染管线 应用阶段 把数据加载到显存中 设置渲染状态 调用DrawCall 几何阶段.光栅化阶段 渲染管线(Randerin ...
- Unity Shader学习笔记/Urp/水墨风效果
实现简易的水墨风效果大致分为三部分: 1.将原始的rgb贴图转化为灰度图 float4 baseMap = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, IN ...
- 【Unity Shader学习笔记】(五)使用鼠标绘制自由多边形(附完整工程源码)
前言 在前面的文章中,我们已经了解了怎样使用Unity Shader来绘制简单的点和线,本文将延续上次的话题,讲述一下如何在场景中使用Unity Shader绘制自由多边形. 本文所述的程序,支持在地 ...
- Unity Shader学习笔记(5)基于摄像机深度和法线的后处理描边效果
文章目标 : 主要参考书籍为<Unity Shader入门精要>,本文主要注重于整理,方便后续直接调用. 渲染效果图: 主要相关代码: 摄像机脚本文件: using System.Coll ...
- Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板
写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...
- 【Unity Shader学习笔记】实现反射与折射模拟水面、使用grabPass与环境贴图
文章目录 写在前面 一个水波效果 大致组成部分与对应的实现方案 交界线与深度贴图 折射效果与GrabPass 使用Cubemap与法线信息来模拟反射 在正确的地点创建对应的cubemap 通过贴图获取 ...
- Unity Shader 学习笔记(一)关于“表面着色器”切换渲染管线Shader不可用的问题
Shader主流上分为两类: 表面着色器(surface shader):更高级的封装,减少人工工作量,能实现大部分效果,缺点是自定义程度不 高,相对局限: 片段着色器(fragment shader ...
最新文章
- RSA的密钥把JAVA格式转换成C#的格式
- JavaScript实现squareRoot平方根算法(附完整源码)
- Android 一个Activity 里面放置多个 Fragment 实现点击切换的Tab 页面效果
- python 异常处理模块_Python Exceptions 异常处理全过程以及异常模块详细解析
- 软件测试过程中的度量与分析
- 模块无法导入_你真的会用Python模块与工具包吗?
- 怎么用PS替换图片背景色?这个方法你需要知道
- C语言课程设计——电影院订票系统
- 深入理解什么是端口(port)
- 应聘软件测试英文自我介绍,软件测试英文面试自我介绍2篇
- Delphi为什么都不用了?公司CTO不向老板推荐使用Delphi的13 个真实原因
- 中国电信5G技术引言
- 手机在线测试黄疸软件,智能手机APP:可在几分钟内检测出新生儿黄疸
- web前端的css示例
- C. 点和圆 (类与对象)
- Blender软件使用Maps Models Importer插件导入Google地图3d模型(非常简单)
- RabbitMQ学习笔记:集群和网络分区(Network Partitions)
- Vue-Vnode类型
- docx行间距怎么设置_word全文行距怎么设置
- 广州可得 全面亮相第十七届SDS及2022中国国际防伪溯源展
热门文章
- GMA Round 1 YGGDRASIL
- Designing Network Design Spaces
- gnuplot画双纵坐标图
- centos下安装xcrysden出现的问题
- 记录常用的xss攻击代码,便于测试系统安全漏洞
- 地面气象观测数据-A文件转excel方法
- 10年10亿,贝佐斯投了8轮的机器人公司留下的昂贵一课 | 甲子光年
- 如何在Excel中创建动态定义的范围
- java手风琴代码_[Java教程]18款jquery抽屉式手风琴导航特效代码
- [ECCV2018]Generating 3D faces using Convolutional Mesh Autoencoders