UE5:Lumen 框架

1.Lumen渲染流程框架

 

2.Lumen基本概念

2.1 LumenCard & LumenMeshCards

LumenMeshCards:一组带有方向性的模型简化代理,视模型复杂度不同可能包含6个及以上数量的LumenCard;用来提供光照采样的位置和方向。

2.2 LumenCardPage & LumenCardTile

CardPage:128x128像素,LumenCard排布在上面。

LumenCardTile:8x8像素,用于Tile-Based lighting。

2.3 MeshCardCapture & SurfaceCache

MeshCardCapture :将LumenCard信息转换为SurfaceCache需要内容。

SurfaceCache:四个通道贴图

  • Lumen.CardCaptureAlbedoAtlas:存储 RGB:Albedo,Alpha:Opcity,格式:R8G8B8A8
  • Lumen.CardCaptureNormalAtlas:存储 RG:World Normal XY,格式:R8G8
  • Lumen.CardCaptureEmissiveAtlas:存储 Emissive,格式:R11G11B10
  • Lumen.CardCaptureDepthStencilAtlas:存储 Depth,系统当前 DepthStencil 格式。

2.4 LumenSceneFinalLighting

  • LumenSceneDirectLighting(第一次反弹灯光)
  • LumenSceneIndirectLighting(LumenRadiosity)

LumenSceneFinalLighting = (DirectLighting + IndirectLighting) * Diffuse_Lambert(Albedo) + Emissive;

2.4.1 LumenSceneDirectLighting(第一次反弹灯光)

Irradiance = LightColor * AreaLightFalloffColor * (CombinedAttenuation * NoL * ShadowFactor);

2.4.2 LumenSceneIndirectLighting(LumenRadiosity)

实际上严格来说 Lumen 并不是 Ray Tracing,而是 Ray Casting,因为光线在与 SDF 相交后并没有再次 Bounce,因此最多只能产生一次 Bounce 的 Indirect Lighting,为了弥补这一点,Lumen 使用 Radiosity 来生成 Indirect Lighting。

传统的 Radiosity 方法需要将场景划分为 Patch,而 Lumen 已经拥有了粗粒度的 Global DF 以及粗粒度的 Voxel Lighting,因此可以直接从 Surface Cache 上射出光线,与 Global DF 进行 Ray Tracing 求交,

交点采样上一帧的 Voxel Lighting 后转换为二阶球谐,最后再根据 Normal 计算 Diffuse Transfer 球谐系数,计算出最终的 Indirect Radiance。

这个 Indirect Radiance 也保存在 Radiance Cache 中,称为 Indirect Lighting,并与 Direct Lighting 合并计算得到最终的 Final Lighting,而下一祯的 Voxel Lighting 又来自于这一祯的 Radiance Cache,因此后续所有的 Lumen 光照流程自然具有了间接光照。

具体代码:Lumen:Radiosity-CSDN博客

原理解释:游戏引擎随笔 0x32:UE5 Lumen 源码解析(四)Radiosity 篇 - 知乎

2.5 MeshSDF & GlobalSDF

2.6 LumenScene

与 FScene 做个类比,SDF 相当于 Mesh,Surface Cache 相当于 Material,两者共同构成了低精度粗粒度的场景表达,这就是 Lumen Scene。

因此 Lumen Scene 包含了 DF 描述的场景几何表达以及 Surface Cache 描述的场景材质表达,是一个完整的系统。

Lumen Scene 管理着整个场景的 Mesh DF 更新、Global DF 合并以及 Surface Cache 的更新。

3.Lumen GI渲染(ProbeGather)

先摆放Probe,然后计算RadianceCache,通过TraceScreen(SSGI),TraceMeshSDF,TraceGlobalSDF三种全局光照技术,实现最终GI。

3.1 PlaceProbe

UniformPlacement:每16x16像素摆放一个Probe

AdaptivePlacement:UniformSize/2 循环摆放,默认停止条件是4。(8x8摆放一次,4x4摆放一次)

