当前位置: 首页 > news >正文

虚幻5中Lumen提供哪些功能以及如何工作的

虚幻引擎 5 中的 Lumen 是一个完全动态的全局照明和反射系统。它可以在虚幻引擎 5 中使用,因此创作者无需自行设置。它是为下一代控制台和建筑可视化等高端可视化而设计的。那么它提供了哪些功能以及如何工作?

全局照明

当光离开光源时,它会照亮光可以到达的所有表面。这在计算机图形学中称为直接照明。在现实生活中,光并不止于此,它会从表面反射,呈现出相应的颜色,并照亮其他表面。从粗糙表面向各个方向反射的光称为漫反射间接照明或全局照明。从光滑表面镜面反射的光称为反射。最终,光线到达眼睛或相机形成图像。

过去,游戏的全局照明必须离线计算,因为计算量太大而无法实时计算。该离线过程称为光照贴图烘焙。在虚幻引擎中,光照贴图使用CPU LightmassGPU Lightmass进行烘焙。静态光照贴图提供高质量的光照,但需要较长的构建时间。它们限制了游戏环境。改变间接照明(例如移动壁挂式电视)会导致照明不正确,如下两张图所示:

 

传统上,具有动态场景的游戏依赖于基于辐照度探头的照明和环境光遮挡等技术来近似全局照明。高质量的实时全局照明一直难以实现。

Lumen 实时模拟场景周围的光线反射,通过自动更新间接照明来改变游戏世界。这意味着玩家可以破坏部分关卡、更改一天中的时间或淹没部分关卡,并且照明将相应地发生实际变化。不会再有“照明需要重建”的消息。游戏开发者在虚幻编辑器中进行更改时不再需要重建光照 - Lumen 可以实时处理它。

Lumen 提供高质量的实时全局照明,包括渗色和间接阴影等效果。Lumen 支持无限数量的漫反射光反射,这对于具有明亮表面的场景(例如下面场景中的白色疼痛)非常重要。

Lumen不仅可以解决全局照明问题,还可以处理天空阴影问题。天空阴影导致室内环境比室外环境显得更暗。 

 

Lumen 还可以准确地传播来自灯和窗户等发光材料的光,而无需任何额外的性能成本。然而,在出现噪声伪影之前,发射区域的小度和亮度是有限的。从发射材料传播光本质上比从手动放置的光源传播光更困难。

 

Lumen 还可以解决半透明材质和体积雾的全局照明,但质量较低。在下面的示例中,发射标志网格动态地照亮体积雾。

反射

Lumen 可以动态计算任何粗糙度水平的表面的反射。这取代了对预先计算的反射技术(例如反射捕获、平面反射和屏幕空间反射)的需求。

Lumen 仅仅解决从相机直接可见的动态全局照明是不够的;Lumen 还提供动态 GI 和在反射中看到的阴影天光。这可以实现更真实、更准确的反射。

 

 

Lumen反射可以准确地模拟涂层材料,例如汽车油漆,其外涂层具有镜面反射,同时内层也具有更光滑的反射。这使得涂层材料的反射更加真实。

 

Lumen 中的光线追踪

Lumen 利用光线追踪来计算照明效果。它使用场景的近似版本来实现更快的光线交叉。可以通过切换到流明场景视图模式来查看该场景。此视图显示当 Lumen 跟踪光线以计算全局照明和反射时,场景在 Lumen 中的显示方式。

 

默认情况下,Lumen 使用网格距离场,这是一种软件光线追踪技术。这是因为它不需要支持硬件光线追踪的显卡。距离场以允许光线快速相交的方式表示网格表面。

 

 

Lumen 中的软件光线追踪还使用全局距离场,将所有网格合并到一个距离场中。即使有许多重叠的网格,这也能提供非常快速的光线交叉——这是使用大量详细的 Megascans 资源时的常见情况。Epic在 Nanite 之地和远古之谷技术演示中仅使用全局距离场演示了 Lumen,因为这些场景中存在大量网格重叠。

