欢迎光临散文网 会员登陆 & 注册

Unity学习笔记 Vol.103 Unity 实时光追(七)- Light Cluster结构

2022-07-20 12:06 作者:NXL2  | 我要投稿

记笔记

本节我们来了解一下Ray Tracing Light Cluster这个用于保存灯光信息的结构

我们可以通过HDRP Debug窗口,找到Lighting窗口中的Full Screen Debug Mode,全屏Debug模式,选择LightCluster选项,可视化的查看Light Cluster结构的情况。

不过在那之前,我们首先需要至少在Volume上添加一个Screen Space Reflection重载,或者 Screen Space Global Illumination重载,或者Recursive Rendering重载,或者是Subsurface Scattering重载。


因为这些光追功能用到了Light Cluster,所以只有添加了相应的光追功能的重载,才能让Light Cluster这个重载生效。

Light Cluster不是一个像环境光遮蔽,或者屏幕空间反射一样的光追功能,而是实现光追版本的反射,全局光照,递归式渲染,和次表面散射功能时,需要用到的基础设施。


在计算光追效果时,当光追射线与物体表面相遇,我们需要知道周围空间中存在的灯光,才能将他们用于具体的光追计算。


HDRP会在计算光追效果时,当前相机的位置为中心点,在相机周围,创建一个与坐标轴对齐的网格结构,这个网格结构由多个单元格组成,每个单元格中保存了影响此区的,所有灯光的信息。


我们来看一下,Light Cluster在Volume上的唯一参数,Camera Cluster Range。

这一参数可以控制Light Cluster这个网格结构边缘

离开相机的最远距离,单位为米,我们可以拉远镜头看一下,当增大这个数值时,我们所能看到的画面中,Light Cluster结构的边缘离开我们越来越远,当然在其他我们看不到的方向上,也在发生同样的事情。看到这里,大家可能会问,你跟我说这么多,这个Ligth Cluster的可视化和设置功能,到底是拿来做什么的呢,我现在也没搞清楚呀。

为了回答这个问题呢,我们先在HDRP配置文件上找到Lighting => Lights => Maximum Lights per Cell (Ray Tracing)这一条,这里可以设置Light Cluster,网格的每个单元格中,所能支持的最大灯光数量,这里最多可以设置为24个。也就是说,如果在场景中,一个单元格里包含的最大灯光数量,超过了24个,那么在进行渲染时就有可能会出错。

为了便于演示,当前场景打开了屏幕空间反射效果,这里我们尝试把Maximum Lights per Cell设置为8,可以看到周围三面墙壁都有漏光现象。

我们在Debug窗口,把Full Screen Debug Mode设置为Light Cluster。

可以看到性窗口里的网格都是红色的,这显然是不对的。

回到HDRP配置文件,我们把Maximum Lights Percell设置为20。

HDRP自动退出了Debug模式,这时我们可以看到,两侧墙壁的漏光现象,好了很多。

回到Debug窗口,再次把Fullscreen Debug Mode设置为LightCluster。


这时我们可以看到,所有单元格都变成绿色了,不过在茶几所在的地方,我们也看到了网格结构的边缘,网格结构在那个位置结束了。


关闭Debug Mode,可以观察到在茶几那边的三面墙壁还是有漏光现象


我们可以尝试向前移动,也就是把我们当前的相机向前移动,更靠近茶几的方向,可以看到茶几位置的漏光现象消失了


这是因为Light Cluster的结构是以我们的,相机位置为中心点在他的四周构建的,向前移动以后,就把茶几处的模型包含到了当前的Light Cluster的 结构中。

HDRP有了正确的Light Cluster结构信息,也就能够进行正确的渲染,从而解决漏光问题。

我们观察到,Light Cluster在Volume上的Camera Cluster Range,它的数值是10米,我们可以尝试增大数值到15米,也就是增大Light Cluster网格结构的范围,然后观察到,茶几四周的漏光现象也消失了。

通过上面的讲解就可以知道,当我们为场景打完灯光,需要知道Light Cluster的结构中的,每个单元格是否拥有正常数量的灯光时,我们可以用Volume上添加Light Cluster的方式来,可视化的查看和调节整个Light Cluster,结构往往确保每个单元格中的灯光数量都在支持的范围之内,以保证渲染的质量。

另外我们也可以用可视化的方式,来动态调整Light Cluster结构的边界,从而帮助解决漏光这样的问题。


Unity学习笔记 Vol.103 Unity 实时光追(七)- Light Cluster结构的评论 (共 条)

分享到微博请遵守国家法律