简要归纳UE5 Lumen全局光照原理

文章目录

  • 一、Jim kajiya老爷子的渲染方程:
  • 二、工程上的实时全局光照技术:
  • 三、Lumen的解决办法:
    • 1、用距离场 Distance Field(SDF)判断光线和三角面相交:
    • 2.表面缓存(Surface Cache)
  • 四、Lumen工程上的具体实现,会根据物体的距离采用不同的加速方案:

一、Jim kajiya老爷子的渲染方程:

请添加图片描述
求全局光照就是求解渲染方程,我们将两边都有未知数的渲染方程变换成离散形式:
请添加图片描述
更形象的描述这个离散的渲染方程:
请添加图片描述
要给每个三角形着色就得先判断光线有没有和它相交,以下是求光线和三角形相交的次数的计算,5次反弹已经是天文数字,无限次反弹目前的GPU根本做不到实时:
请添加图片描述

二、工程上的实时全局光照技术:

在这里插入图片描述
他们实现各异,但本质都是逼近渲染方程:L=E+KE+K²E 但实际上的实现间接光都只有一次反弹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Lumen创新性的采用直接光和间接光分开求取:用距离场求得直接光,表面缓存求间接光。
在这里插入图片描述

三、Lumen的解决办法:

1、用距离场 Distance Field(SDF)判断光线和三角面相交:

在这里插入图片描述
距离场Distance Field用一个个点阵确定离它最近三角面的距离。

怎么用距离场判断光线是否和三角面相交呢?
在这里插入图片描述
离光源最近的点是3,往前步进3一定不会和任何三角面相交。
在这里插入图片描述
在这里插入图片描述
再从3判断离自己最近的三角面是1,继续往前步进1,也不会有任何三角面相交。
在这里插入图片描述
一直步进到新的点离三角形的距离小于0.01,那么说明光线和这个三角面相交了。
在这里插入图片描述
如果这个距离阈值越来越大,那么就可以判断这条光线没有和任何三角形相交,可以不用计算着色了。

距离场是提前算好的离线数据,所以三角面求交变得很快,当然如果物体移动了也要重新计算距离场:
在这里插入图片描述
但即使重新计算距离场也比传统的和所有三角面判断求交更快。

2.表面缓存(Surface Cache)

距离场(SDF)有个致命的问题就是只能判断相交,无法获取材质信息,所以无法给三角面着色。那么UE5就引入了表面缓存(Surface Cache):
在这里插入图片描述
不包含材质信息,无法计算BRDF(求光线怎么反弹)。

这里我们需要引入一个概念辐射度算法:
在这里插入图片描述
将场景离散成面元组成,那么一个面元向外辐射的能量等于其他面元辐射给它的能量之和。
在这里插入图片描述

在这里插入图片描述
面元细分的越多,间接光的反弹次数就越多,成像也就越逼真。

接下来就是怎么计算B1面元的对外辐射呢?B2 B3 B4都是未知数,那就得用Lumen中最重要的实时光照基础:复用reuse

复用reuse:即用上一帧接收的光照做为本帧的向外辐射的能量(光照)。这样就可以求得B1
在这里插入图片描述
所谓的表面缓存(Surface Cache)就是两帧画面的光照中转站:
在这里插入图片描述
在这里插入图片描述
Lumen巧妙的利用了第0帧面元的直接光是已知的特性,对面元单独求解,规避了传统辐射度算法需要联立方程组求解未知数的难度:
在这里插入图片描述
这样就可以近似实现无限次反弹的计算。

四、Lumen工程上的具体实现,会根据物体的距离采用不同的加速方案:

在这里插入图片描述
Lumen的厉害之处在于,它融合了经典的全局光照思路(光线追踪+辐射度算法),以及一系列巧妙的工程手段,解开了原本无法直接求解的渲染方程。

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

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

相关文章

QTableWidget中cell 和 item区别

1.cell:某行某列中单元格。cell相当于一个容器,如箱子。里面不管有没有东西,cell都在那里。 2.item:item是某行某列单元格中的内容,即cell箱子中所放置的东西,即实实在在的东西。 通过调用 itemClicked()…