表面缓存视图

当光线照射到表面时,Lumen 必须评估材料和入射光,这是昂贵且低效的。多条光线可能会击中同一点,并且材质可能有许多纹理查找。为了优化这一点,Lumen 将表面信息缓存在其默认启用的Surface Cache中。

表面缓存通过选择捕捉每个网格的方向来填充,以便覆盖所有表面。当玩家移动时,Lumen 会将附近的网格重新捕获到表面缓存图集中。纳米几何系统有助于加速这些渲染,尽管 Lumen 不需要它。然后,表面被照亮,包括多重反射全局照明和天空照明,这将在反射中看到。然后,表面缓存照明就可以加速全局照明和反射等功能。

Surface Cache 是 Lumen 中的一项关键优化,但也对内容有影响。只能支持具有简单外部的网格 - 墙壁、地板和天花板应该是单独的网格。将带有家具的整个房间作为单个网格导入预计不会与 Lumen 配合良好。Lumen 需要单独的网格来有效地缓存表面信息。

 

Surface Cache View 中的粉色区域缺乏全局照明覆盖。它们在反射中会显示为黑色,并导致与视图相关的照明错误,因为只有流明屏幕迹线在那里处于活动状态。

 

最终聚集和去噪

光线追踪是一项要求很高的操作,因此我们无法追踪很多光线。同时,屏幕上的每个像素都需要全局照明,其中考虑来自每个表面的光。我们无法追踪所有方向的光线,因此我们必须追踪一小部分。如果我们错过了重要的光线方向,它将显示为噪声,因此我们必须策略性地确定跟踪哪些方向并尽可能地重复使用跟踪。

Lumen 使用基于辐射缓存的高级最终聚集算法来实现漫反射全局照明。Lumen 的最终聚集使用屏幕空间辐射率缓存来大大减少主屏幕的全局照明计算。缩小尺寸的间接照明与全分辨率材质数据集成,以创建全分辨率着色。

入射光在辐射缓存内进行过滤,这大大减少了噪声并重复利用了附近像素之间的少量光线轨迹。这与普通的屏幕空间降噪器不同,因为我们仍在下采样的辐射缓存空间中工作,这要高效得多。

 

Lumen 仔细地确定追踪光线的方向。它检查前一帧中具有明亮照明的方向,这种技术称为传入照明的重要性采样。前一帧的光照用于引导当前帧中的光线追踪位置,从而获得与追踪四倍光线相同的质量,同时运行速度更快。在下面的场景中,使用重要性采样选择白色光线。

 

最后,Lumen 将附近的照明与远处的照明分开,并为远处的照明追踪更多的光线,以通过一种称为世界空间辐射缓存的技术来减少噪音。当仅通过通过小窗户射入的天空光来照亮室内房间时,这一点尤其有价值,并且对于室内环境中的 Lumen 质量至关重要。

 

对于粗糙表面上的反射,Lumen 重复使用屏幕空间辐射缓存,无需额外费用。这使得 Lumen 能够在汽车油漆等光泽涂层材料上提供第二层反射,而无需执行两次单独的计算,这会使成本加倍。

所有这些采样和降噪技术对于 Lumen 的高质量和高效率至关重要。虽然 Lumen 不是为直接照明而创建的,但由于最终聚集的保真度,有时可以使用发射几何体完全照亮场景。在《黑客帝国:觉醒:虚幻引擎 5体验》中,实验性夜间模式仅利用流明全局照明和反射来传播来自数百万个发射窗网格的光线;艺术家没有添加任何光源。

 

性能和质量

Lumen 主要依靠虚幻引擎 5 的时间超分辨率算法进行时间上采样来实现 4K 输出。与以明显较低的质量设置在 4K 下本地运行 Lumen 相比,这可提供最佳的最终图像质量。

当引擎使用全局照明和反射的高可扩展级别时,流明可以在下一代控制台上达到 60 FPS,尽管这些设置的质量仍需要改进。

