该文章内容主要来自于虚幻5的官方文档[4]。 # 介绍 一开始只觉得Lumen听起来很高大上,以为它除了渲染之外还有一些内容,最后发现是和Nanite搞混了(难绷)。按照文档的介绍,Lumen其实就是UE5新推出的全局光照(GI)和反射系统。最离谱的是,Lumen可以近似反射了无限次的漫反射光照和高光光照,甚至能在复杂环境中达成实时渲染。Lumen是此前各种屏幕空间技术(SSGI)和距离场环境光遮蔽(DFAO)的替代品。P.S. DFAO是虚幻4中所用的环境光遮蔽方法,文档里描述其与SSAO最大的区别是遮蔽在场景空间遮挡物中进行计算,因此出屏丢失数据不会导致瑕疵,至于原理吗,我猜与GAMES202中所讲的距离场阴影类似。

要启用Lumen,需要在Project Settings->Rnedering中启用Dynamic Global Illumination和Reflections这两项(新项目应该是默认启用的)。

特性

全局光照

  • 不限制弹射次数的间接漫反射光照
  • 真实阴影(在光线追踪器中,阴影就不需要用传统方法去做了)
  • 要求实时性的情况下会以较低的分辨率来计算间接光照 ## 天光(Sky Lighting) 天光在UE中负责模拟来自天空或远景的间接光照[1],Skylight计算的光照会填充场景中的阴影部分,增强环境光照。Lumen也会为半透明材质和体积雾计算一个低质量的全局光照。 ## 自发光材质 自发光材质的贡献在Lumen的Final Gather Process中被计算。目前Final Gather还不太理解,留个坑。 ## 反射 Lumen支持各种粗糙度材质反射,包括清漆(clear coat)和不透明材质的glossy反射,打开对应选项后也能渲染出半透明材质在最前面一层surface上的反射。Lumen还支持渲染单层水面的镜面反射。 ### Clear Coat材质 即基础层上覆盖了薄薄的一层透明涂料,比如车漆[2]。Clear coat材质也可以使用Cook-Torrance microfacet BRDF来表示[3]。 ## 双面树叶 允许光线在树叶中的次表面散射,效果出奇的好。下图右边是开启Two-Sided Foliage之后的效果

设置(略)

补充说明

Lumen的更新速度

因为lumen似乎使用的是类似光照探针的技术并将计算压力分摊到多帧上来保证实时性的,所以局部光照条件的变化会快速传播,而全局的光照变化(如禁用阳光)需要一定的时间才能收敛。实测如果在项目中将主要的平行光设置为不可见的话,场景会缓慢变暗。而且如果仔细观察的话,直接光照会立即消失,间接光照则是缓慢黯淡。

Lumen反射

阅读全文 »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate
阅读全文 »

背景

PreZ技术的全称是Pre-depth Pass,从这个名字中大概就能得知该技术的一些要点如2-pass和depth pass。PreZ是为了防止开启Alpha Test时可能出现的渲染顺序错误。假如现在我们开启了Alpha Test并且启用了Early-Z来提高渲染效率,由于在片元着色器运行之前我们并不知道哪些片元会被Alpha Test所剔除,提前进行深度测试很可能会导致错误。

方法

PreZ的思路也很简单,既然将深度测试提前的终极目标就是尽可能地减少渲染的开销,那能不能在保持Alpha Test开启的情况下只渲染最低限度的信息?既然Alpha Test会导致深度信息错误,那不如直接把depth buffer取出来单独渲染,得到正确的深度信息后再进行更复杂的光照计算。这样我们就构想出了一个两趟的算法:

  1. Pass 1:保持Alpha Test开启,Z-Write开启,只渲染深度图

  2. Pass 2:关闭Z-Write,将深度测试的条件设置为EQUAL,运行片元着色

这样因为Pass 1中已经渲染了考虑discard后正确的深度图,在Pass 2中关闭Z-Write后,由于根本不会改变深度,GPU便可以对所有物体开启Early-Z了,大大减少了Overdraw。

阅读全文 »
0%