文章目录

  • 1 概述
    • 1.1 什么是全局光照(GI)?
    • 1.2 光照模型处理间接光照的方法
    • 1.3 实时全局光照的思想
  • 2 GI的主要问题
  • 3 方法一:Reflective Shadow Maps(RSM)
    • 3.1 使用shadow map来寻找能被直接照亮的点
    • 3.2 对直接照亮的patch进行积分计算着色点p的contribution
    • 3.3 RSM的问题:处理每个像素的Visibility 、Orientation、Distance
      • 3.3.1 Acceleration 加速方法
        • 那么如何知道哪些光源比较近?
      • 3.3.2 RSM中需要存储:Depth、world coordinates、normal、flux。
    • 3.4 RSM的优点和缺点

1 概述

1.1 什么是全局光照(GI)?

全局光照 = 直接光照 + 间接光照,GI非常重要,但是很复杂,但如果只有考虑直接光照,很多地方都是黑的,减少了渲染的真实感。

1.2 光照模型处理间接光照的方法

Bling-Phone模型处理间接光照的方法:假设接收各个点的间接光照都是相同的,分解为环境光项。

1.3 实时全局光照的思想

实时渲染中,通常只考虑一次间接光照,把一切被直接光照照亮的物体称为次级光源。

2 GI的主要问题

需要知道什么来计算着色点p的间接光照?

主要有两项:

  1. 哪些surface patches能被直接照亮?
  2. 每一个surface path对着色点p的贡献是多少?

3 方法一:Reflective Shadow Maps(RSM)

在游戏中常常用来做手电筒(flashlights)的效果。

3.1 使用shadow map来寻找能被直接照亮的点

思想:将每一个shadow map上的像素当成次级光源。

问题:需要知道每个像素位置每个出射方向的radiance,但实际上只能知道到相机的方向。

假设:所有的反射物都是diffuse的(不要求点p是diffuse的),因此点p的所有出射方向是相同的。

3.2 对直接照亮的patch进行积分计算着色点p的contribution

L o ( p , ω o ) = ∫ Ω p a t c h L i ( p , ω i ) V ( p , ω i ) f r ( p , ω i , ω o ) cos ⁡ θ i d ω i = ∫ A p a t c h L i ( q → p ) V ( p , ω i ) f r ( p , q → p , ω o ) cos ⁡ θ p cos ⁡ θ q ∥ q − p ∥ 2 d A \begin{aligned} L_o\left(\mathrm{p}, \omega_o\right) &=\int_{\Omega_{\mathrm{patch}}} L_i\left(\mathrm{p}, \omega_i\right) V\left(\mathrm{p}, \omega_i\right) f_r\left(\mathrm{p}, \omega_i, \omega_o\right) \cos \theta_i \mathrm{~d} \omega_i \\ &=\int_{A_{\mathrm{patch}}} L_i(\mathrm{q} \rightarrow \mathrm{p}) V\left(\mathrm{p}, \omega_i\right) f_r\left(\mathrm{p}, \mathrm{q} \rightarrow \mathrm{p}, \omega_o\right) \frac{\cos \theta_p \cos \theta_q}{\|q-p\|^2} \mathrm{~d} A \end{aligned} Lo​(p,ωo​)​=∫Ωpatch​​Li​(p,ωi​)V(p,ωi​)fr​(p,ωi​,ωo​)cosθi​ dωi​=∫Apatch​​Li​(q→p)V(p,ωi​)fr​(p,q→p,ωo​)∥q−p∥2cosθp​cosθq​​ dA​

由于假设平面是漫反射的,所以上式中,

  • f r = ρ π f_r=\frac{\rho}{\pi} fr​=πρ​
  • L i = f r ⋅ Φ d A L_i=f_r·\frac{\Phi}{dA} Li​=fr​⋅dAΦ​
  • 因此上式可以写为 E p ( x , n ) = Φ p max ⁡ { 0 , ⟨ n p ∣ x − x p ⟩ } max ⁡ { 0 , ⟨ n ∣ x p − x ⟩ } ∥ x − x p ∥ 4 E_p(x, n)=\Phi_p \frac{\max \left\{0,\left\langle n_p \mid x-x_p\right\rangle\right\} \max \left\{0,\left\langle n \mid x_p-x\right\rangle\right\}}{\left\|x-x_p\right\|^{4}} Ep​(x,n)=Φp​∥x−xp​∥4max{0,⟨np​∣x−xp​⟩}max{0,⟨n∣xp​−x⟩}​

