全局光照介绍

现实世界光处于线性空间,光照效果是可以叠加的,最终的光照结果 = 直接光照 + 间接光照,结果也被称为全局光照(Global illumination)。与之对比的是局部光照——仅考虑直接光照。那么自然在目前线性空间的渲染技术当中,同样符合光照结果 = 直接光照(direct light) + 间接光照(indirect light)。

  • 直接光:光源直接照射到物体上,后被反射进眼睛,来自被指定的光源。
  • 间接光:光经过多次弹射(至少大于等于两次)后进入眼睛,来自被着色位置正半球的所有可能方向。

全局光照十分重要,但也比较复杂,在之前的Blinn-Phong模型中有个Ambient light光照(物体自发光),相当于给场景中的每个像素加上了一个相同的间接光照,但是实际上是不合理的,因为如下图中阴影部分面积的光照强度都是不同的。

1.依托于硬件特性,实现全局光照的思路有两种。

  • 光线追踪
  • 光栅化

使用光线追踪思路来渲染,便可以相当完美地处理全局效果,不仅仅是全局的光照着色部分,更能轻而易举地解决所有可能光照的阴影问题。但问题出在光追上:硬件要求高,代价昂贵,虽然实时光追硬件自2018年来已经问世良久,但光追依旧主要用于离线渲染。面对实时渲染尤其是游戏那至少30FPS(Frames per Second)的要求,光追还是望而却步。

2.在引擎当中,我们分为三个部分处理:光源直接光,光源间接光,环境光。

  • 光源直接光:光从所设光源发出经历一次弹射后进入眼睛。
  • 光源间接光:光从所设置光源发出经过多次(大于等于两次)弹射进入眼睛。
  • 环境光:通常由天空盒构成,更简单的话设置一个系数。(特别说明,这是一种不得已采取的模拟方案,现实环境中仅存在上述光源直接光和光源间接光,但我们无法模拟出地球现实如此复杂的物理环境,加入环境光近似模拟,参考IBL)

在实时渲染中,所说的解决实时光照,其实就是解决一次或多次反射后的间接光照。人们常追求简单且快速的方法解决一次反射间接光照的问题。

在之前的games101中有讲过 ,p点的间接光照:光源照向Q点,Q点接收光照后充当光源,再照向P点,即一切被直接光照(primary light source)照到的物体会充当光源(次级光源secondary light source)


直接光照和全局光照实例

在下面的场景中,用小太阳代替可以直接光照的点(图中只是示例的几个点),不能直接光照的将展示成纯黑色的场景

将图中的小太阳将当做次级光源来照向场景中的其他物体,就可以得到直接光照+一次间接光照后的场景(全局光照)


RSM-Reflective Shadow Maps

需要解决的问题

如果我们需要解决任一点p的间接光照后得到的结果是什么,那么我们应该先知道些什么?

(1)哪些是次级光源(哪些物体的位置会被直接光照照到)。可通过shadow map

(2)把每一个次级光源的贡献算到点p上去,那么每一个次级光源的贡献是多少?算出每一个次级光源的贡献后再求和就可以得到点p的间接光照的计算。

由于需要从每一个次级光源照向点p,所以我们的观察方向是从点p来观察这些次级光源,而不是从camera来观察这些光源的。所以对于点p来说,出射方向我们不知道,所以不能算出它的shading。所以这里我们假设每一个次级光源都是漫反射(不依赖于我们观察的方向),  出射的辐射方向都是均匀的。

light覆盖的立体角上的积分,可以转换为light区域上的积分。

由于考虑到实时性,不可能在每一个次级光源都做一次shadow map,所以直接不考虑p点对于次级光源来说是否可见。

并不是所有的像素在RSM中都是有贡献的,主要由三点决定:可见度,方向,距离。

图中并不是所有的点都对x点有贡献。

  • 方向上:比如点x-1在shadow map上记录的是桌面上的一点 ,但是由于RSM不考虑可见性所以记录的是x-1点,桌面上的点与x点法线夹角大于90度,所以x-1应该对x点是没有贡献的。
  • 距离上:由于光照强度与距离的平方成反比,所以距离对光照的影响很大,但是在世界坐标下两点的距离不好找,所以直接将shading point投影到shadow map上去,直接在shadow map上找周围一圈的点(在shadow map离得比较近或者深度比较近就当做在世界坐标系上比较近)。即便如此也要很大的范围遍历,所以为了提高速度,可以在shadow map上采样一些点来提高速度,具体的采样方法可以自行考虑,比如说距离点越近采样率越高,但贡献小一些,距离远一些采样稀疏一些但贡献大一些等等。


补充

在使用RSM中通常要记录深度、世界坐标系、法线、通量等信息

RSM方法通常使用在游戏中的手电筒上

参考视频​​​​​​​