可视化效果如下:

  • 绿色圆圈内的Probe就是Adaptive产生

3.2 RadianceCache

 具体代码:LumenSceneProbeGather:RadianceCache-CSDN博客

 3.3 Tracing

3.3.1 TraceScreen 技术原理

 

具体代码:LumenScreenProbeGather:TraceScreen-CSDN博客

3.3.2 TraceMeshSDF技术原理

具体代码:LumenScreenProbeGather:TraceMeshSDF-CSDN博客

3.3.3 TraceGlobalSDF技术原理

具体代码:LumenScreenProbeGather:TraceVoxels-CSDN博客

3.4 Integrate & TemporalReprojection

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TrustZone之强制隔离

TrustZone有时被称为一个强制执行的保护系统。请求者表示其访问的安全性,而内存系统决定是否允许该访问。内存系统基于何种方式进行检查呢? 在大多数现代系统中,内存系统的检查是由互连完成的。例如,Arm NIC-400允许系统设计人员为每个连接的完成者指定以下内容: • 安全…

基于开源的JAVA mongodb jdbc 驱动 使用教程

基于开源的JAVA mongodb jdbc 驱动 使用教程介绍 介绍 本文介绍一款开源的基于JAVA的 Mongodb JDBC 驱动使用教程 开源地址 https://gitee.com/bgong/jdbc-mongodb-driver功能价值 与mybaits融合:复用mybatis的功能特性,如:缓存,if动态判断标签等特…

程序员视角体验快速搭建智能客服中心

本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 目录 前言基本概念工作原理浅试体验体验收获最后 前言 Amazon Connect是亚马逊云科技…

原生Html 引入element UI + vue3 表单校验设置

效果&#xff1a; 提交时&#xff0c;检验结果展示 html源码 <!DOCTYPE html> <html> <!--带搜索输入框下拉弹窗 --> <head><meta charset"UTF-8"><!-- import Vue before Element --><script src"../js/vue3.3.8/vu…

IDEA中Terminal配置为bash

简介 我们日常命令行都是使用Linux的bash指令&#xff0c;但是我们的开发基本都是基于Windows上的IDEA进行开发的&#xff0c;对此我们可以通过将IDEA将终端Terminal改为git bash自带的bash.exe解决问题。 配置步骤 安装GIT 这步无需多说了&#xff0c;读者可自行到官网下载…

微信小程序单图上传和多图上传

图片上传主要用到 1、wx.chooseImage(Object object) 从本地相册选择图片或使用相机拍照。 参数 Object object 属性类型默认值必填说明countnumber9否最多可以选择的图片张数sizeTypeArray.<string>[original, compressed]否所选的图片的尺寸sourceTypeArray.<s…

CSS中神奇的filter属性

CSS是Web开发中不可或缺的一部分&#xff0c;它可以帮助开发者在页面上添加各种各样的样式和效果。其中一个比较神奇的CSS属性就是filter&#xff0c;它可以让我们实现各种有趣的图形处理效果。 一、filter属性的基础 filter属性是CSS中用于对元素进行图形效果处理的属性之一…

【Pytorch】学习记录分享3——PyTorch 自动微分与线性回归

【【Pytorch】学习记录分享3——PyTorch 自动微分与线性回归 1. autograd 包&#xff0c;自动微分2. 线性模型回归演示3. GPU进行模型训练 小结&#xff1a;只需要将前向传播设置好&#xff0c;调用反向传播接口&#xff0c;即可实现反向传播的链式求导 1. autograd 包&#x…

WPF仿网易云搭建笔记(6):Style进阶详解

文章目录 专栏和Gitee仓库前言Style简单使用样式字典全局样式局部全局样式全局样式穿透 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 WPF想要批量设置样式属性&#xff0c;一共有3个方法 Style样式Template控件模板DataTemplate数据模板 WPF 零基础…

word四级目录序号不随上级目录序号变化问题解决方法

