简要归纳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.rhkb.cn/news/156966.html

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

相关文章

《论文阅读:Dataset Condensation with Distribution Matching》

点进去这篇文章的开源地址,才发现这篇文章和DC DSA居然是一个作者,数据浓缩写了三篇论文,第一篇梯度匹配,第二篇数据增强后梯度匹配,第三篇匹配数据分布。DC是匹配浓缩数据和原始数据训练一次后的梯度差,DS…

Apache Shiro 漏洞复现

文章目录 Apache Shiro 漏洞复现1. Apache Shiro 1.2.4 反序列化漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动 1.4 漏洞利用1.5 修复方案 Apache Shiro 漏洞复现 链接地址:Vulhub - Docker-Compose file for vulnerability environment 1. Apache Shi…

MySQL中使用函数会使索引失效?

文章目录 1、前置准备2、ChatGPT的答案3、实践证明SQL1SQL2SQL3SQL4SQL5 4、总结 1、前置准备 首先创建我们要测试的库表 CREATE TABLE lianhe_index (id int(11) NOT NULL AUTO_INCREMENT COMMENT id,name varchar(255) DEFAULT NULL,age int(11) DEFAULT NULL,number int(1…

相似与不同:数字孪生和元宇宙的对比

数字孪生和元宇宙是两个备受瞩目的概念,都在数字领域产生了巨大的影响。它们有一些相似之处,但也存在显著的不同。本文将介绍它们的相同点和不同点,以及它们在不同应用领域的前景。 1. 相同点 虚拟性质: 数字孪生和元宇宙都是虚…

AlphaPose Pytorch 代码详解(一):predict

前言 代码地址:AlphaPose-Pytorch版 本文以图像 1.jpg(854x480)为例对整个预测过程的各个细节进行解读并记录 python demo.py --indir examples/demo --outdir examples/res --save_img1. YOLO 1.1 图像预处理 cv2读取BGR图像 img [480,…

LATR:3D Lane Detection from Monocular Images with Transformer

参考代码:LATR 动机与主要工作: 之前的3D车道线检测算法使用诸如IPM投影、3D anchor加NMS后处理等操作处理车道线检测,但这些操作或多或少会存在一些负面效应。IPM投影对深度估计和相机内外参数精度有要求,anchor的方式需要一些如…

【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

淘宝价格,淘宝商品优惠券数据接口,淘宝商品销量接口,淘宝商品详情数据接口,淘宝API接口

淘宝价格和商品优惠券数据接口是淘宝平台提供的官方数据接口,通过调用接口,可以获取到淘宝商品的价格信息和优惠券数据。 获取淘宝价格和商品优惠券数据接口的步骤如下: 输入淘宝网址登陆淘宝账号密码。点击获取key和secret。调用获取buyer…

android 与 flutter 之间的通信

文章目录 前言集成 flutter 混合开发android 与 flutter 之间的通信总结 一、前言 因为flutter 具有跨平台的属性,既可以在android上跑,也能在ios 上跑,所以为了节约开发的成本,减少人力,势必就会用到它。然而已有的…

04在命令行中使用Maven命令创建Maven版的Web工程,并将工程部署到服务器的步骤

创建Maven版的Web工程 使用命令生成Web工程 使用mvn archetype:generate命令生成Web工程时,需要使用一个专门生成Web工程骨架的archetype(参照官网看到它的用法) -D表示后面要附加命令的参数,字母D和后面的参数是紧挨着的,中间没有任何其它…

Ceph介绍与部署

Ceph介绍与部署 一、存储基础1.1、单机存储设备1.1.1、单机存储的问题 1.2、商业存储解决方案1.3、分布式存储(软件定义的存储 SDS)1.3.1、分布式存储的类型 二、Ceph 简介三、Ceph 优势四、Ceph 架构五、Ceph 核心组件5.1、Pool中数据保存方式支持两种类…

FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心

FlashDuty:一站式告警响应平台,前往此地址免费体验! 自定义字段 FlashDuty 已支持接入大部分常见的告警系统,我们将推送内容中的大部分信息放到了 Lables 进行展示。尽管如此,我们用户还是会有一些扩展或定制性的需求…

数据可视化

pip install matplotlib 一、各种图 #线形图 import numpy as np import pandas as pd df1pd.DataFrame(datanp.random.randn(1000,4),indexpd.date_range(start10/10/2023,periods1000),columnslist(ABCD)) df1.cumsum().plot()#2、条形图 df2pd.DataFrame(datanp.random.ra…

文本编辑器去除PDF水印

用文本编辑器打开pdf,搜索水印的特殊文字,全部替换。 另外一个水印字母间有空格。 替换完后保存。 重新打开pdf:

通常用哪些软件做数据可视化大屏?

数据可视化大屏是一种展示数据的方式,通过使用软件工具可以将数据以图表、地图、仪表盘等形式直观地呈现给用户。以下是常用的数据可视化大屏软件及其特点: 1. Datainside: - 特点:Datainside是一款功能强大且易于使用的数据可视…

绘制X-Bar-S和X-Bar-R图,监测过程,计算CPK过程能力指数

X-Bar-S图和X-Bar-R图是统计质量控制中常用的两种控制图,用于监测过程的稳定性和一致性。它们的主要区别在于如何计算和呈现数据的变化以及所关注的问题类型。 X-Bar-S图(平均值与标准偏差图): X-Bar代表样本均值,S代表…

HttpServletRequest对象与RequestDispatcher对象

一、HttpServletRequest对象 1.介绍 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在…

ODrive移植keil(五)—— 开环控制和电流变换

目录 一、开环控制1.1、控制原理1.2、硬件接线1.3、代码说明1.4、程序演示1.5、程序架构的体现 二、电流变换2.1、理论说明2.2、代码说明 ODrive、VESC和SimpleFOC 教程链接汇总:请点击 一、开环控制 在SimpleFOC系列中有开环控制的教程,SimpleFOC移植S…

《Java极简设计模式》第08章:外观模式(Facade)

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 源码地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

SpringBoot篇之集成Mybatis-plus

目录 前言一、Mybatis-plus介绍1.1 官网 二、代码生成器总结 前言 大家好,我是AK,整理的SpringBoot集成Mybatis-plus以及代码生成器的使用,时间原因简单的整理下,有问题的可以评论区见或私信我。 一、Mybatis-plus介绍 1.1 官网…