在其他方面,Lumen 可以通过以下方式提高质量:

  • 提高后处理体积设置中的最终聚集质量利用硬件光线追踪当光线照射到表面时利用命中照明来获得更高的质量,而不是表面缓存

随着设置的增加,Lumen 可以为高端建筑可视化提供高质量的实时全局照明和反射。

这就是关于虚幻引擎 5 中 Lumen 的全部内容。希望您喜欢这篇文章并掌握其功能和内部工作原理。

想要高效运行虚幻引擎5,可以试试赞奇云工作站

但是如果想要体验一下Lumen的强大,那么本地电脑算力要求可不低哦,在实际运行ue会遇到电脑硬件配置不足带不动软件,前期硬件投入过大,还会遇到项目文件资产过大,项目耗时久,本地资源无法释放的情况等,建议可以试试赞奇云工作站,云端制作快人一步。

赞奇云工作站可以为UNREAL 用户提供云端制作输出方案,提高工作效率。用户在全国各地通过云工作站直接连接服务器,共享一套资产, 可以直接在云工作站上制作 / 修改工程文件,减少数据传输成本。

 

 

 

相关文章:

虚幻5中Lumen提供哪些功能以及如何工作的

虚幻引擎 5 中的 Lumen 是一个完全动态的全局照明和反射系统。它可以在虚幻引擎 5 中使用,因此创作者无需自行设置。它是为下一代控制台和建筑可视化等高端可视化而设计的。那么它提供了哪些功能以及如何工作? 全局照明 当光离开光源时,它会…...

Linux C 语言 mosquitto 方式 MQTT 发布消息

1 说明 采用 mosquitto 库,实现对主题发布消息。 其中服务器有做限制,需要对应的 cilent id ,cafile 、certfile 、keyfile 等配置 2 开发环境 采用ubuntu 直接编译调试 安装mosquitto 库 sudo apt install libmosquitto-dev sudo apt-ge…...

利用NtDuplicateObject进行Dump

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。(本文仅用于交流学习) 这是国外老哥2020年提出的一种蛮有意思的思路。 我们先来看看大致的思路是…...

【快应用】list组件如何区分滑动的方向?

【关键词】 list组件、滑动方向、scroll 【问题背景】 有cp反馈list这个组件在使用的时候,不知道如何区分它是上滑还是下滑。 【问题分析】 list组件除了通用事件之外,还提供了scroll、scrollbottom、scrolltop、scrollend、scrolltouchup事件&#x…...

【深入了解pytorch】PyTorch扩展:如何使用PyTorch的扩展功能

【深入了解pytorch】PyTorch扩展:如何使用PyTorch的扩展功能 PyTorch扩展:展示如何使用PyTorch的扩展功能1. 自定义损失函数2. 自定义数据加载器3. 自定义优化器总结PyTorch扩展:展示如何使用PyTorch的扩展功能 PyTorch作为一个开源的深度学习框架,在研究和应用领域广受欢…...

Vue3——如何实现页面访问拦截

在现代的Web开发中,页面访问拦截是一个非常常见的需求。通过拦截页面访问,我们可以控制用户在访问特定页面之前需要满足的条件,比如登录状态、权限等。Vue是一个非常流行的JavaScript框架,它提供了许多强大的工具和功能&#xff0…...

nginx配置gzip

在 Nginx 中启用 Gzip 压缩可以大幅减少传输内容的大小,从而加快网页加载速度。 打开 Nginx 的配置文件,通常是 /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/default.conf。找到 http 配置块,在其中添加以下代码来开启 Gzip 压缩&#xff…...

ExtJS教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Ext JS是一个流行的JavaScript框架,它为使用跨浏览器功能构建Web应用程序提供了丰富的UI。 Ext JS基本上用于创建桌面应用程序它支持所有现代浏览器,如IE6 ,FF,Chrome,safari 6 等。Ext JS基于MVC / MVVM架构…...