第四范式破发,AI大模型之殇?

9月28日,决策类AI独角兽第四范式敲钟挂牌港交所,发行价为55.60港元/股,IPO首日报收58.50港元/股,涨幅5.22%。不过也就日内富贵,在之后的几个交易日里,市值蒸发超20亿港元,截止目前,股…

低压配电系统中浪涌保护器的作用,安装位置和接线方法

低压配电系统是指在变压器低压侧或用户侧的电气装置,主要用于向用户提供安全、可靠和经济的电能。低压配电系统中常见的电气设备有低压配电柜、分支箱、开关箱、插座、照明等。这些设备都需要防止因外部或内部原因产生的过电压对其造成损坏或影响其正常工作。过电压…

el-table 表格里面有tree 层级 进行勾选和反勾选

// 勾选全选反勾选等实现setChecked(data) {for (let i 0; i < data.length; i) {const node data[i];if (node.isCheck) {// 如果当前节点被勾选&#xff0c;将其子节点全部设置为选中状态if(node.children) {for (let j 0; j < node.children.length; j) {const chi…

京东历史价格数据接口,京东商品历史价格接口,京东API接口

京东商品历史价格数据接口采集方法如下&#xff1a; 注册京东开发者账号&#xff0c;并创建应用&#xff0c;获取到应用ID&#xff08;appID&#xff09;、应用密钥&#xff08;appSecret&#xff09;以及访问令牌&#xff08;accessToken&#xff09;。获取接口请求地址。根据…

Linux:redis的基础操作

redis介绍&#xff0c;安装和性能测试 Linux&#xff1a;redis数据库源码包安装-CSDN博客https://blog.csdn.net/w14768855/article/details/133752744?spm1001.2014.3001.5501如果没有了解过redis那么一定要去看看介绍 登录 redis-cli 可以登录到本机127.0.0.1&#xff0c;…

启动Spring Boot项目

介绍启动运行Spring Boot项目打包的jar 1、使用java -jar命令启动项目 java -jar project.jar 执行效果&#xff1a; 使用java -jar 文件名.jar启动项目&#xff0c;项目在前台运行&#xff0c;项目运行的日志将打印在当前控制台上&#xff0c;若退出当前控制台&#xff0c…

【ARM CoreLink 系列 7 -- TZC-400控制器简介】

文章目录 背景介绍1.1 TZC-400 简介1.2 TZC-400 使用示例1.3 TZC-400 interfaces1.3.1 FPID1.3.2 NSAID Regionregion 检查规则 1.4 Features1.5 Register summary1.6 TZC-400和TZPC和TZASC区别 背景介绍 为了确保内存能够正确识别总线的信号控制位&#xff0c;新增一个TrustZ…

【Vue面试题十八】、你知道vue中key的原理吗?说说你对它的理解

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说说你对keep-alive的理…

在Linux中掌握不同的命令,让创建文件变得易如反掌

在Linux中创建一个新文件很简单,但也有一些令人惊讶和灵巧的技术。​在本教程中,学习如何从Linux终端创建文件。​ 先决条件 访问命令行/终端窗口(Ctrl-Alt-F2或Ctrl-Alt-T) 具有sudo权限的用户帐户(对于某些文件/目录是可选的) 从命令行创建新的Linux文件 Linux的设计…

ArmSoM-W3之RK3588安装ffmpeg

1. 简介 FFmpeg 是一个完整的、跨平台的音频和视频录制、转换和流媒体解决方案。既是一款音视频编解码工具&#xff0c;同时也是一组音视频编解码开发套件&#xff0c;作为编解码开发套件&#xff0c;它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg 提供了多种媒体格式…

关于RNNoise、webrtc_ns、三角带通滤波器、对数能量

语音特征参数MFCC提取过程详解 其中讲解了&#xff1a;三角带通滤波器 、计算每个滤波器组输出的对数能量、对数能量、经离散余弦变换&#xff08;DCT&#xff09;得到MFCC系数 推荐阅读某乎这位大佬的全部文章&#xff1a; 下面是几篇出自这位大佬的很好的文章&#xff1a; …