实时全局光照RSM-Reflective Shadow Maps(RSM)相关推荐

  1. 实时全局光照(Real-time Global Illumination)与Reflective Shadow Maps(RSM)

    文章目录 1 概述 1.1 什么是全局光照(GI)? 1.2 光照模型处理间接光照的方法 1.3 实时全局光照的思想 2 GI的主要问题 3 方法一:Reflective Shadow Maps(RS ...

  2. 全局光照算法:reflective shadow maps

    1. 技术理解 RSM的全称是reflective shadow maps,受到Instant Radiosity这个离线技术的启发,其思想和ShadowMap的思想近似.在正式介绍和了解这个技术之前 ...

  3. Lumen为《堡垒之夜:大逃杀》第四章带来实时全局光照

    Lumen为<堡垒之夜:大逃杀>第四章带来实时全局光照 - Unreal Engine 图像部门工程研究员Daniel Wright和图像部门技术总监Krzysztof Narkowicz ...

  4. 王世安计算机仿真工作室,运用实时全局光照打造灯光模拟仿真软件

    运用实时全局光照打造灯光模拟仿真软件 查雁南(广州工程技术职业学院王世安计算机仿真工作室,广东广州 510075)[摘要]摘要:VR开发引擎借助于VR在娱乐行业的迅猛发展变得更加高端和智能化.新的VR ...

  5. 使用预计算实时全局光照优化照明-教程目录

    本文地址:https://blog.csdn.net/t163361/article/details/123858265 最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边 ...

  6. Godot 4.0中的基于有向距离场SDF(Signed Distance Field)的实时全局光照技术

    原文地址 Godot官网 <Godot 4.0 gets SDF based real-time global illumination> 作者 Juan Linietsky 6月28日 ...

  7. 使用预计算实时全局光照优化照明-微调光照贴图参数

    本文地址:https://blog.csdn.net/t163361/article/details/124107784 翻译说明: 教程翻译主要用谷歌翻译后,对特别不通顺的地方进行了微调.同时针对一 ...

  8. Unity官方图形教程 学习笔记(二) -- Precomputed Realtime GI(实时全局光照)

    原文链接:https://unity3d.com/cn/learn/tutorials/s/graphics 1 介绍 当使用Baked GI的时候,会在预计算阶段,离线创建一张lightmap纹理贴 ...

  9. 实时全局光照Screen Space Ambient Occlusion(SSAO)

    屏幕空间 可以拿到的所有信息只能从屏幕中所看到的获取,即在做全局光照之前能在屏幕上看到的->直接光照. 换句话说,对现有的渲染进行后期处理. 环境光遮蔽 为什么要做环境遮蔽? 实施成本低 增加了 ...

最新文章

  1. 磁盘管理 ——RAID1+0卷+LVM
  2. php标签嵌入规范,HTML标签嵌套的详细规则
  3. 平板电脑连接投影仪_交互式触控幼教白板如何与平板进行连接-微幼科技
  4. C++设计模式-工厂模式
  5. java ltp4j_43、哈工大NLP自然语言处理,LTP4j的测试+还是测试
  6. php查询mysql数据库输出到前台_PHP读取数据库表显示到前台
  7. 分寸:切记别把话说得太死 — 《别输在不会表达上》
  8. 拓端tecdat|python对网络图networkx进行社区检测和彩色绘图
  9. WPF基础(八)bitmapImage.EndInit()引发异常 未找到适用于完成此操作的图像处理组件:可能是收发图片格式不一致导致的。
  10. 电视盒子 android tv6,【亲测】S905L/S905L-B安卓TV6.0通刷固件
  11. 微型计算机基础知识答案,计算机基础知识授课试题及答案
  12. STM32----PWM脉宽调制信号的输出
  13. springboot+mybatis打包时,单元测试类报错
  14. mac上使用qt,进行输入法的开发
  15. CGLIB介绍与原理
  16. kube-scheduler源码分析(一)之 NewSchedulerCommand
  17. UI 设计的整个工作流程是怎样的?
  18. linux面板切换快捷键,Fedora 25 Gnome常用快捷键、快捷操作
  19. android web一条龙,一条龙奇迹私服WEB系统后门及bug
  20. Unity基础测试(1)-模型

热门文章

  1. 将ipad作为电脑拓展屏或分屏的简单方法
  2. 初识 jquery.simulate.js 模拟键盘事件
  3. 线性代数学习笔记——第七十三讲——实对称矩阵的特征值与特征向量
  4. 递归求 n 阶勒让德多项式
  5. 二进制文件和文本文件
  6. VM安装Ubuntu 16.04
  7. 数学符号 参考手册大全
  8. E-mail Marketing 的特点及其利弊
  9. QT使用串口与RS485设备通讯
  10. Unity3D脚本手册