【el-upload】批量上传图片时在before-upload中添加弹窗判断时的踩坑记录

一、初始代码 1. 初始使用组件代码片段 <!-- 上传 --> <DialogUploadFile ref"uploadFile" success"refresh" />// 上传 const uploadHandle () > {if (selections.value.length ! 1) {onceMessage.warning(请选择一条数据操作)return}u…...

【Java基础】- JVM之Dump文件详解

Java基础 - JVM之Dump文件详解 文章目录 Java基础 - JVM之Dump文件详解一、什么是Dump三、为什么需要Dump分析思路 四、Dump记录哪些内容4.1 Java dump 文件的格式和内容段格式行格式 4.2 常用分类heap dump和thread dumpheap dumpthread dump 五、如何生产Dump文件5.1 获取hea…...

基于Vue+wangeditor实现富文本编辑

目录 前言分析实现具体解决的问题有具体代码实现如下效果图总结前言 一个网站需要富文本编辑器功能的原因有很多,以下是一些常见的原因: 方便用户编辑内容:富文本编辑器提供了类似于Office Word的编辑功能,使得那些不太懂HTML的用户也能够方便地编辑网站内容。提高用户体验…...

深入理解 Spring 中的 @RequestBody 和 @ResponseBody 注解及其区别

引言 在现代的 Web 开发中&#xff0c;处理 HTTP 请求和响应是不可或缺的任务。Spring Framework 提供了丰富的功能来简化这些任务&#xff0c;并使开发人员能够更专注于业务逻辑。在本文中&#xff0c;我们将深入探讨 Spring 中的 RequestBody 和 ResponseBody 注解&#xff0…...

【论文阅读】EULER:通过可扩展时间链接预测检测网络横向移动(NDSS-2022)

作者&#xff1a;乔治华盛顿大学-Isaiah J. King、H. Howie Huang 引用&#xff1a;King I J, Huang H H. Euler: Detecting Network Lateral Movement via Scalable Temporal Graph Link Prediction [C]. Proceedings 2022 Network and Distributed System Security Symposium…...

手动创建一个DOCKER镜像

1. 我们先使用C语言写一个hello-world程序 vim hello.c # include <stdio.h>int main() {print("hello docker\n"); } 2. 将hello.c文件编译成二进制文件, 需要安装工具 yum install gcc yum install glibc-static 开始编译 gcc -static hello.c -o hello 编译…...

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--搭建Vue 前端工程[一]

文章目录 SSM--搭建Vue 前端工程--项目基础界面实现功能01-搭建Vue 前端工程需求分析/图解代码实现搭建Vue 前端工程下载node.js LTS 并安装: node.js 的npm创建Vue 项目使用idea 打开ssm_vue 项目, 并配置项目启动 Vue3 项目目录结构梳理Vue3 项目结构介绍 配置Vue 服务端口El…...

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…...

Tailwind css优于Bootstrap 7个原因

在某些情况下&#xff0c;Tailwind css 比 Bootstrap 更好&#xff0c;因为它是一个低级 CSS 框架&#xff0c;可让您根据需要构建自己的自定义组件。如果使用得当&#xff0c;它非常注重性能&#xff0c;可以显着减少 CSS 负载并确保更快的渲染。如果 Web 性能和自定义是您的首…...

IDEA简单拷贝一份新项目记录

IDEA简单拷贝项目记录 拷贝后改项目名&#xff0c;然后iml 配置文件改项目名&#xff0c;然后 .idea 中的compiler.xml 里面的name标签改项目名。 就可以了...

华为OD真题--字符串加密

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; "给你一串未加密的字符串str&#xff0c;通过对字符串的每一个字母进行改变来实现加密&#xf…...

UML-状态图

目录 状态图 状态图的图符 状态机 状态 ​转换 电话机状态图 活动图和状态图区别&#xff1a; 状态图 状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为&#xff0c;显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常我们创建一个UML状态…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...