一、word中的几个元素简介 1、word中的列表 如下图所示&#xff0c;代表word的列表&#xff1a; 2、word中的标题 如下图所示&#xff0c;代表word的标题&#xff1a; 3、word中的编号/序号 如下图所示&#xff0c;代表word的编号/序号&#xff1a; 4、word中的目录 如下图…

【Python】人工智能-机器学习——不调库手撕深度网络分类问题

1. 作业内容描述 1.1 背景 数据集大小150该数据有4个属性&#xff0c;分别如下 Sepal.Length&#xff1a;花萼长度(cm)Sepal.Width&#xff1a;花萼宽度单位(cm)Petal.Length&#xff1a;花瓣长度(cm)Petal.Width&#xff1a;花瓣宽度(cm)category&#xff1a;类别&#xff0…

【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能

文章目录 前言一、搭建PageSpy环境二、接入SDK三、进行远程调试调试控制台网络抓包审查元素 四、延伸 前言 Tauri在Rust圈内成名已久&#xff0c;凭借Rust的可靠性&#xff0c;使用系统原生的Webview构建更小的App 以及开发人员可以灵活的使用各种前端框架而一战成名。 然而&…

软考机考考试第一批经验分享

由于机考的特殊性&#xff0c;考试环境与传统笔试环境有所不同。下面是与考试环境相关的总结&#xff1a; 草稿纸&#xff1a;考场提供足够数量的草稿纸&#xff0c;每位考生都会分发一张白纸作为草稿纸。在草稿纸上需要写上准考证号。如果不够用&#xff0c;可以向监考老师再次…

RISCV中的寄存器操作

控制状态寄存器指令 (csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi)&#xff0c; 使我们可以轻松地访问一些程序性能计数器。对于这些 64 位计数器, 我们一次可以读取 32 位。这些计数器包括了系统时间, 时钟周期以及执行的指令数目。 CSRRW 先读取寄存器的值&#xff1a;tCS…

ES6学习(三):Set和Map容器的使用

Set容器 set的结构类似于数组,但是成员是唯一且不会重复的。 创建的时候需要使用new Set([])的方法 创建Set格式数据 let set1 new Set([])console.log(set1, set1)let set2 new Set([1, 2, 3, 4, 5])console.log(set2, set2) 对比看看Set中唯一 let set3 new Set([1, 1,…

Lists.partition是如何实现懒加载的?

前言&#xff1a; 最近看到一篇文章&#xff0c;里面提及了google的common包下Lists.partition方法为懒加载&#xff0c;只有在遍历时才会真正分区。平时使用时并未感觉到,感觉有点好奇。特此将自己寻找的答案的过程整理记录下来。 源码&#xff1a; public static <T>…

云原生之深入解析K8s中的微服务项目设计与实现

一、微服务项目的设计 ① 微服务设计的思想 一个单片应用程序将被构建、测试并顺利地通过这些环境。事实证明&#xff0c;一旦投资于将生产路径自动化&#xff0c;那么部署更多的应用程序似乎就不再那么可怕了。请记住&#xff0c;CD的目标之一就是让部署变得无聊&#xff0c…

idea中定时+多数据源配置

因项目要求,需要定时从达梦数据库中取数据,并插入或更新到ORACLE数据库中 1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-…

多架构容器镜像构建实战

最近在一个国产化项目中遇到了这样一个场景&#xff0c;在同一个 Kubernetes 集群中的节点是混合架构的&#xff0c;也就是说&#xff0c;其中某些节点的 CPU 架构是 x86 的&#xff0c;而另一些节点是 ARM 的。为了让我们的镜像在这样的环境下运行&#xff0c;一种最简单的做法…

react+datav+echarts实现可视化数据大屏

&#x1f4d3;最近有点闲&#xff0c;就学习了下react&#xff0c;没想到就把react学完了&#xff0c;觉得还不错&#xff0c;就打算出一把reactdatav的简易版可视化数据大屏供大家做个参考。 &#x1f4d3;效果如下 1下载必要的框架 &#x1f4d3; react路由 npm install re…