3.3 RSM的问题:处理每个像素的Visibility 、Orientation、Distance

  • Visibility很难获取,因此干脆就不做处理。
  • Orientation、Distance等占用空间比较大,因此要想办法减少存储量。

3.3.1 Acceleration 加速方法

  • 理论上,所有shadow map中的像素都对p有贡献,但是只要取离得比较近的次级光源就可以了。
  • 或者使用某种采样算法来减少采样点。
那么如何知道哪些光源比较近?


假设shadow map上离得比较近的点在世界坐标上也比较近。

3.3.2 RSM中需要存储:Depth、world coordinates、normal、flux。

3.4 RSM的优点和缺点

优点:容易实现(Shadow Map)。

缺点:

  1. 有多少直接光源就做多少shadow map。
  2. 不能计算反射物到shading point的visibility。
  3. 做了很多大胆的假设:diffuse reflectors, depth as distance.
  4. 需要在采样率和质量之间进行trade off.

实时全局光照(Real-time Global Illumination)与Reflective Shadow Maps(RSM)相关推荐

  1. 全局光照技术解析Global Illumination Explained

    解析全局光照Global Illumination Explained 前言:Global Illumination全局光照技术是实时渲染的必然发展方向.我参考了一些研究成果,琢磨了一下,让更多的人可 ...

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

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

  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. 全局光照算法:reflective shadow maps

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

  7. 实时全局光照RSM-Reflective Shadow Maps(RSM)

    全局光照介绍 现实世界光处于线性空间,光照效果是可以叠加的,最终的光照结果 = 直接光照 + 间接光照,结果也被称为全局光照(Global illumination).与之对比的是局部光照--仅考虑直 ...

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

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

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

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

最新文章

  1. DBA_Oracle基本体系内存和进程结构(概念)
  2. RadioGroup结合RadioButton使用切换Fragment片段
  3. Amazing 2020
  4. SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!
  5. 勤哲linux客户端,Excel在线编辑
  6. php foreach 循环 判断index 小于多少_Go 与 PHP 的语法对比
  7. [Maven]intellij 如何使用mvn clean
  8. java项目-第91期基于ssm的蛋糕商城系统
  9. 【chm】Python提取chm数据
  10. Android Studio 连接手机进行调试
  11. 大学英语综合教程三 Unit 2 课文内容英译中 中英翻译
  12. 高斯投影正反算C语言程序代码,高斯投影正反算c代码
  13. 一个程序员的多年珍藏--收藏
  14. Qt-qrc资源文件-rcc打包-程序调用-ZIP压缩和解压-安装程序制作参考
  15. 基于QT封装的音视频播放时间轴控件
  16. Android 沉浸状态栏
  17. python获取股票历史数据并保存_Python 股票历史分笔数据读取
  18. 【JavaLearn】(22)jQuery介绍、选择器、事件、动画、DOM编程、操作CSS、表单验证
  19. 用Mouse_event()来控制鼠标操作
  20. html获取请求header,获取HTTP header信息

热门文章

  1. Protein Cell:基于R语言的微生物组数据挖掘最佳流程(大众评审截止14号晚6点)...
  2. Web 开发与搜索引擎优化,你应该选择哪一个?
  3. java批量下载图片_Java批量写入文件和下载图片的示例代码
  4. Power BI十大视觉效果,知多少?
  5. 解决setInterval函数传参问题
  6. 提高电子邮件的打开率的策略
  7. 转载hiberinate的懒加载
  8. 马克思主义哲学是否只是“抄袭”和断章取义了别人的思想
  9. 如何开发微信礼品卡-前端
  10. word2vec 和doc2vec